sequel 4.49.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +130 -0
  3. data/README.rdoc +195 -136
  4. data/Rakefile +26 -42
  5. data/bin/sequel +6 -9
  6. data/doc/advanced_associations.rdoc +91 -168
  7. data/doc/association_basics.rdoc +197 -274
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +66 -43
  10. data/doc/code_order.rdoc +1 -8
  11. data/doc/core_extensions.rdoc +81 -56
  12. data/doc/dataset_basics.rdoc +8 -17
  13. data/doc/dataset_filtering.rdoc +81 -86
  14. data/doc/extensions.rdoc +3 -10
  15. data/doc/mass_assignment.rdoc +73 -30
  16. data/doc/migration.rdoc +19 -36
  17. data/doc/model_dataset_method_design.rdoc +14 -17
  18. data/doc/model_hooks.rdoc +15 -25
  19. data/doc/model_plugins.rdoc +10 -10
  20. data/doc/mssql_stored_procedures.rdoc +3 -3
  21. data/doc/object_model.rdoc +52 -70
  22. data/doc/opening_databases.rdoc +39 -32
  23. data/doc/postgresql.rdoc +48 -38
  24. data/doc/prepared_statements.rdoc +27 -22
  25. data/doc/querying.rdoc +173 -150
  26. data/doc/reflection.rdoc +5 -6
  27. data/doc/release_notes/5.0.0.txt +159 -0
  28. data/doc/release_notes/5.1.0.txt +31 -0
  29. data/doc/release_notes/5.2.0.txt +33 -0
  30. data/doc/release_notes/5.3.0.txt +121 -0
  31. data/doc/schema_modification.rdoc +78 -64
  32. data/doc/security.rdoc +97 -88
  33. data/doc/sharding.rdoc +43 -30
  34. data/doc/sql.rdoc +53 -65
  35. data/doc/testing.rdoc +4 -5
  36. data/doc/thread_safety.rdoc +2 -4
  37. data/doc/transactions.rdoc +18 -17
  38. data/doc/validations.rdoc +48 -45
  39. data/doc/virtual_rows.rdoc +87 -115
  40. data/lib/sequel/adapters/ado/access.rb +7 -13
  41. data/lib/sequel/adapters/ado/mssql.rb +2 -9
  42. data/lib/sequel/adapters/ado.rb +9 -25
  43. data/lib/sequel/adapters/amalgalite.rb +3 -18
  44. data/lib/sequel/adapters/ibmdb.rb +9 -45
  45. data/lib/sequel/adapters/jdbc/db2.rb +8 -37
  46. data/lib/sequel/adapters/jdbc/derby.rb +4 -50
  47. data/lib/sequel/adapters/jdbc/h2.rb +6 -26
  48. data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -27
  49. data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
  50. data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
  51. data/lib/sequel/adapters/jdbc/mysql.rb +11 -15
  52. data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
  53. data/lib/sequel/adapters/jdbc/postgresql.rb +23 -33
  54. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
  55. data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
  56. data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
  57. data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
  58. data/lib/sequel/adapters/jdbc.rb +18 -74
  59. data/lib/sequel/adapters/mock.rb +4 -30
  60. data/lib/sequel/adapters/mysql.rb +7 -44
  61. data/lib/sequel/adapters/mysql2.rb +5 -23
  62. data/lib/sequel/adapters/odbc/db2.rb +1 -1
  63. data/lib/sequel/adapters/odbc/mssql.rb +4 -12
  64. data/lib/sequel/adapters/odbc/oracle.rb +1 -1
  65. data/lib/sequel/adapters/odbc.rb +0 -19
  66. data/lib/sequel/adapters/oracle.rb +8 -13
  67. data/lib/sequel/adapters/postgres.rb +28 -150
  68. data/lib/sequel/adapters/postgresql.rb +1 -1
  69. data/lib/sequel/adapters/shared/access.rb +11 -51
  70. data/lib/sequel/adapters/shared/db2.rb +3 -61
  71. data/lib/sequel/adapters/shared/mssql.rb +21 -157
  72. data/lib/sequel/adapters/shared/mysql.rb +61 -227
  73. data/lib/sequel/adapters/shared/oracle.rb +13 -41
  74. data/lib/sequel/adapters/shared/postgres.rb +58 -264
  75. data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
  76. data/lib/sequel/adapters/shared/sqlite.rb +22 -101
  77. data/lib/sequel/adapters/sqlanywhere.rb +4 -23
  78. data/lib/sequel/adapters/sqlite.rb +2 -19
  79. data/lib/sequel/adapters/tinytds.rb +5 -15
  80. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
  81. data/lib/sequel/adapters/utils/mysql_mysql2.rb +4 -4
  82. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
  83. data/lib/sequel/adapters/utils/replace.rb +0 -5
  84. data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
  85. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
  86. data/lib/sequel/ast_transformer.rb +3 -94
  87. data/lib/sequel/connection_pool/sharded_single.rb +1 -4
  88. data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
  89. data/lib/sequel/connection_pool/single.rb +0 -2
  90. data/lib/sequel/connection_pool/threaded.rb +94 -110
  91. data/lib/sequel/connection_pool.rb +38 -28
  92. data/lib/sequel/core.rb +42 -101
  93. data/lib/sequel/database/connecting.rb +23 -60
  94. data/lib/sequel/database/dataset.rb +6 -9
  95. data/lib/sequel/database/dataset_defaults.rb +4 -48
  96. data/lib/sequel/database/features.rb +5 -4
  97. data/lib/sequel/database/logging.rb +2 -9
  98. data/lib/sequel/database/misc.rb +36 -55
  99. data/lib/sequel/database/query.rb +8 -13
  100. data/lib/sequel/database/schema_generator.rb +93 -64
  101. data/lib/sequel/database/schema_methods.rb +61 -79
  102. data/lib/sequel/database/transactions.rb +4 -24
  103. data/lib/sequel/database.rb +12 -2
  104. data/lib/sequel/dataset/actions.rb +57 -107
  105. data/lib/sequel/dataset/dataset_module.rb +4 -16
  106. data/lib/sequel/dataset/features.rb +35 -30
  107. data/lib/sequel/dataset/graph.rb +40 -49
  108. data/lib/sequel/dataset/misc.rb +12 -37
  109. data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
  110. data/lib/sequel/dataset/prepared_statements.rb +23 -51
  111. data/lib/sequel/dataset/query.rb +91 -161
  112. data/lib/sequel/dataset/sql.rb +33 -225
  113. data/lib/sequel/dataset.rb +18 -10
  114. data/lib/sequel/deprecated.rb +18 -27
  115. data/lib/sequel/exceptions.rb +1 -17
  116. data/lib/sequel/extensions/_model_pg_row.rb +0 -7
  117. data/lib/sequel/extensions/_pretty_table.rb +1 -3
  118. data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
  119. data/lib/sequel/extensions/connection_expiration.rb +1 -1
  120. data/lib/sequel/extensions/connection_validator.rb +1 -1
  121. data/lib/sequel/extensions/constraint_validations.rb +11 -11
  122. data/lib/sequel/extensions/core_extensions.rb +39 -49
  123. data/lib/sequel/extensions/core_refinements.rb +39 -45
  124. data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
  125. data/lib/sequel/extensions/date_arithmetic.rb +7 -7
  126. data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
  127. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
  128. data/lib/sequel/extensions/eval_inspect.rb +4 -11
  129. data/lib/sequel/extensions/freeze_datasets.rb +1 -69
  130. data/lib/sequel/extensions/from_block.rb +1 -35
  131. data/lib/sequel/extensions/graph_each.rb +2 -2
  132. data/lib/sequel/extensions/identifier_mangling.rb +9 -19
  133. data/lib/sequel/extensions/implicit_subquery.rb +2 -2
  134. data/lib/sequel/extensions/inflector.rb +4 -4
  135. data/lib/sequel/extensions/migration.rb +27 -43
  136. data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
  137. data/lib/sequel/extensions/null_dataset.rb +2 -8
  138. data/lib/sequel/extensions/pagination.rb +1 -17
  139. data/lib/sequel/extensions/pg_array.rb +20 -189
  140. data/lib/sequel/extensions/pg_extended_date_support.rb +230 -0
  141. data/lib/sequel/extensions/pg_hstore.rb +11 -50
  142. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
  143. data/lib/sequel/extensions/pg_inet.rb +3 -16
  144. data/lib/sequel/extensions/pg_interval.rb +1 -20
  145. data/lib/sequel/extensions/pg_json.rb +7 -27
  146. data/lib/sequel/extensions/pg_loose_count.rb +1 -1
  147. data/lib/sequel/extensions/pg_range.rb +6 -121
  148. data/lib/sequel/extensions/pg_range_ops.rb +1 -3
  149. data/lib/sequel/extensions/pg_row.rb +5 -77
  150. data/lib/sequel/extensions/pg_row_ops.rb +2 -13
  151. data/lib/sequel/extensions/query.rb +3 -4
  152. data/lib/sequel/extensions/round_timestamps.rb +0 -6
  153. data/lib/sequel/extensions/schema_dumper.rb +13 -13
  154. data/lib/sequel/extensions/select_remove.rb +3 -3
  155. data/lib/sequel/extensions/split_array_nil.rb +2 -2
  156. data/lib/sequel/extensions/sql_comments.rb +2 -2
  157. data/lib/sequel/extensions/string_agg.rb +11 -8
  158. data/lib/sequel/extensions/symbol_aref.rb +6 -20
  159. data/lib/sequel/extensions/synchronize_sql.rb +45 -0
  160. data/lib/sequel/model/associations.rb +129 -131
  161. data/lib/sequel/model/base.rb +133 -731
  162. data/lib/sequel/model/default_inflections.rb +1 -1
  163. data/lib/sequel/model/errors.rb +0 -3
  164. data/lib/sequel/model/exceptions.rb +2 -6
  165. data/lib/sequel/model/inflections.rb +1 -26
  166. data/lib/sequel/model/plugins.rb +1 -0
  167. data/lib/sequel/model.rb +27 -62
  168. data/lib/sequel/plugins/active_model.rb +2 -5
  169. data/lib/sequel/plugins/association_dependencies.rb +15 -15
  170. data/lib/sequel/plugins/association_pks.rb +14 -28
  171. data/lib/sequel/plugins/association_proxies.rb +6 -7
  172. data/lib/sequel/plugins/auto_validations.rb +4 -4
  173. data/lib/sequel/plugins/before_after_save.rb +0 -43
  174. data/lib/sequel/plugins/blacklist_security.rb +9 -8
  175. data/lib/sequel/plugins/boolean_readers.rb +3 -3
  176. data/lib/sequel/plugins/boolean_subsets.rb +2 -2
  177. data/lib/sequel/plugins/caching.rb +5 -5
  178. data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
  179. data/lib/sequel/plugins/column_conflicts.rb +2 -2
  180. data/lib/sequel/plugins/column_select.rb +2 -2
  181. data/lib/sequel/plugins/composition.rb +15 -24
  182. data/lib/sequel/plugins/constraint_validations.rb +4 -3
  183. data/lib/sequel/plugins/csv_serializer.rb +13 -20
  184. data/lib/sequel/plugins/dataset_associations.rb +2 -2
  185. data/lib/sequel/plugins/def_dataset_method.rb +5 -5
  186. data/lib/sequel/plugins/defaults_setter.rb +1 -1
  187. data/lib/sequel/plugins/delay_add_association.rb +1 -1
  188. data/lib/sequel/plugins/finder.rb +16 -10
  189. data/lib/sequel/plugins/force_encoding.rb +1 -7
  190. data/lib/sequel/plugins/hook_class_methods.rb +4 -106
  191. data/lib/sequel/plugins/input_transformer.rb +10 -11
  192. data/lib/sequel/plugins/insert_returning_select.rb +1 -9
  193. data/lib/sequel/plugins/instance_filters.rb +5 -5
  194. data/lib/sequel/plugins/instance_hooks.rb +7 -52
  195. data/lib/sequel/plugins/inverted_subsets.rb +3 -1
  196. data/lib/sequel/plugins/json_serializer.rb +19 -19
  197. data/lib/sequel/plugins/lazy_attributes.rb +1 -10
  198. data/lib/sequel/plugins/list.rb +6 -6
  199. data/lib/sequel/plugins/many_through_many.rb +11 -8
  200. data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
  201. data/lib/sequel/plugins/nested_attributes.rb +18 -31
  202. data/lib/sequel/plugins/optimistic_locking.rb +3 -3
  203. data/lib/sequel/plugins/pg_array_associations.rb +8 -2
  204. data/lib/sequel/plugins/pg_row.rb +2 -11
  205. data/lib/sequel/plugins/prepared_statements.rb +13 -66
  206. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
  207. data/lib/sequel/plugins/rcte_tree.rb +7 -7
  208. data/lib/sequel/plugins/serialization.rb +15 -33
  209. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  210. data/lib/sequel/plugins/sharding.rb +2 -8
  211. data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
  212. data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
  213. data/lib/sequel/plugins/static_cache.rb +8 -9
  214. data/lib/sequel/plugins/string_stripper.rb +3 -3
  215. data/lib/sequel/plugins/subclasses.rb +1 -1
  216. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  217. data/lib/sequel/plugins/table_select.rb +2 -2
  218. data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
  219. data/lib/sequel/plugins/timestamps.rb +6 -7
  220. data/lib/sequel/plugins/touch.rb +4 -8
  221. data/lib/sequel/plugins/tree.rb +3 -3
  222. data/lib/sequel/plugins/typecast_on_load.rb +2 -2
  223. data/lib/sequel/plugins/unlimited_update.rb +1 -7
  224. data/lib/sequel/plugins/update_or_create.rb +3 -3
  225. data/lib/sequel/plugins/update_refresh.rb +3 -3
  226. data/lib/sequel/plugins/uuid.rb +7 -11
  227. data/lib/sequel/plugins/validation_class_methods.rb +10 -9
  228. data/lib/sequel/plugins/validation_contexts.rb +4 -4
  229. data/lib/sequel/plugins/validation_helpers.rb +26 -25
  230. data/lib/sequel/plugins/whitelist_security.rb +13 -9
  231. data/lib/sequel/plugins/xml_serializer.rb +24 -25
  232. data/lib/sequel/sql.rb +145 -276
  233. data/lib/sequel/timezones.rb +8 -23
  234. data/lib/sequel/version.rb +2 -2
  235. data/lib/sequel.rb +1 -1
  236. data/spec/adapter_spec.rb +1 -1
  237. data/spec/adapters/db2_spec.rb +2 -103
  238. data/spec/adapters/mssql_spec.rb +89 -68
  239. data/spec/adapters/mysql_spec.rb +111 -478
  240. data/spec/adapters/oracle_spec.rb +1 -9
  241. data/spec/adapters/postgres_spec.rb +459 -664
  242. data/spec/adapters/spec_helper.rb +12 -31
  243. data/spec/adapters/sqlanywhere_spec.rb +2 -77
  244. data/spec/adapters/sqlite_spec.rb +8 -146
  245. data/spec/bin_spec.rb +11 -16
  246. data/spec/core/connection_pool_spec.rb +173 -74
  247. data/spec/core/database_spec.rb +96 -244
  248. data/spec/core/dataset_spec.rb +99 -414
  249. data/spec/core/deprecated_spec.rb +3 -3
  250. data/spec/core/expression_filters_spec.rb +37 -144
  251. data/spec/core/mock_adapter_spec.rb +241 -4
  252. data/spec/core/object_graph_spec.rb +11 -60
  253. data/spec/core/placeholder_literalizer_spec.rb +1 -14
  254. data/spec/core/schema_generator_spec.rb +51 -40
  255. data/spec/core/schema_spec.rb +88 -77
  256. data/spec/core/spec_helper.rb +6 -24
  257. data/spec/core/version_spec.rb +1 -1
  258. data/spec/core_extensions_spec.rb +7 -83
  259. data/spec/core_model_spec.rb +2 -2
  260. data/spec/deprecation_helper.rb +2 -14
  261. data/spec/extensions/accessed_columns_spec.rb +1 -1
  262. data/spec/extensions/active_model_spec.rb +3 -3
  263. data/spec/extensions/after_initialize_spec.rb +1 -1
  264. data/spec/extensions/arbitrary_servers_spec.rb +2 -2
  265. data/spec/extensions/association_dependencies_spec.rb +1 -1
  266. data/spec/extensions/association_pks_spec.rb +30 -92
  267. data/spec/extensions/association_proxies_spec.rb +1 -1
  268. data/spec/extensions/auto_literal_strings_spec.rb +1 -12
  269. data/spec/extensions/auto_validations_spec.rb +1 -1
  270. data/spec/extensions/blacklist_security_spec.rb +1 -1
  271. data/spec/extensions/blank_spec.rb +1 -1
  272. data/spec/extensions/boolean_readers_spec.rb +1 -1
  273. data/spec/extensions/boolean_subsets_spec.rb +1 -1
  274. data/spec/extensions/caching_spec.rb +1 -1
  275. data/spec/extensions/class_table_inheritance_spec.rb +53 -1118
  276. data/spec/extensions/column_conflicts_spec.rb +1 -1
  277. data/spec/extensions/column_select_spec.rb +4 -4
  278. data/spec/extensions/columns_introspection_spec.rb +1 -1
  279. data/spec/extensions/columns_updated_spec.rb +1 -1
  280. data/spec/extensions/composition_spec.rb +8 -30
  281. data/spec/extensions/connection_expiration_spec.rb +3 -3
  282. data/spec/extensions/connection_validator_spec.rb +3 -3
  283. data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
  284. data/spec/extensions/constraint_validations_spec.rb +1 -1
  285. data/spec/extensions/core_refinements_spec.rb +1 -3
  286. data/spec/extensions/csv_serializer_spec.rb +4 -9
  287. data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
  288. data/spec/extensions/dataset_associations_spec.rb +2 -1
  289. data/spec/extensions/dataset_source_alias_spec.rb +1 -1
  290. data/spec/extensions/date_arithmetic_spec.rb +3 -3
  291. data/spec/extensions/def_dataset_method_spec.rb +1 -1
  292. data/spec/extensions/defaults_setter_spec.rb +2 -2
  293. data/spec/extensions/delay_add_association_spec.rb +8 -9
  294. data/spec/extensions/dirty_spec.rb +1 -1
  295. data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
  296. data/spec/extensions/eager_each_spec.rb +2 -2
  297. data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
  298. data/spec/extensions/error_splitter_spec.rb +1 -1
  299. data/spec/extensions/error_sql_spec.rb +1 -1
  300. data/spec/extensions/eval_inspect_spec.rb +1 -1
  301. data/spec/extensions/finder_spec.rb +1 -1
  302. data/spec/extensions/force_encoding_spec.rb +2 -5
  303. data/spec/extensions/freeze_datasets_spec.rb +1 -1
  304. data/spec/extensions/graph_each_spec.rb +5 -5
  305. data/spec/extensions/hook_class_methods_spec.rb +1 -194
  306. data/spec/extensions/identifier_mangling_spec.rb +17 -170
  307. data/spec/extensions/implicit_subquery_spec.rb +1 -5
  308. data/spec/extensions/inflector_spec.rb +1 -1
  309. data/spec/extensions/input_transformer_spec.rb +7 -2
  310. data/spec/extensions/insert_returning_select_spec.rb +1 -1
  311. data/spec/extensions/instance_filters_spec.rb +1 -1
  312. data/spec/extensions/instance_hooks_spec.rb +1 -95
  313. data/spec/extensions/inverted_subsets_spec.rb +1 -1
  314. data/spec/extensions/json_serializer_spec.rb +1 -1
  315. data/spec/extensions/lazy_attributes_spec.rb +1 -7
  316. data/spec/extensions/list_spec.rb +5 -6
  317. data/spec/extensions/looser_typecasting_spec.rb +1 -1
  318. data/spec/extensions/many_through_many_spec.rb +25 -33
  319. data/spec/extensions/migration_spec.rb +12 -2
  320. data/spec/extensions/modification_detection_spec.rb +1 -1
  321. data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
  322. data/spec/extensions/named_timezones_spec.rb +3 -3
  323. data/spec/extensions/nested_attributes_spec.rb +1 -29
  324. data/spec/extensions/null_dataset_spec.rb +1 -11
  325. data/spec/extensions/optimistic_locking_spec.rb +2 -2
  326. data/spec/extensions/pagination_spec.rb +1 -1
  327. data/spec/extensions/pg_array_associations_spec.rb +22 -26
  328. data/spec/extensions/pg_array_ops_spec.rb +1 -1
  329. data/spec/extensions/pg_array_spec.rb +3 -48
  330. data/spec/extensions/pg_enum_spec.rb +1 -1
  331. data/spec/extensions/pg_extended_date_support_spec.rb +122 -0
  332. data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
  333. data/spec/extensions/pg_hstore_spec.rb +22 -31
  334. data/spec/extensions/pg_inet_ops_spec.rb +1 -1
  335. data/spec/extensions/pg_inet_spec.rb +1 -14
  336. data/spec/extensions/pg_interval_spec.rb +3 -13
  337. data/spec/extensions/pg_json_ops_spec.rb +1 -1
  338. data/spec/extensions/pg_json_spec.rb +1 -13
  339. data/spec/extensions/pg_loose_count_spec.rb +1 -1
  340. data/spec/extensions/pg_range_ops_spec.rb +1 -1
  341. data/spec/extensions/pg_range_spec.rb +3 -88
  342. data/spec/extensions/pg_row_ops_spec.rb +1 -1
  343. data/spec/extensions/pg_row_plugin_spec.rb +1 -1
  344. data/spec/extensions/pg_row_spec.rb +1 -44
  345. data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
  346. data/spec/extensions/prepared_statements_safe_spec.rb +7 -7
  347. data/spec/extensions/prepared_statements_spec.rb +13 -48
  348. data/spec/extensions/pretty_table_spec.rb +40 -9
  349. data/spec/extensions/query_spec.rb +1 -12
  350. data/spec/extensions/rcte_tree_spec.rb +23 -34
  351. data/spec/extensions/round_timestamps_spec.rb +1 -5
  352. data/spec/extensions/s_spec.rb +1 -1
  353. data/spec/extensions/schema_caching_spec.rb +1 -1
  354. data/spec/extensions/schema_dumper_spec.rb +43 -32
  355. data/spec/extensions/select_remove_spec.rb +1 -1
  356. data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
  357. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  358. data/spec/extensions/serialization_spec.rb +5 -17
  359. data/spec/extensions/server_block_spec.rb +1 -1
  360. data/spec/extensions/server_logging_spec.rb +2 -2
  361. data/spec/extensions/sharding_spec.rb +1 -1
  362. data/spec/extensions/shared_caching_spec.rb +1 -28
  363. data/spec/extensions/single_table_inheritance_spec.rb +2 -5
  364. data/spec/extensions/singular_table_names_spec.rb +1 -1
  365. data/spec/extensions/skip_create_refresh_spec.rb +1 -1
  366. data/spec/extensions/spec_helper.rb +5 -27
  367. data/spec/extensions/split_array_nil_spec.rb +1 -1
  368. data/spec/extensions/split_values_spec.rb +1 -1
  369. data/spec/extensions/sql_comments_spec.rb +1 -1
  370. data/spec/extensions/sql_expr_spec.rb +1 -1
  371. data/spec/extensions/static_cache_spec.rb +1 -1
  372. data/spec/extensions/string_agg_spec.rb +2 -2
  373. data/spec/extensions/string_date_time_spec.rb +1 -1
  374. data/spec/extensions/string_stripper_spec.rb +1 -1
  375. data/spec/extensions/subclasses_spec.rb +1 -1
  376. data/spec/extensions/subset_conditions_spec.rb +1 -1
  377. data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
  378. data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
  379. data/spec/extensions/synchronize_sql_spec.rb +124 -0
  380. data/spec/extensions/table_select_spec.rb +4 -4
  381. data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
  382. data/spec/extensions/thread_local_timezones_spec.rb +1 -1
  383. data/spec/extensions/timestamps_spec.rb +5 -7
  384. data/spec/extensions/to_dot_spec.rb +1 -1
  385. data/spec/extensions/touch_spec.rb +1 -1
  386. data/spec/extensions/tree_spec.rb +1 -1
  387. data/spec/extensions/typecast_on_load_spec.rb +1 -1
  388. data/spec/extensions/unlimited_update_spec.rb +1 -1
  389. data/spec/extensions/update_or_create_spec.rb +12 -16
  390. data/spec/extensions/update_primary_key_spec.rb +4 -3
  391. data/spec/extensions/update_refresh_spec.rb +1 -1
  392. data/spec/extensions/uuid_spec.rb +10 -13
  393. data/spec/extensions/validate_associated_spec.rb +1 -1
  394. data/spec/extensions/validation_class_methods_spec.rb +3 -3
  395. data/spec/extensions/validation_contexts_spec.rb +1 -1
  396. data/spec/extensions/validation_helpers_spec.rb +10 -44
  397. data/spec/extensions/whitelist_security_spec.rb +5 -5
  398. data/spec/extensions/xml_serializer_spec.rb +8 -13
  399. data/spec/guards_helper.rb +2 -1
  400. data/spec/integration/associations_test.rb +1 -23
  401. data/spec/integration/database_test.rb +7 -7
  402. data/spec/integration/dataset_test.rb +12 -47
  403. data/spec/integration/eager_loader_test.rb +1 -1
  404. data/spec/integration/migrator_test.rb +1 -1
  405. data/spec/integration/model_test.rb +4 -82
  406. data/spec/integration/plugin_test.rb +7 -23
  407. data/spec/integration/prepared_statement_test.rb +8 -88
  408. data/spec/integration/schema_test.rb +10 -10
  409. data/spec/integration/spec_helper.rb +17 -21
  410. data/spec/integration/timezone_test.rb +5 -5
  411. data/spec/integration/transaction_test.rb +3 -55
  412. data/spec/integration/type_test.rb +9 -9
  413. data/spec/model/association_reflection_spec.rb +24 -9
  414. data/spec/model/associations_spec.rb +124 -303
  415. data/spec/model/base_spec.rb +43 -137
  416. data/spec/model/class_dataset_methods_spec.rb +2 -20
  417. data/spec/model/dataset_methods_spec.rb +1 -20
  418. data/spec/model/eager_loading_spec.rb +48 -17
  419. data/spec/model/hooks_spec.rb +5 -300
  420. data/spec/model/inflector_spec.rb +1 -1
  421. data/spec/model/model_spec.rb +29 -339
  422. data/spec/model/plugins_spec.rb +2 -16
  423. data/spec/model/record_spec.rb +33 -129
  424. data/spec/model/spec_helper.rb +5 -15
  425. data/spec/model/validations_spec.rb +1 -1
  426. data/spec/sequel_warning.rb +1 -12
  427. metadata +19 -65
  428. data/doc/active_record.rdoc +0 -927
  429. data/lib/sequel/adapters/cubrid.rb +0 -160
  430. data/lib/sequel/adapters/do/mysql.rb +0 -69
  431. data/lib/sequel/adapters/do/postgres.rb +0 -46
  432. data/lib/sequel/adapters/do/sqlite3.rb +0 -41
  433. data/lib/sequel/adapters/do.rb +0 -166
  434. data/lib/sequel/adapters/jdbc/as400.rb +0 -92
  435. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
  436. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
  437. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
  438. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
  439. data/lib/sequel/adapters/odbc/progress.rb +0 -12
  440. data/lib/sequel/adapters/shared/cubrid.rb +0 -245
  441. data/lib/sequel/adapters/shared/firebird.rb +0 -261
  442. data/lib/sequel/adapters/shared/informix.rb +0 -63
  443. data/lib/sequel/adapters/shared/progress.rb +0 -40
  444. data/lib/sequel/adapters/swift/mysql.rb +0 -50
  445. data/lib/sequel/adapters/swift/postgres.rb +0 -49
  446. data/lib/sequel/adapters/swift/sqlite.rb +0 -48
  447. data/lib/sequel/adapters/swift.rb +0 -169
  448. data/lib/sequel/adapters/utils/pg_types.rb +0 -4
  449. data/lib/sequel/dataset/mutation.rb +0 -98
  450. data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
  451. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
  452. data/lib/sequel/extensions/filter_having.rb +0 -65
  453. data/lib/sequel/extensions/hash_aliases.rb +0 -51
  454. data/lib/sequel/extensions/meta_def.rb +0 -37
  455. data/lib/sequel/extensions/query_literals.rb +0 -86
  456. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
  457. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
  458. data/lib/sequel/extensions/set_overrides.rb +0 -82
  459. data/lib/sequel/no_core_ext.rb +0 -4
  460. data/lib/sequel/plugins/association_autoreloading.rb +0 -11
  461. data/lib/sequel/plugins/identifier_columns.rb +0 -49
  462. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
  463. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
  464. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
  465. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
  466. data/lib/sequel/plugins/schema.rb +0 -84
  467. data/lib/sequel/plugins/scissors.rb +0 -37
  468. data/spec/core/dataset_mutation_spec.rb +0 -253
  469. data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
  470. data/spec/extensions/before_after_save_spec.rb +0 -40
  471. data/spec/extensions/filter_having_spec.rb +0 -42
  472. data/spec/extensions/from_block_spec.rb +0 -21
  473. data/spec/extensions/hash_aliases_spec.rb +0 -26
  474. data/spec/extensions/identifier_columns_spec.rb +0 -19
  475. data/spec/extensions/meta_def_spec.rb +0 -35
  476. data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
  477. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
  478. data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
  479. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
  480. data/spec/extensions/query_literals_spec.rb +0 -185
  481. data/spec/extensions/schema_spec.rb +0 -123
  482. data/spec/extensions/scissors_spec.rb +0 -27
  483. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
  484. data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  model_class = proc do |klass, &block|
4
4
  c = Class.new(klass)
@@ -140,39 +140,6 @@ describe Sequel::Model, "hook_class_methods plugin" do
140
140
  adds.must_equal ['456']
141
141
  end
142
142
 
143
- deprecated "should stop processing if a before hook returns false" do
144
- flag = true
145
- adds = []
146
-
147
- a = model_class.call Sequel::Model do
148
- before_save{adds << 'cruel'; flag}
149
- before_save{adds << 'blah'; flag}
150
- end
151
-
152
- a.new.before_save
153
- adds.must_equal ['blah', 'cruel']
154
-
155
- # chain should not break on nil
156
- adds = []
157
- flag = nil
158
- a.new.before_save
159
- adds.must_equal ['blah', 'cruel']
160
-
161
- adds = []
162
- flag = false
163
- a.new.before_save
164
- adds.must_equal ['blah']
165
-
166
- b = Class.new(a)
167
- b.class_eval do
168
- before_save{adds << 'mau'}
169
- end
170
-
171
- adds = []
172
- b.new.before_save
173
- adds.must_equal ['mau', 'blah']
174
- end
175
-
176
143
  it "should stop processing if a before hook calls cancel_action" do
177
144
  flag = true
178
145
  adds = []
@@ -226,25 +193,12 @@ describe "Model#before_create && Model#after_create" do
226
193
  DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after']
227
194
  end
228
195
 
229
- deprecated ".create should cancel the save and raise an error if before_create returns false and raise_on_save_failure is true" do
230
- @c.before_create{false}
231
- proc{@c.create(:x => 2)}.must_raise(Sequel::HookFailed)
232
- DB.sqls.must_equal []
233
- end
234
-
235
196
  it ".create should cancel the save and raise an error if before_create calls cancel_action and raise_on_save_failure is true" do
236
197
  @c.before_create{cancel_action}
237
198
  proc{@c.create(:x => 2)}.must_raise(Sequel::HookFailed)
238
199
  DB.sqls.must_equal []
239
200
  end
240
201
 
241
- deprecated ".create should cancel the save and return nil if before_create returns false and raise_on_save_failure is false" do
242
- @c.before_create{false}
243
- @c.raise_on_save_failure = false
244
- @c.create(:x => 2).must_be_nil
245
- DB.sqls.must_equal []
246
- end
247
-
248
202
  it ".create should cancel the save and return nil if before_create calls cancel_action and raise_on_save_failure is false" do
249
203
  @c.before_create{cancel_action}
250
204
  @c.raise_on_save_failure = false
@@ -269,25 +223,12 @@ describe "Model#before_update && Model#after_update" do
269
223
  DB.sqls.must_equal ['BLAH before', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'BLAH after']
270
224
  end
271
225
 
272
- deprecated "#save should cancel the save and raise an error if before_update returns false and raise_on_save_failure is true" do
273
- @c.before_update{false}
274
- proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
275
- DB.sqls.must_equal []
276
- end
277
-
278
226
  it "#save should cancel the save and raise an error if before_update calls cancel_action and raise_on_save_failure is true" do
279
227
  @c.before_update{cancel_action}
280
228
  proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
281
229
  DB.sqls.must_equal []
282
230
  end
283
231
 
284
- deprecated "#save should cancel the save and return nil if before_update returns false and raise_on_save_failure is false" do
285
- @c.before_update{false}
286
- @c.raise_on_save_failure = false
287
- @c.load(:id => 2233).save.must_be_nil
288
- DB.sqls.must_equal []
289
- end
290
-
291
232
  it "#save should cancel the save and return nil if before_update calls cancel_action and raise_on_save_failure is false" do
292
233
  @c.before_update{cancel_action}
293
234
  @c.raise_on_save_failure = false
@@ -320,25 +261,12 @@ describe "Model#before_save && Model#after_save" do
320
261
  DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after']
321
262
  end
322
263
 
323
- deprecated "#save should cancel the save and raise an error if before_save returns false and raise_on_save_failure is true" do
324
- @c.before_save{false}
325
- proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
326
- DB.sqls.must_equal []
327
- end
328
-
329
264
  it "#save should cancel the save and raise an error if before_save calls cancel_action and raise_on_save_failure is true" do
330
265
  @c.before_save{cancel_action}
331
266
  proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
332
267
  DB.sqls.must_equal []
333
268
  end
334
269
 
335
- deprecated "#save should cancel the save and return nil if before_save returns false and raise_on_save_failure is false" do
336
- @c.before_save{false}
337
- @c.raise_on_save_failure = false
338
- @c.load(:id => 2233).save.must_be_nil
339
- DB.sqls.must_equal []
340
- end
341
-
342
270
  it "#save should cancel the save and return nil if before_save calls cancel_action and raise_on_save_failure is false" do
343
271
  @c.before_save{cancel_action}
344
272
  @c.raise_on_save_failure = false
@@ -363,25 +291,12 @@ describe "Model#before_destroy && Model#after_destroy" do
363
291
  DB.sqls.must_equal ['BLAH before', "DELETE FROM items WHERE id = 2233", 'BLAH after']
364
292
  end
365
293
 
366
- deprecated "#destroy should cancel the destroy and raise an error if before_destroy returns false and raise_on_save_failure is true" do
367
- @c.before_destroy{false}
368
- proc{@c.load(:id => 2233).destroy}.must_raise(Sequel::HookFailed)
369
- DB.sqls.must_equal []
370
- end
371
-
372
294
  it "#destroy should cancel the destroy and raise an error if before_destroy calls cancel_action and raise_on_save_failure is true" do
373
295
  @c.before_destroy{cancel_action}
374
296
  proc{@c.load(:id => 2233).destroy}.must_raise(Sequel::HookFailed)
375
297
  DB.sqls.must_equal []
376
298
  end
377
299
 
378
- deprecated "#destroy should cancel the destroy and return nil if before_destroy returns false and raise_on_save_failure is false" do
379
- @c.before_destroy{false}
380
- @c.raise_on_save_failure = false
381
- @c.load(:id => 2233).destroy.must_be_nil
382
- DB.sqls.must_equal []
383
- end
384
-
385
300
  it "#destroy should cancel the destroy and return nil if before_destroy calls cancel_action and raise_on_save_failure is false" do
386
301
  @c.before_destroy{cancel_action}
387
302
  @c.raise_on_save_failure = false
@@ -430,25 +345,12 @@ describe "Model#before_validation && Model#after_validation" do
430
345
  DB.sqls.must_equal ['BLAH before', 'BLAH after']
431
346
  end
432
347
 
433
- deprecated "#save should cancel the save and raise an error if before_validation returns false and raise_on_save_failure is true" do
434
- @c.before_validation{false}
435
- proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
436
- DB.sqls.must_equal []
437
- end
438
-
439
348
  it "#save should cancel the save and raise an error if before_validation calls cancel_action and raise_on_save_failure is true" do
440
349
  @c.before_validation{cancel_action}
441
350
  proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
442
351
  DB.sqls.must_equal []
443
352
  end
444
353
 
445
- deprecated "#save should cancel the save and return nil if before_validation returns false and raise_on_save_failure is false" do
446
- @c.before_validation{false}
447
- @c.raise_on_save_failure = false
448
- @c.load(:id => 2233).save.must_be_nil
449
- DB.sqls.must_equal []
450
- end
451
-
452
354
  it "#save should cancel the save and return nil if before_validation calls cancel_action and raise_on_save_failure is false" do
453
355
  @c.before_validation{cancel_action}
454
356
  @c.raise_on_save_failure = false
@@ -457,52 +359,6 @@ describe "Model#before_validation && Model#after_validation" do
457
359
  end
458
360
  end
459
361
 
460
- describe "Model transaction hooks" do
461
- before do
462
- DB.reset
463
-
464
- @c = model_class.call(Sequel::Model(:items)) do
465
- columns :x
466
- after_save {DB << "AS"}
467
- after_destroy {DB << "AD"}
468
- self.use_transactions = true
469
- end
470
- end
471
-
472
- deprecated "should call after_commit or after_rollback depending on whether the transaction commits or rolls back" do
473
- @c.after_commit{DB << 'AC'}
474
- @c.after_rollback{DB << 'AR'}
475
- m = @c.load(:id => 2233, :x=>123)
476
-
477
- m.save
478
- DB.sqls.must_equal ['BEGIN', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'AS', 'COMMIT', 'AC']
479
-
480
- @c.db.transaction(:rollback=>:always){m.save}
481
- DB.sqls.must_equal ['BEGIN', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'AS', 'ROLLBACK', 'AR']
482
-
483
- @c.db.transaction do
484
- m.save
485
- DB.sqls.must_equal ['BEGIN', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'AS']
486
- end
487
- end
488
-
489
- deprecated "should call after_destroy_commit or after_destroy_rollback depending on whether the transaction commits or rolls back" do
490
- @c.after_destroy_commit {DB << 'ADC'}
491
- @c.after_destroy_rollback{DB << 'ADR'}
492
-
493
- @c.load(:id => 2233).destroy
494
- DB.sqls.must_equal ['BEGIN', 'DELETE FROM items WHERE id = 2233', 'AD', 'COMMIT', 'ADC']
495
-
496
- @c.db.transaction(:rollback=>:always){@c.load(:id => 2233).destroy}
497
- DB.sqls.must_equal ['BEGIN', 'DELETE FROM items WHERE id = 2233', 'AD', 'ROLLBACK', 'ADR']
498
-
499
- @c.db.transaction do
500
- @c.load(:id => 2233).destroy
501
- DB.sqls.must_equal ['BEGIN', 'DELETE FROM items WHERE id = 2233', 'AD']
502
- end
503
- end
504
- end
505
-
506
362
  describe "Model.has_hooks?" do
507
363
  before do
508
364
  @c = model_class.call(Sequel::Model(:items))
@@ -522,52 +378,3 @@ describe "Model.has_hooks?" do
522
378
  @d.has_hooks?(:before_save).must_equal false
523
379
  end
524
380
  end
525
-
526
- describe "Model#add_hook_type" do
527
- before do
528
- deprecated do
529
- class ::Foo < Sequel::Model(:items)
530
- plugin :hook_class_methods
531
- add_hook_type :before_bar, :after_bar
532
-
533
- def bar
534
- return :b if before_bar == false
535
- return :a if after_bar == false
536
- true
537
- end
538
- end
539
- @f = Class.new(Foo)
540
- end
541
- end
542
- after do
543
- Object.send(:remove_const, :Foo)
544
- end
545
-
546
- deprecated "should have before_bar and after_bar class methods" do
547
- @f.must_respond_to(:before_bar)
548
- @f.must_respond_to(:before_bar)
549
- end
550
-
551
- deprecated "should have before_bar and after_bar instance methods" do
552
- @f.new.must_respond_to(:before_bar)
553
- @f.new.must_respond_to(:before_bar)
554
- end
555
-
556
- deprecated "it should return true for bar when before_bar and after_bar hooks are returing true" do
557
- a = 1
558
- @f.before_bar { a += 1}
559
- @f.new.bar.must_equal true
560
- a.must_equal 2
561
- @f.after_bar { a *= 2}
562
- @f.new.bar.must_equal true
563
- a.must_equal 6
564
- end
565
-
566
- deprecated "it should return nil for bar when before_bar and after_bar hooks are returing false" do
567
- @f.new.bar.must_equal true
568
- @f.after_bar { false }
569
- @f.new.bar.must_equal :a
570
- @f.before_bar { false }
571
- @f.new.bar.must_equal :b
572
- end
573
- end
@@ -1,14 +1,6 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "identifier_mangling extension" do
4
- after do
5
- deprecated do
6
- Sequel.quote_identifiers = false
7
- Sequel.identifier_input_method = nil
8
- Sequel.identifier_output_method = nil
9
- end
10
- end
11
-
12
4
  it "should respect the :quote_identifiers option" do
13
5
  db = Sequel::Database.new(:quote_identifiers=>false).extension(:identifier_mangling)
14
6
  db.quote_identifiers?.must_equal false
@@ -18,78 +10,37 @@ describe "identifier_mangling extension" do
18
10
 
19
11
  it "should respect the :quote_identifiers setting" do
20
12
  db = Sequel::Database.new.extension(:identifier_mangling)
21
- db.quote_identifiers?.must_equal false
22
- db.quote_identifiers = true
23
13
  db.quote_identifiers?.must_equal true
14
+ db.quote_identifiers = false
15
+ db.quote_identifiers?.must_equal false
24
16
  end
25
17
 
26
18
  it "should upcase on input and downcase on output by default" do
27
- # SEQUEL5: Remove :identifier_mangling=>false
28
- db = Sequel::Database.new(:identifier_mangling=>false).extension(:identifier_mangling)
19
+ db = Sequel::Database.new.extension(:identifier_mangling)
29
20
  db.send(:identifier_input_method_default).must_equal :upcase
30
21
  db.send(:identifier_output_method_default).must_equal :downcase
31
22
  end
32
23
 
33
24
  it "should respect the :identifier_input_method option" do
34
25
  db = Sequel::Database.new.extension(:identifier_mangling)
35
- db.identifier_input_method.must_be_nil
36
- db.identifier_input_method = :downcase
37
- db.identifier_input_method.must_equal :downcase
38
- db = Sequel::Database.new(:identifier_input_method=>nil).extension(:identifier_mangling)
39
- db.identifier_input_method.must_be_nil
40
- db.identifier_input_method = :downcase
41
- db.identifier_input_method.must_equal :downcase
42
- db = Sequel::Database.new(:identifier_input_method=>:upcase).extension(:identifier_mangling)
43
26
  db.identifier_input_method.must_equal :upcase
44
27
  db.identifier_input_method = nil
45
28
  db.identifier_input_method.must_be_nil
46
- end
47
-
48
- deprecated "should default to Sequel.identifier_input_method" do
49
- Sequel.identifier_input_method = :downcase
50
- Sequel::Database.identifier_input_method.must_equal :downcase
51
- db = Sequel::Database.new.extension(:identifier_mangling)
52
- db.identifier_input_method.must_equal :downcase
53
- db.identifier_input_method = :upcase
54
- db.identifier_input_method.must_equal :upcase
55
29
  db = Sequel::Database.new(:identifier_input_method=>nil).extension(:identifier_mangling)
56
30
  db.identifier_input_method.must_be_nil
57
- db.identifier_input_method = :upcase
58
- db.identifier_input_method.must_equal :upcase
31
+ db.identifier_input_method = :downcase
32
+ db.identifier_input_method.must_equal :downcase
59
33
  db = Sequel::Database.new(:identifier_input_method=>:upcase).extension(:identifier_mangling)
60
34
  db.identifier_input_method.must_equal :upcase
61
35
  db.identifier_input_method = nil
62
36
  db.identifier_input_method.must_be_nil
63
- Sequel.identifier_input_method = nil
64
- Sequel::Database.identifier_input_method.must_equal false
65
- db = Sequel::Database.new.extension(:identifier_mangling)
66
- db.identifier_input_method.must_be_nil
67
- db.identifier_input_method = :upcase
68
- db.identifier_input_method.must_equal :upcase
69
37
  end
70
38
 
71
39
  it "should respect the :identifier_output_method option" do
72
40
  db = Sequel::Database.new.extension(:identifier_mangling)
73
- db.identifier_output_method.must_be_nil
74
- db.identifier_output_method = :upcase
75
- db.identifier_output_method.must_equal :upcase
76
- db = Sequel::Database.new(:identifier_output_method=>nil).extension(:identifier_mangling)
77
- db.identifier_output_method.must_be_nil
78
- db.identifier_output_method = :downcase
79
41
  db.identifier_output_method.must_equal :downcase
80
- db = Sequel::Database.new(:identifier_output_method=>:upcase).extension(:identifier_mangling)
81
- db.identifier_output_method.must_equal :upcase
82
42
  db.identifier_output_method = nil
83
43
  db.identifier_output_method.must_be_nil
84
- end
85
-
86
- deprecated "should default to Sequel.identifier_output_method" do
87
- Sequel.identifier_output_method = :upcase
88
- Sequel::Database.identifier_output_method.must_equal :upcase
89
- db = Sequel::Database.new.extension(:identifier_mangling)
90
- db.identifier_output_method.must_equal :upcase
91
- db.identifier_output_method = :downcase
92
- db.identifier_output_method.must_equal :downcase
93
44
  db = Sequel::Database.new(:identifier_output_method=>nil).extension(:identifier_mangling)
94
45
  db.identifier_output_method.must_be_nil
95
46
  db.identifier_output_method = :downcase
@@ -98,56 +49,8 @@ describe "identifier_mangling extension" do
98
49
  db.identifier_output_method.must_equal :upcase
99
50
  db.identifier_output_method = nil
100
51
  db.identifier_output_method.must_be_nil
101
- Sequel.identifier_output_method = nil
102
- Sequel::Database.identifier_output_method.must_equal false
103
- db = Sequel::Database.new.extension(:identifier_mangling)
104
- db.identifier_output_method.must_be_nil
105
- db.identifier_output_method = :downcase
106
- db.identifier_output_method.must_equal :downcase
107
- end
108
-
109
- deprecated "should use the default Sequel.quote_identifiers value" do
110
- Sequel.quote_identifiers = true
111
- Sequel::Database.new.extension(:identifier_mangling).quote_identifiers?.must_equal true
112
- Sequel.quote_identifiers = false
113
- Sequel::Database.new.extension(:identifier_mangling).quote_identifiers?.must_equal false
114
- Sequel::Database.quote_identifiers = true
115
- Sequel::Database.new.extension(:identifier_mangling).quote_identifiers?.must_equal true
116
- Sequel::Database.quote_identifiers = false
117
- Sequel::Database.new.extension(:identifier_mangling).quote_identifiers?.must_equal false
118
- end
119
-
120
- deprecated "should use the default Sequel.identifier_input_method value" do
121
- Sequel.identifier_input_method = :downcase
122
- Sequel::Database.new.extension(:identifier_mangling).identifier_input_method.must_equal :downcase
123
- Sequel.identifier_input_method = :upcase
124
- Sequel::Database.new.extension(:identifier_mangling).identifier_input_method.must_equal :upcase
125
- Sequel::Database.identifier_input_method = :downcase
126
- Sequel::Database.new.extension(:identifier_mangling).identifier_input_method.must_equal :downcase
127
- Sequel::Database.identifier_input_method = :upcase
128
- Sequel::Database.new.extension(:identifier_mangling).identifier_input_method.must_equal :upcase
129
- end
130
-
131
- deprecated "should use the default Sequel.identifier_output_method value" do
132
- Sequel.identifier_output_method = :downcase
133
- Sequel::Database.new.extension(:identifier_mangling).identifier_output_method.must_equal :downcase
134
- Sequel.identifier_output_method = :upcase
135
- Sequel::Database.new.extension(:identifier_mangling).identifier_output_method.must_equal :upcase
136
- Sequel::Database.identifier_output_method = :downcase
137
- Sequel::Database.new.extension(:identifier_mangling).identifier_output_method.must_equal :downcase
138
- Sequel::Database.identifier_output_method = :upcase
139
- Sequel::Database.new.extension(:identifier_mangling).identifier_output_method.must_equal :upcase
140
52
  end
141
53
 
142
- deprecated "should respect the quote_indentifiers_default method if Sequel.quote_identifiers = nil" do
143
- Sequel.quote_identifiers = nil
144
- Sequel::Database.new.extension(:identifier_mangling).quote_identifiers?.must_equal true
145
- x = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def quote_identifiers_default; false end}
146
- x.new.extension(:identifier_mangling).quote_identifiers?.must_equal false
147
- y = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def quote_identifiers_default; true end}
148
- y.new.extension(:identifier_mangling).quote_identifiers?.must_equal true
149
- end
150
-
151
54
  it "should respect the identifier_input_method_default method if Sequel.identifier_input_method is not called" do
152
55
  class Sequel::Database
153
56
  @identifier_input_method = nil
@@ -172,6 +75,7 @@ end
172
75
  describe "Database#input_identifier_meth" do
173
76
  it "should be the input_identifer method of a default dataset for this database" do
174
77
  db = Sequel::Database.new.extension(:identifier_mangling)
78
+ db.identifier_input_method = nil
175
79
  db.send(:input_identifier_meth).call(:a).must_equal 'a'
176
80
  db.identifier_input_method = :upcase
177
81
  db.send(:input_identifier_meth).call(:a).must_equal 'A'
@@ -181,6 +85,7 @@ end
181
85
  describe "Database#output_identifier_meth" do
182
86
  it "should be the output_identifer method of a default dataset for this database" do
183
87
  db = Sequel::Database.new.extension(:identifier_mangling)
88
+ db.identifier_output_method = nil
184
89
  db.send(:output_identifier_meth).call('A').must_equal :A
185
90
  db.identifier_output_method = :downcase
186
91
  db.send(:output_identifier_meth).call('A').must_equal :a
@@ -190,7 +95,7 @@ end
190
95
  describe "Database#metadata_dataset" do
191
96
  it "should be a dataset with the default settings for identifier_mangling" do
192
97
  ds = Sequel::Database.new.extension(:identifier_mangling).send(:metadata_dataset)
193
- ds.literal(:a).must_equal 'A'
98
+ ds.literal(:a).must_equal "\"A\""
194
99
  ds.send(:output_identifier, 'A').must_equal :a
195
100
  end
196
101
  end
@@ -221,35 +126,6 @@ describe "Dataset" do
221
126
  db[:a].identifier_output_method.must_equal :downcase
222
127
  end
223
128
 
224
- # SEQUEL5: Remove
225
- unless Sequel.mock(:identifier_mangling=>true).dataset.frozen?
226
- deprecated "should have quote_identifiers= method which changes literalization of identifiers" do
227
- @dataset.quote_identifiers = true
228
- @dataset.literal(:a).must_equal '"a"'
229
- @dataset.quote_identifiers = false
230
- @dataset.literal(:a).must_equal 'a'
231
- end
232
-
233
- deprecated "should have identifier_input_method= method which changes literalization of identifiers" do
234
- @dataset.identifier_input_method = :upcase
235
- @dataset.literal(:a).must_equal 'A'
236
- @dataset.identifier_input_method = :downcase
237
- @dataset.literal(:A).must_equal 'a'
238
- @dataset.identifier_input_method = :reverse
239
- @dataset.literal(:at_b).must_equal 'b_ta'
240
- end
241
-
242
- deprecated "should have identifier_output_method= method which changes identifiers returned from the database" do
243
- @dataset.send(:output_identifier, "at_b_C").must_equal :at_b_C
244
- @dataset.identifier_output_method = :upcase
245
- @dataset.send(:output_identifier, "at_b_C").must_equal :AT_B_C
246
- @dataset.identifier_output_method = :downcase
247
- @dataset.send(:output_identifier, "at_b_C").must_equal :at_b_c
248
- @dataset.identifier_output_method = :reverse
249
- @dataset.send(:output_identifier, "at_b_C").must_equal :C_b_ta
250
- end
251
- end
252
-
253
129
  it "should have with_quote_identifiers method which returns cloned dataset with changed literalization of identifiers" do
254
130
  @dataset.with_quote_identifiers(true).literal(:a).must_equal '"a"'
255
131
  @dataset.with_quote_identifiers(false).literal(:a).must_equal 'a'
@@ -285,45 +161,16 @@ describe "Dataset" do
285
161
  end
286
162
  end
287
163
 
288
- describe "Frozen Datasets" do
289
- before do
290
- @ds = Sequel.mock(:identifier_mangling=>true)[:test].freeze
291
- end
292
-
293
- deprecated "should raise an error when calling mutation methods" do
294
- proc{@ds.identifier_input_method = :a}.must_raise RuntimeError
295
- proc{@ds.identifier_output_method = :a}.must_raise RuntimeError
296
- proc{@ds.quote_identifiers = false}.must_raise RuntimeError
297
- end
298
- end
299
-
300
164
  describe "identifier_mangling extension" do
301
165
  it "should be able to load dialects based on the database name" do
302
- begin
303
- qi, ii, io = nil
304
- deprecated do
305
- qi = class Sequel::Database; @quote_identifiers; end
306
- ii = class Sequel::Database; @identifier_input_method; end
307
- io = class Sequel::Database; @identifier_output_method; end
308
- Sequel.quote_identifiers = nil
309
- class Sequel::Database; @identifier_input_method=nil; end
310
- class Sequel::Database; @identifier_output_method=nil; end
311
- end
312
- Sequel.mock(:host=>'access').select(Date.new(2011, 12, 13)).sql.must_equal 'SELECT #2011-12-13#'
313
- Sequel.mock(:host=>'db2').select(1).sql.must_equal 'SELECT 1 FROM "SYSIBM"."SYSDUMMY1"'
314
- Sequel.mock(:host=>'mssql')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM [A] WHERE (CONTAINS ([B], 'c'))"
315
- Sequel.mock(:host=>'mysql')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM `a` WHERE (MATCH (`b`) AGAINST ('c'))"
316
- Sequel.mock(:host=>'oracle')[:a].limit(1).sql.must_equal 'SELECT * FROM (SELECT * FROM "A") "T1" WHERE (ROWNUM <= 1)'
317
- Sequel.mock(:host=>'postgres')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM \"a\" WHERE (to_tsvector(CAST('simple' AS regconfig), (COALESCE(\"b\", ''))) @@ to_tsquery(CAST('simple' AS regconfig), 'c'))"
318
- Sequel.mock(:host=>'sqlanywhere').from(:a).offset(1).sql.must_equal 'SELECT TOP 2147483647 START AT (1 + 1) * FROM "A"'
319
- Sequel.mock(:host=>'sqlite')[Sequel[:a].as(:b)].sql.must_equal "SELECT * FROM `a` AS 'b'"
320
- ensure
321
- deprecated do
322
- Sequel.quote_identifiers = qi
323
- Sequel::Database.send(:instance_variable_set, :@identifier_input_method, ii)
324
- Sequel::Database.send(:instance_variable_set, :@identifier_output_method, io)
325
- end
326
- end
166
+ Sequel.mock(:host=>'access').select(Date.new(2011, 12, 13)).sql.must_equal 'SELECT #2011-12-13#'
167
+ Sequel.mock(:host=>'db2').select(1).sql.must_equal 'SELECT 1 FROM "SYSIBM"."SYSDUMMY1"'
168
+ Sequel.mock(:host=>'mssql')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM [A] WHERE (CONTAINS ([B], 'c'))"
169
+ Sequel.mock(:host=>'mysql')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM `a` WHERE (MATCH (`b`) AGAINST ('c'))"
170
+ Sequel.mock(:host=>'oracle')[:a].limit(1).sql.must_equal 'SELECT * FROM (SELECT * FROM "A") "T1" WHERE (ROWNUM <= 1)'
171
+ Sequel.mock(:host=>'postgres')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM \"a\" WHERE (to_tsvector(CAST('simple' AS regconfig), (COALESCE(\"b\", ''))) @@ to_tsquery(CAST('simple' AS regconfig), 'c'))"
172
+ Sequel.mock(:host=>'sqlanywhere').from(:a).offset(1).sql.must_equal 'SELECT TOP 2147483647 START AT (1 + 1) * FROM "A"'
173
+ Sequel.mock(:host=>'sqlite')[Sequel[:a].as(:b)].sql.must_equal "SELECT * FROM `a` AS 'b'"
327
174
  end
328
175
  end
329
176
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Dataset::ImplicitSubquery" do
4
4
  it "should implicitly use a subquery for most dataset query methods" do
@@ -9,10 +9,6 @@ describe "Sequel::Dataset::ImplicitSubquery" do
9
9
  ods = db[:c]
10
10
  ods.columns(:id, :b)
11
11
 
12
- deprecated do
13
- ds.and(:c).sql.must_equal "SELECT * FROM (SELECT * FROM table) AS t1 WHERE c"
14
- ds.exclude_where(:c).sql.must_equal "SELECT * FROM (SELECT * FROM table) AS t1 WHERE NOT c"
15
- end
16
12
  ds.cross_join(:c).sql.must_equal "SELECT * FROM (SELECT * FROM table) AS t1 CROSS JOIN c"
17
13
  ds.distinct.sql.must_equal "SELECT DISTINCT * FROM (SELECT * FROM table) AS t1"
18
14
  ds.except(ods).sql.must_equal "SELECT * FROM (SELECT * FROM (SELECT * FROM table) AS t1 EXCEPT SELECT * FROM c) AS t1"
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper')
1
+ require_relative "spec_helper"
2
2
 
3
3
  Sequel.extension :inflector
4
4
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::InputTransformer" do
4
4
  before do
@@ -15,6 +15,12 @@ describe "Sequel::Plugins::InputTransformer" do
15
15
  @o.name.must_equal [1, 2, 3]
16
16
  end
17
17
 
18
+ it "should have working .input_transformer_order" do
19
+ @c.input_transformer_order.must_equal [:reverser]
20
+ @c.plugin(:input_transformer, :reverser2){|v| v.is_a?(String) ? v.reverse : v}
21
+ @c.input_transformer_order.must_equal [:reverser2, :reverser]
22
+ end
23
+
18
24
  it "should not apply any transformers by default" do
19
25
  c = Class.new(Sequel::Model)
20
26
  c.columns :name, :b
@@ -56,7 +62,6 @@ describe "Sequel::Plugins::InputTransformer" do
56
62
  @c.skip_input_transformer :reverser, :name
57
63
  @c.freeze
58
64
  @c.input_transformers.frozen?.must_equal true
59
- @c.input_transformer_order.frozen?.must_equal true
60
65
  skip = @c.instance_variable_get(:@skip_input_transformer_columns)
61
66
  skip.frozen?.must_equal true
62
67
  skip.values.all?(&:frozen?).must_equal true
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::InsertReturningSelect" do
4
4
  before do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "instance_filters plugin" do
4
4
  before do