sequel 4.49.0 → 5.0.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 (477) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +70 -0
  3. data/README.rdoc +195 -136
  4. data/Rakefile +26 -42
  5. data/bin/sequel +3 -5
  6. data/doc/advanced_associations.rdoc +86 -163
  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/schema_modification.rdoc +63 -60
  29. data/doc/security.rdoc +97 -88
  30. data/doc/sharding.rdoc +43 -30
  31. data/doc/sql.rdoc +53 -65
  32. data/doc/testing.rdoc +3 -5
  33. data/doc/thread_safety.rdoc +2 -4
  34. data/doc/transactions.rdoc +18 -17
  35. data/doc/validations.rdoc +48 -45
  36. data/doc/virtual_rows.rdoc +87 -115
  37. data/lib/sequel.rb +1 -1
  38. data/lib/sequel/adapters/ado.rb +9 -25
  39. data/lib/sequel/adapters/ado/access.rb +7 -13
  40. data/lib/sequel/adapters/ado/mssql.rb +2 -9
  41. data/lib/sequel/adapters/amalgalite.rb +3 -18
  42. data/lib/sequel/adapters/ibmdb.rb +9 -45
  43. data/lib/sequel/adapters/jdbc.rb +13 -73
  44. data/lib/sequel/adapters/jdbc/db2.rb +8 -37
  45. data/lib/sequel/adapters/jdbc/derby.rb +4 -50
  46. data/lib/sequel/adapters/jdbc/h2.rb +4 -25
  47. data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
  48. data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
  49. data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
  50. data/lib/sequel/adapters/jdbc/mysql.rb +1 -15
  51. data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
  52. data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
  53. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
  54. data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
  55. data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
  56. data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
  57. data/lib/sequel/adapters/mock.rb +4 -30
  58. data/lib/sequel/adapters/mysql.rb +7 -44
  59. data/lib/sequel/adapters/mysql2.rb +5 -23
  60. data/lib/sequel/adapters/odbc.rb +0 -19
  61. data/lib/sequel/adapters/odbc/db2.rb +1 -1
  62. data/lib/sequel/adapters/odbc/mssql.rb +4 -12
  63. data/lib/sequel/adapters/odbc/oracle.rb +1 -1
  64. data/lib/sequel/adapters/oracle.rb +7 -13
  65. data/lib/sequel/adapters/postgres.rb +13 -57
  66. data/lib/sequel/adapters/postgresql.rb +1 -1
  67. data/lib/sequel/adapters/shared/access.rb +11 -51
  68. data/lib/sequel/adapters/shared/db2.rb +3 -61
  69. data/lib/sequel/adapters/shared/mssql.rb +21 -157
  70. data/lib/sequel/adapters/shared/mysql.rb +23 -224
  71. data/lib/sequel/adapters/shared/oracle.rb +13 -41
  72. data/lib/sequel/adapters/shared/postgres.rb +44 -259
  73. data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
  74. data/lib/sequel/adapters/shared/sqlite.rb +12 -101
  75. data/lib/sequel/adapters/sqlanywhere.rb +4 -23
  76. data/lib/sequel/adapters/sqlite.rb +2 -19
  77. data/lib/sequel/adapters/tinytds.rb +5 -15
  78. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
  79. data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -4
  80. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
  81. data/lib/sequel/adapters/utils/replace.rb +0 -5
  82. data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
  83. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
  84. data/lib/sequel/ast_transformer.rb +3 -94
  85. data/lib/sequel/connection_pool.rb +26 -28
  86. data/lib/sequel/connection_pool/sharded_single.rb +1 -4
  87. data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
  88. data/lib/sequel/connection_pool/single.rb +0 -2
  89. data/lib/sequel/connection_pool/threaded.rb +94 -110
  90. data/lib/sequel/core.rb +42 -101
  91. data/lib/sequel/database.rb +12 -2
  92. data/lib/sequel/database/connecting.rb +23 -60
  93. data/lib/sequel/database/dataset.rb +6 -9
  94. data/lib/sequel/database/dataset_defaults.rb +4 -48
  95. data/lib/sequel/database/features.rb +5 -4
  96. data/lib/sequel/database/logging.rb +2 -9
  97. data/lib/sequel/database/misc.rb +23 -55
  98. data/lib/sequel/database/query.rb +8 -13
  99. data/lib/sequel/database/schema_generator.rb +89 -64
  100. data/lib/sequel/database/schema_methods.rb +61 -79
  101. data/lib/sequel/database/transactions.rb +4 -24
  102. data/lib/sequel/dataset.rb +18 -10
  103. data/lib/sequel/dataset/actions.rb +53 -107
  104. data/lib/sequel/dataset/dataset_module.rb +3 -15
  105. data/lib/sequel/dataset/features.rb +30 -30
  106. data/lib/sequel/dataset/graph.rb +40 -49
  107. data/lib/sequel/dataset/misc.rb +12 -37
  108. data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
  109. data/lib/sequel/dataset/prepared_statements.rb +23 -51
  110. data/lib/sequel/dataset/query.rb +71 -155
  111. data/lib/sequel/dataset/sql.rb +30 -225
  112. data/lib/sequel/deprecated.rb +18 -27
  113. data/lib/sequel/exceptions.rb +1 -17
  114. data/lib/sequel/extensions/_model_pg_row.rb +0 -7
  115. data/lib/sequel/extensions/_pretty_table.rb +1 -3
  116. data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
  117. data/lib/sequel/extensions/connection_expiration.rb +1 -1
  118. data/lib/sequel/extensions/connection_validator.rb +1 -1
  119. data/lib/sequel/extensions/constraint_validations.rb +11 -11
  120. data/lib/sequel/extensions/core_extensions.rb +39 -49
  121. data/lib/sequel/extensions/core_refinements.rb +39 -45
  122. data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
  123. data/lib/sequel/extensions/date_arithmetic.rb +7 -7
  124. data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
  125. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
  126. data/lib/sequel/extensions/eval_inspect.rb +4 -11
  127. data/lib/sequel/extensions/freeze_datasets.rb +1 -69
  128. data/lib/sequel/extensions/from_block.rb +1 -35
  129. data/lib/sequel/extensions/graph_each.rb +2 -2
  130. data/lib/sequel/extensions/identifier_mangling.rb +9 -19
  131. data/lib/sequel/extensions/implicit_subquery.rb +2 -2
  132. data/lib/sequel/extensions/inflector.rb +4 -4
  133. data/lib/sequel/extensions/migration.rb +23 -40
  134. data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
  135. data/lib/sequel/extensions/null_dataset.rb +2 -8
  136. data/lib/sequel/extensions/pagination.rb +1 -17
  137. data/lib/sequel/extensions/pg_array.rb +20 -189
  138. data/lib/sequel/extensions/pg_hstore.rb +11 -50
  139. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
  140. data/lib/sequel/extensions/pg_inet.rb +2 -15
  141. data/lib/sequel/extensions/pg_interval.rb +1 -20
  142. data/lib/sequel/extensions/pg_json.rb +7 -27
  143. data/lib/sequel/extensions/pg_loose_count.rb +1 -1
  144. data/lib/sequel/extensions/pg_range.rb +6 -121
  145. data/lib/sequel/extensions/pg_range_ops.rb +1 -3
  146. data/lib/sequel/extensions/pg_row.rb +5 -77
  147. data/lib/sequel/extensions/pg_row_ops.rb +2 -13
  148. data/lib/sequel/extensions/query.rb +3 -4
  149. data/lib/sequel/extensions/round_timestamps.rb +0 -6
  150. data/lib/sequel/extensions/schema_dumper.rb +13 -13
  151. data/lib/sequel/extensions/select_remove.rb +3 -3
  152. data/lib/sequel/extensions/split_array_nil.rb +2 -2
  153. data/lib/sequel/extensions/sql_comments.rb +2 -2
  154. data/lib/sequel/extensions/string_agg.rb +11 -8
  155. data/lib/sequel/extensions/symbol_aref.rb +6 -20
  156. data/lib/sequel/model.rb +27 -62
  157. data/lib/sequel/model/associations.rb +128 -131
  158. data/lib/sequel/model/base.rb +171 -711
  159. data/lib/sequel/model/default_inflections.rb +1 -1
  160. data/lib/sequel/model/errors.rb +0 -3
  161. data/lib/sequel/model/exceptions.rb +2 -6
  162. data/lib/sequel/model/inflections.rb +1 -26
  163. data/lib/sequel/model/plugins.rb +1 -0
  164. data/lib/sequel/plugins/active_model.rb +2 -5
  165. data/lib/sequel/plugins/association_dependencies.rb +15 -15
  166. data/lib/sequel/plugins/association_pks.rb +14 -28
  167. data/lib/sequel/plugins/association_proxies.rb +6 -7
  168. data/lib/sequel/plugins/auto_validations.rb +4 -4
  169. data/lib/sequel/plugins/before_after_save.rb +0 -43
  170. data/lib/sequel/plugins/blacklist_security.rb +9 -8
  171. data/lib/sequel/plugins/boolean_readers.rb +3 -3
  172. data/lib/sequel/plugins/boolean_subsets.rb +2 -2
  173. data/lib/sequel/plugins/caching.rb +5 -5
  174. data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
  175. data/lib/sequel/plugins/column_conflicts.rb +2 -2
  176. data/lib/sequel/plugins/column_select.rb +2 -2
  177. data/lib/sequel/plugins/composition.rb +15 -24
  178. data/lib/sequel/plugins/constraint_validations.rb +4 -3
  179. data/lib/sequel/plugins/csv_serializer.rb +13 -20
  180. data/lib/sequel/plugins/dataset_associations.rb +2 -2
  181. data/lib/sequel/plugins/def_dataset_method.rb +5 -5
  182. data/lib/sequel/plugins/defaults_setter.rb +1 -1
  183. data/lib/sequel/plugins/delay_add_association.rb +1 -1
  184. data/lib/sequel/plugins/finder.rb +16 -10
  185. data/lib/sequel/plugins/force_encoding.rb +1 -7
  186. data/lib/sequel/plugins/hook_class_methods.rb +4 -106
  187. data/lib/sequel/plugins/input_transformer.rb +10 -11
  188. data/lib/sequel/plugins/insert_returning_select.rb +1 -9
  189. data/lib/sequel/plugins/instance_filters.rb +5 -5
  190. data/lib/sequel/plugins/instance_hooks.rb +7 -52
  191. data/lib/sequel/plugins/inverted_subsets.rb +3 -1
  192. data/lib/sequel/plugins/json_serializer.rb +19 -19
  193. data/lib/sequel/plugins/lazy_attributes.rb +1 -10
  194. data/lib/sequel/plugins/list.rb +6 -6
  195. data/lib/sequel/plugins/many_through_many.rb +11 -8
  196. data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
  197. data/lib/sequel/plugins/nested_attributes.rb +18 -31
  198. data/lib/sequel/plugins/optimistic_locking.rb +3 -3
  199. data/lib/sequel/plugins/pg_array_associations.rb +8 -2
  200. data/lib/sequel/plugins/pg_row.rb +2 -11
  201. data/lib/sequel/plugins/prepared_statements.rb +13 -66
  202. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
  203. data/lib/sequel/plugins/rcte_tree.rb +7 -7
  204. data/lib/sequel/plugins/serialization.rb +15 -33
  205. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  206. data/lib/sequel/plugins/sharding.rb +2 -8
  207. data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
  208. data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
  209. data/lib/sequel/plugins/static_cache.rb +8 -9
  210. data/lib/sequel/plugins/string_stripper.rb +3 -3
  211. data/lib/sequel/plugins/subclasses.rb +1 -1
  212. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  213. data/lib/sequel/plugins/table_select.rb +2 -2
  214. data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
  215. data/lib/sequel/plugins/timestamps.rb +6 -7
  216. data/lib/sequel/plugins/touch.rb +4 -8
  217. data/lib/sequel/plugins/tree.rb +3 -3
  218. data/lib/sequel/plugins/typecast_on_load.rb +2 -2
  219. data/lib/sequel/plugins/unlimited_update.rb +1 -7
  220. data/lib/sequel/plugins/update_or_create.rb +3 -3
  221. data/lib/sequel/plugins/update_refresh.rb +3 -3
  222. data/lib/sequel/plugins/uuid.rb +7 -11
  223. data/lib/sequel/plugins/validation_class_methods.rb +10 -9
  224. data/lib/sequel/plugins/validation_contexts.rb +4 -4
  225. data/lib/sequel/plugins/validation_helpers.rb +26 -25
  226. data/lib/sequel/plugins/whitelist_security.rb +13 -9
  227. data/lib/sequel/plugins/xml_serializer.rb +24 -25
  228. data/lib/sequel/sql.rb +145 -276
  229. data/lib/sequel/timezones.rb +8 -22
  230. data/lib/sequel/version.rb +2 -2
  231. data/spec/adapter_spec.rb +1 -1
  232. data/spec/adapters/db2_spec.rb +2 -103
  233. data/spec/adapters/mssql_spec.rb +89 -68
  234. data/spec/adapters/mysql_spec.rb +101 -480
  235. data/spec/adapters/oracle_spec.rb +1 -9
  236. data/spec/adapters/postgres_spec.rb +312 -565
  237. data/spec/adapters/spec_helper.rb +12 -31
  238. data/spec/adapters/sqlanywhere_spec.rb +2 -77
  239. data/spec/adapters/sqlite_spec.rb +8 -146
  240. data/spec/bin_spec.rb +11 -16
  241. data/spec/core/connection_pool_spec.rb +173 -74
  242. data/spec/core/database_spec.rb +64 -244
  243. data/spec/core/dataset_spec.rb +81 -415
  244. data/spec/core/deprecated_spec.rb +3 -3
  245. data/spec/core/expression_filters_spec.rb +37 -144
  246. data/spec/core/mock_adapter_spec.rb +176 -4
  247. data/spec/core/object_graph_spec.rb +11 -60
  248. data/spec/core/placeholder_literalizer_spec.rb +1 -14
  249. data/spec/core/schema_generator_spec.rb +51 -40
  250. data/spec/core/schema_spec.rb +74 -77
  251. data/spec/core/spec_helper.rb +6 -24
  252. data/spec/core/version_spec.rb +1 -1
  253. data/spec/core_extensions_spec.rb +7 -83
  254. data/spec/core_model_spec.rb +2 -2
  255. data/spec/deprecation_helper.rb +2 -14
  256. data/spec/extensions/accessed_columns_spec.rb +1 -1
  257. data/spec/extensions/active_model_spec.rb +3 -3
  258. data/spec/extensions/after_initialize_spec.rb +1 -1
  259. data/spec/extensions/arbitrary_servers_spec.rb +2 -2
  260. data/spec/extensions/association_dependencies_spec.rb +1 -1
  261. data/spec/extensions/association_pks_spec.rb +4 -59
  262. data/spec/extensions/association_proxies_spec.rb +1 -1
  263. data/spec/extensions/auto_literal_strings_spec.rb +1 -12
  264. data/spec/extensions/auto_validations_spec.rb +1 -1
  265. data/spec/extensions/blacklist_security_spec.rb +1 -1
  266. data/spec/extensions/blank_spec.rb +1 -1
  267. data/spec/extensions/boolean_readers_spec.rb +1 -1
  268. data/spec/extensions/boolean_subsets_spec.rb +1 -1
  269. data/spec/extensions/caching_spec.rb +1 -1
  270. data/spec/extensions/class_table_inheritance_spec.rb +35 -1086
  271. data/spec/extensions/column_conflicts_spec.rb +1 -1
  272. data/spec/extensions/column_select_spec.rb +4 -4
  273. data/spec/extensions/columns_introspection_spec.rb +1 -1
  274. data/spec/extensions/columns_updated_spec.rb +1 -1
  275. data/spec/extensions/composition_spec.rb +1 -7
  276. data/spec/extensions/connection_expiration_spec.rb +3 -3
  277. data/spec/extensions/connection_validator_spec.rb +3 -3
  278. data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
  279. data/spec/extensions/constraint_validations_spec.rb +1 -1
  280. data/spec/extensions/core_refinements_spec.rb +1 -3
  281. data/spec/extensions/csv_serializer_spec.rb +4 -9
  282. data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
  283. data/spec/extensions/dataset_associations_spec.rb +2 -1
  284. data/spec/extensions/dataset_source_alias_spec.rb +1 -1
  285. data/spec/extensions/date_arithmetic_spec.rb +3 -3
  286. data/spec/extensions/def_dataset_method_spec.rb +1 -1
  287. data/spec/extensions/defaults_setter_spec.rb +2 -2
  288. data/spec/extensions/delay_add_association_spec.rb +8 -9
  289. data/spec/extensions/dirty_spec.rb +1 -1
  290. data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
  291. data/spec/extensions/eager_each_spec.rb +2 -2
  292. data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
  293. data/spec/extensions/error_splitter_spec.rb +1 -1
  294. data/spec/extensions/error_sql_spec.rb +1 -1
  295. data/spec/extensions/eval_inspect_spec.rb +1 -1
  296. data/spec/extensions/finder_spec.rb +1 -1
  297. data/spec/extensions/force_encoding_spec.rb +2 -5
  298. data/spec/extensions/freeze_datasets_spec.rb +1 -1
  299. data/spec/extensions/graph_each_spec.rb +5 -5
  300. data/spec/extensions/hook_class_methods_spec.rb +1 -194
  301. data/spec/extensions/identifier_mangling_spec.rb +17 -170
  302. data/spec/extensions/implicit_subquery_spec.rb +1 -5
  303. data/spec/extensions/inflector_spec.rb +1 -1
  304. data/spec/extensions/input_transformer_spec.rb +7 -2
  305. data/spec/extensions/insert_returning_select_spec.rb +1 -1
  306. data/spec/extensions/instance_filters_spec.rb +1 -1
  307. data/spec/extensions/instance_hooks_spec.rb +1 -95
  308. data/spec/extensions/inverted_subsets_spec.rb +1 -1
  309. data/spec/extensions/json_serializer_spec.rb +1 -1
  310. data/spec/extensions/lazy_attributes_spec.rb +1 -7
  311. data/spec/extensions/list_spec.rb +1 -1
  312. data/spec/extensions/looser_typecasting_spec.rb +1 -1
  313. data/spec/extensions/many_through_many_spec.rb +1 -1
  314. data/spec/extensions/migration_spec.rb +2 -2
  315. data/spec/extensions/modification_detection_spec.rb +1 -1
  316. data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
  317. data/spec/extensions/named_timezones_spec.rb +3 -3
  318. data/spec/extensions/nested_attributes_spec.rb +1 -29
  319. data/spec/extensions/null_dataset_spec.rb +1 -11
  320. data/spec/extensions/optimistic_locking_spec.rb +1 -1
  321. data/spec/extensions/pagination_spec.rb +1 -1
  322. data/spec/extensions/pg_array_associations_spec.rb +4 -1
  323. data/spec/extensions/pg_array_ops_spec.rb +1 -1
  324. data/spec/extensions/pg_array_spec.rb +3 -48
  325. data/spec/extensions/pg_enum_spec.rb +1 -1
  326. data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
  327. data/spec/extensions/pg_hstore_spec.rb +23 -32
  328. data/spec/extensions/pg_inet_ops_spec.rb +1 -1
  329. data/spec/extensions/pg_inet_spec.rb +1 -14
  330. data/spec/extensions/pg_interval_spec.rb +3 -13
  331. data/spec/extensions/pg_json_ops_spec.rb +1 -1
  332. data/spec/extensions/pg_json_spec.rb +1 -13
  333. data/spec/extensions/pg_loose_count_spec.rb +1 -1
  334. data/spec/extensions/pg_range_ops_spec.rb +1 -1
  335. data/spec/extensions/pg_range_spec.rb +3 -88
  336. data/spec/extensions/pg_row_ops_spec.rb +1 -1
  337. data/spec/extensions/pg_row_plugin_spec.rb +1 -1
  338. data/spec/extensions/pg_row_spec.rb +1 -44
  339. data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
  340. data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
  341. data/spec/extensions/prepared_statements_spec.rb +13 -48
  342. data/spec/extensions/pretty_table_spec.rb +1 -1
  343. data/spec/extensions/query_spec.rb +1 -12
  344. data/spec/extensions/rcte_tree_spec.rb +1 -1
  345. data/spec/extensions/round_timestamps_spec.rb +1 -5
  346. data/spec/extensions/s_spec.rb +1 -1
  347. data/spec/extensions/schema_caching_spec.rb +1 -1
  348. data/spec/extensions/schema_dumper_spec.rb +1 -1
  349. data/spec/extensions/select_remove_spec.rb +1 -1
  350. data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
  351. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  352. data/spec/extensions/serialization_spec.rb +2 -14
  353. data/spec/extensions/server_block_spec.rb +1 -1
  354. data/spec/extensions/server_logging_spec.rb +2 -2
  355. data/spec/extensions/sharding_spec.rb +1 -1
  356. data/spec/extensions/shared_caching_spec.rb +1 -28
  357. data/spec/extensions/single_table_inheritance_spec.rb +2 -5
  358. data/spec/extensions/singular_table_names_spec.rb +1 -1
  359. data/spec/extensions/skip_create_refresh_spec.rb +1 -1
  360. data/spec/extensions/spec_helper.rb +5 -27
  361. data/spec/extensions/split_array_nil_spec.rb +1 -1
  362. data/spec/extensions/split_values_spec.rb +1 -1
  363. data/spec/extensions/sql_comments_spec.rb +1 -1
  364. data/spec/extensions/sql_expr_spec.rb +1 -1
  365. data/spec/extensions/static_cache_spec.rb +1 -1
  366. data/spec/extensions/string_agg_spec.rb +2 -2
  367. data/spec/extensions/string_date_time_spec.rb +1 -1
  368. data/spec/extensions/string_stripper_spec.rb +1 -1
  369. data/spec/extensions/subclasses_spec.rb +1 -1
  370. data/spec/extensions/subset_conditions_spec.rb +1 -1
  371. data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
  372. data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
  373. data/spec/extensions/table_select_spec.rb +4 -4
  374. data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
  375. data/spec/extensions/thread_local_timezones_spec.rb +1 -1
  376. data/spec/extensions/timestamps_spec.rb +3 -3
  377. data/spec/extensions/to_dot_spec.rb +1 -1
  378. data/spec/extensions/touch_spec.rb +1 -1
  379. data/spec/extensions/tree_spec.rb +1 -1
  380. data/spec/extensions/typecast_on_load_spec.rb +1 -1
  381. data/spec/extensions/unlimited_update_spec.rb +1 -1
  382. data/spec/extensions/update_or_create_spec.rb +1 -1
  383. data/spec/extensions/update_primary_key_spec.rb +4 -3
  384. data/spec/extensions/update_refresh_spec.rb +1 -1
  385. data/spec/extensions/uuid_spec.rb +10 -12
  386. data/spec/extensions/validate_associated_spec.rb +1 -1
  387. data/spec/extensions/validation_class_methods_spec.rb +3 -3
  388. data/spec/extensions/validation_contexts_spec.rb +1 -1
  389. data/spec/extensions/validation_helpers_spec.rb +10 -44
  390. data/spec/extensions/whitelist_security_spec.rb +5 -5
  391. data/spec/extensions/xml_serializer_spec.rb +3 -3
  392. data/spec/guards_helper.rb +2 -1
  393. data/spec/integration/associations_test.rb +1 -23
  394. data/spec/integration/database_test.rb +7 -7
  395. data/spec/integration/dataset_test.rb +5 -47
  396. data/spec/integration/eager_loader_test.rb +1 -1
  397. data/spec/integration/migrator_test.rb +1 -1
  398. data/spec/integration/model_test.rb +4 -82
  399. data/spec/integration/plugin_test.rb +6 -22
  400. data/spec/integration/prepared_statement_test.rb +8 -88
  401. data/spec/integration/schema_test.rb +6 -6
  402. data/spec/integration/spec_helper.rb +13 -21
  403. data/spec/integration/timezone_test.rb +5 -5
  404. data/spec/integration/transaction_test.rb +3 -55
  405. data/spec/integration/type_test.rb +9 -9
  406. data/spec/model/association_reflection_spec.rb +24 -9
  407. data/spec/model/associations_spec.rb +124 -303
  408. data/spec/model/base_spec.rb +18 -137
  409. data/spec/model/class_dataset_methods_spec.rb +2 -20
  410. data/spec/model/dataset_methods_spec.rb +1 -20
  411. data/spec/model/eager_loading_spec.rb +17 -11
  412. data/spec/model/hooks_spec.rb +5 -300
  413. data/spec/model/inflector_spec.rb +1 -1
  414. data/spec/model/model_spec.rb +15 -320
  415. data/spec/model/plugins_spec.rb +2 -16
  416. data/spec/model/record_spec.rb +29 -121
  417. data/spec/model/spec_helper.rb +5 -15
  418. data/spec/model/validations_spec.rb +1 -1
  419. data/spec/sequel_warning.rb +1 -12
  420. metadata +8 -64
  421. data/doc/active_record.rdoc +0 -927
  422. data/lib/sequel/adapters/cubrid.rb +0 -160
  423. data/lib/sequel/adapters/do.rb +0 -166
  424. data/lib/sequel/adapters/do/mysql.rb +0 -69
  425. data/lib/sequel/adapters/do/postgres.rb +0 -46
  426. data/lib/sequel/adapters/do/sqlite3.rb +0 -41
  427. data/lib/sequel/adapters/jdbc/as400.rb +0 -92
  428. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
  429. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
  430. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
  431. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
  432. data/lib/sequel/adapters/odbc/progress.rb +0 -12
  433. data/lib/sequel/adapters/shared/cubrid.rb +0 -245
  434. data/lib/sequel/adapters/shared/firebird.rb +0 -261
  435. data/lib/sequel/adapters/shared/informix.rb +0 -63
  436. data/lib/sequel/adapters/shared/progress.rb +0 -40
  437. data/lib/sequel/adapters/swift.rb +0 -169
  438. data/lib/sequel/adapters/swift/mysql.rb +0 -50
  439. data/lib/sequel/adapters/swift/postgres.rb +0 -49
  440. data/lib/sequel/adapters/swift/sqlite.rb +0 -48
  441. data/lib/sequel/adapters/utils/pg_types.rb +0 -4
  442. data/lib/sequel/dataset/mutation.rb +0 -98
  443. data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
  444. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
  445. data/lib/sequel/extensions/filter_having.rb +0 -65
  446. data/lib/sequel/extensions/hash_aliases.rb +0 -51
  447. data/lib/sequel/extensions/meta_def.rb +0 -37
  448. data/lib/sequel/extensions/query_literals.rb +0 -86
  449. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
  450. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
  451. data/lib/sequel/extensions/set_overrides.rb +0 -82
  452. data/lib/sequel/no_core_ext.rb +0 -4
  453. data/lib/sequel/plugins/association_autoreloading.rb +0 -11
  454. data/lib/sequel/plugins/identifier_columns.rb +0 -49
  455. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
  456. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
  457. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
  458. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
  459. data/lib/sequel/plugins/schema.rb +0 -84
  460. data/lib/sequel/plugins/scissors.rb +0 -37
  461. data/spec/core/dataset_mutation_spec.rb +0 -253
  462. data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
  463. data/spec/extensions/before_after_save_spec.rb +0 -40
  464. data/spec/extensions/filter_having_spec.rb +0 -42
  465. data/spec/extensions/from_block_spec.rb +0 -21
  466. data/spec/extensions/hash_aliases_spec.rb +0 -26
  467. data/spec/extensions/identifier_columns_spec.rb +0 -19
  468. data/spec/extensions/meta_def_spec.rb +0 -35
  469. data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
  470. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
  471. data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
  472. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
  473. data/spec/extensions/query_literals_spec.rb +0 -185
  474. data/spec/extensions/schema_spec.rb +0 -123
  475. data/spec/extensions/scissors_spec.rb +0 -27
  476. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
  477. data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -17,7 +17,7 @@ module Sequel
17
17
 
18
18
  # Returns an INSERT SQL query string. See +insert+.
19
19
  #
20
- # DB[:items].insert_sql(:a=>1)
20
+ # DB[:items].insert_sql(a: 1)
21
21
  # # => "INSERT INTO items (a) VALUES (1)"
22
22
  def insert_sql(*values)
23
23
  return static_sql(@opts[:sql]) if @opts[:sql]
@@ -112,9 +112,6 @@ module Sequel
112
112
  # Returns an array of insert statements for inserting multiple records.
113
113
  # This method is used by +multi_insert+ to format insert statements and
114
114
  # expects a keys array and and an array of value arrays.
115
- #
116
- # This method should be overridden by descendants if the support
117
- # inserting multiple records in a single SQL statement.
118
115
  def multi_insert_sql(columns, values)
119
116
  case multi_insert_sql_strategy
120
117
  when :values
@@ -165,7 +162,7 @@ module Sequel
165
162
 
166
163
  # Formats an UPDATE statement using the given values. See +update+.
167
164
  #
168
- # DB[:items].update_sql(:price => 100, :category => 'software')
165
+ # DB[:items].update_sql(price: 100, category: 'software')
169
166
  # # => "UPDATE items SET price = 100, category = 'software'
170
167
  #
171
168
  # Raises an +Error+ if the dataset is grouped or includes more
@@ -179,8 +176,7 @@ module Sequel
179
176
  when LiteralString
180
177
  # nothing
181
178
  when String
182
- Sequel::Deprecation.deprecate("Calling Sequel::Dataset#update/update_sql with a plain string", "Use Sequel.lit(#{values.inspect}) to create a literal string and pass that to update/update_sql, or use the auto_literal_strings extension")
183
- # raise Error, "plain string passed to Dataset#update" # SEQUEL5
179
+ raise Error, "plain string passed to Dataset#update is not supported, use Sequel.lit to use a literal string"
184
180
  end
185
181
 
186
182
  clone(:values=>values).send(:_update_sql)
@@ -246,10 +242,10 @@ module Sequel
246
242
  DEFAULT = LiteralString.new('DEFAULT').freeze
247
243
 
248
244
  EXISTS = ['EXISTS '.freeze].freeze
249
- BITWISE_METHOD_MAP = {:& =>:BITAND, :| => :BITOR, :^ => :BITXOR}#.freeze # SEQUEL5
250
- COUNT_FROM_SELF_OPTS = [:distinct, :group, :sql, :limit, :offset, :compounds]#.freeze # SEQUEL5
245
+ BITWISE_METHOD_MAP = {:& =>:BITAND, :| => :BITOR, :^ => :BITXOR}.freeze
246
+ COUNT_FROM_SELF_OPTS = [:distinct, :group, :sql, :limit, :offset, :compounds].freeze
251
247
  IS_LITERALS = {nil=>'NULL'.freeze, true=>'TRUE'.freeze, false=>'FALSE'.freeze}.freeze
252
- QUALIFY_KEYS = [:select, :where, :having, :order, :group]#.freeze # SEQUEL5
248
+ QUALIFY_KEYS = [:select, :where, :having, :order, :group].freeze
253
249
 
254
250
  IS_OPERATORS = ::Sequel::SQL::ComplexExpression::IS_OPERATORS
255
251
  LIKE_OPERATORS = ::Sequel::SQL::ComplexExpression::LIKE_OPERATORS
@@ -257,196 +253,6 @@ module Sequel
257
253
  TWO_ARITY_OPERATORS = ::Sequel::SQL::ComplexExpression::TWO_ARITY_OPERATORS
258
254
  REGEXP_OPERATORS = ::Sequel::SQL::ComplexExpression::REGEXP_OPERATORS
259
255
 
260
- EMULATED_FUNCTION_MAP = {}
261
- Sequel::Deprecation.deprecate_constant(self, :EMULATED_FUNCTION_MAP)
262
-
263
- ALL = ' ALL'.freeze
264
- Sequel::Deprecation.deprecate_constant(self, :ALL)
265
- AND_SEPARATOR = " AND ".freeze
266
- Sequel::Deprecation.deprecate_constant(self, :AND_SEPARATOR)
267
- APOS = "'".freeze
268
- Sequel::Deprecation.deprecate_constant(self, :APOS)
269
- APOS_RE = /'/.freeze
270
- Sequel::Deprecation.deprecate_constant(self, :APOS_RE)
271
- ARRAY_EMPTY = '(NULL)'.freeze
272
- Sequel::Deprecation.deprecate_constant(self, :ARRAY_EMPTY)
273
- AS = ' AS '.freeze
274
- Sequel::Deprecation.deprecate_constant(self, :AS)
275
- ASC = ' ASC'.freeze
276
- Sequel::Deprecation.deprecate_constant(self, :ASC)
277
- BACKSLASH = "\\".freeze
278
- Sequel::Deprecation.deprecate_constant(self, :BACKSLASH)
279
- BITCOMP_CLOSE = ") - 1)".freeze
280
- Sequel::Deprecation.deprecate_constant(self, :BITCOMP_CLOSE)
281
- BITCOMP_OPEN = "((0 - ".freeze
282
- Sequel::Deprecation.deprecate_constant(self, :BITCOMP_OPEN)
283
- BOOL_FALSE = "'f'".freeze
284
- Sequel::Deprecation.deprecate_constant(self, :BOOL_FALSE)
285
- BOOL_TRUE = "'t'".freeze
286
- Sequel::Deprecation.deprecate_constant(self, :BOOL_TRUE)
287
- BRACKET_CLOSE = ']'.freeze
288
- Sequel::Deprecation.deprecate_constant(self, :BRACKET_CLOSE)
289
- BRACKET_OPEN = '['.freeze
290
- Sequel::Deprecation.deprecate_constant(self, :BRACKET_OPEN)
291
- CASE_ELSE = " ELSE ".freeze
292
- Sequel::Deprecation.deprecate_constant(self, :CASE_ELSE)
293
- CASE_END = " END)".freeze
294
- Sequel::Deprecation.deprecate_constant(self, :CASE_END)
295
- CASE_OPEN = '(CASE'.freeze
296
- Sequel::Deprecation.deprecate_constant(self, :CASE_OPEN)
297
- CASE_THEN = " THEN ".freeze
298
- Sequel::Deprecation.deprecate_constant(self, :CASE_THEN)
299
- CASE_WHEN = " WHEN ".freeze
300
- Sequel::Deprecation.deprecate_constant(self, :CASE_WHEN)
301
- CAST_OPEN = 'CAST('.freeze
302
- Sequel::Deprecation.deprecate_constant(self, :CAST_OPEN)
303
- COLON = ':'.freeze
304
- Sequel::Deprecation.deprecate_constant(self, :COLON)
305
- COLUMN_REF_RE1 = /\A((?:(?!__).)+)__((?:(?!___).)+)___(.+)\z/.freeze
306
- Sequel::Deprecation.deprecate_constant(self, :COLUMN_REF_RE1)
307
- COLUMN_REF_RE2 = /\A((?:(?!___).)+)___(.+)\z/.freeze
308
- Sequel::Deprecation.deprecate_constant(self, :COLUMN_REF_RE2)
309
- COLUMN_REF_RE3 = /\A((?:(?!__).)+)__(.+)\z/.freeze
310
- Sequel::Deprecation.deprecate_constant(self, :COLUMN_REF_RE3)
311
- COMMA = ', '.freeze
312
- Sequel::Deprecation.deprecate_constant(self, :COMMA)
313
- COMMA_SEPARATOR = ', '.freeze
314
- Sequel::Deprecation.deprecate_constant(self, :COMMA_SEPARATOR)
315
- CONDITION_FALSE = '(1 = 0)'.freeze
316
- Sequel::Deprecation.deprecate_constant(self, :CONDITION_FALSE)
317
- CONDITION_TRUE = '(1 = 1)'.freeze
318
- Sequel::Deprecation.deprecate_constant(self, :CONDITION_TRUE)
319
- DATASET_ALIAS_BASE_NAME = 't'.freeze
320
- Sequel::Deprecation.deprecate_constant(self, :DATASET_ALIAS_BASE_NAME)
321
- DATETIME_SECFRACTION_ARG = RUBY_VERSION >= '1.9.0' ? 1000000 : 86400000000
322
- Sequel::Deprecation.deprecate_constant(self, :DATETIME_SECFRACTION_ARG)
323
- DEFAULT_VALUES = " DEFAULT VALUES".freeze
324
- Sequel::Deprecation.deprecate_constant(self, :DEFAULT_VALUES)
325
- DELETE = 'DELETE'.freeze
326
- Sequel::Deprecation.deprecate_constant(self, :DELETE)
327
- DESC = ' DESC'.freeze
328
- Sequel::Deprecation.deprecate_constant(self, :DESC)
329
- DISTINCT = " DISTINCT".freeze
330
- Sequel::Deprecation.deprecate_constant(self, :DISTINCT)
331
- DOT = '.'.freeze
332
- Sequel::Deprecation.deprecate_constant(self, :DOT)
333
- DOUBLE_APOS = "''".freeze
334
- Sequel::Deprecation.deprecate_constant(self, :DOUBLE_APOS)
335
- DOUBLE_QUOTE = '""'.freeze
336
- Sequel::Deprecation.deprecate_constant(self, :DOUBLE_QUOTE)
337
- EQUAL = ' = '.freeze
338
- Sequel::Deprecation.deprecate_constant(self, :EQUAL)
339
- EMPTY_PARENS = '()'.freeze
340
- Sequel::Deprecation.deprecate_constant(self, :EMPTY_PARENS)
341
- ESCAPE = " ESCAPE ".freeze
342
- Sequel::Deprecation.deprecate_constant(self, :ESCAPE)
343
- EXTRACT = 'extract('.freeze
344
- Sequel::Deprecation.deprecate_constant(self, :EXTRACT)
345
- FILTER = " FILTER (WHERE ".freeze
346
- Sequel::Deprecation.deprecate_constant(self, :FILTER)
347
- FOR_UPDATE = ' FOR UPDATE'.freeze
348
- Sequel::Deprecation.deprecate_constant(self, :FOR_UPDATE)
349
- FORMAT_DATE = "'%Y-%m-%d'".freeze
350
- Sequel::Deprecation.deprecate_constant(self, :FORMAT_DATE)
351
- FORMAT_DATE_STANDARD = "DATE '%Y-%m-%d'".freeze
352
- Sequel::Deprecation.deprecate_constant(self, :FORMAT_DATE_STANDARD)
353
- FORMAT_OFFSET = "%+03i%02i".freeze
354
- Sequel::Deprecation.deprecate_constant(self, :FORMAT_OFFSET)
355
- FORMAT_TIMESTAMP_RE = /%[Nz]/.freeze
356
- Sequel::Deprecation.deprecate_constant(self, :FORMAT_TIMESTAMP_RE)
357
- FORMAT_USEC = '%N'.freeze
358
- Sequel::Deprecation.deprecate_constant(self, :FORMAT_USEC)
359
- FRAME_ALL = "ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING".freeze
360
- Sequel::Deprecation.deprecate_constant(self, :FRAME_ALL)
361
- FRAME_ROWS = "ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW".freeze
362
- Sequel::Deprecation.deprecate_constant(self, :FRAME_ROWS)
363
- FROM = ' FROM '.freeze
364
- Sequel::Deprecation.deprecate_constant(self, :FROM)
365
- FUNCTION_DISTINCT = "DISTINCT ".freeze
366
- Sequel::Deprecation.deprecate_constant(self, :FUNCTION_DISTINCT)
367
- GROUP_BY = " GROUP BY ".freeze
368
- Sequel::Deprecation.deprecate_constant(self, :GROUP_BY)
369
- HAVING = " HAVING ".freeze
370
- Sequel::Deprecation.deprecate_constant(self, :HAVING)
371
- INSERT = "INSERT".freeze
372
- Sequel::Deprecation.deprecate_constant(self, :INSERT)
373
- INTO = " INTO ".freeze
374
- Sequel::Deprecation.deprecate_constant(self, :INTO)
375
- LATERAL = 'LATERAL '.freeze
376
- Sequel::Deprecation.deprecate_constant(self, :LATERAL)
377
- LIMIT = " LIMIT ".freeze
378
- Sequel::Deprecation.deprecate_constant(self, :LIMIT)
379
- NOT_SPACE = 'NOT '.freeze
380
- Sequel::Deprecation.deprecate_constant(self, :NOT_SPACE)
381
- NULL = "NULL".freeze
382
- Sequel::Deprecation.deprecate_constant(self, :NULL)
383
- NULLS_FIRST = " NULLS FIRST".freeze
384
- Sequel::Deprecation.deprecate_constant(self, :NULLS_FIRST)
385
- NULLS_LAST = " NULLS LAST".freeze
386
- Sequel::Deprecation.deprecate_constant(self, :NULLS_LAST)
387
- OFFSET = " OFFSET ".freeze
388
- Sequel::Deprecation.deprecate_constant(self, :OFFSET)
389
- ON = ' ON '.freeze
390
- Sequel::Deprecation.deprecate_constant(self, :ON)
391
- ON_PAREN = " ON (".freeze
392
- Sequel::Deprecation.deprecate_constant(self, :ON_PAREN)
393
- ORDER_BY = " ORDER BY ".freeze
394
- Sequel::Deprecation.deprecate_constant(self, :ORDER_BY)
395
- ORDER_BY_NS = "ORDER BY ".freeze
396
- Sequel::Deprecation.deprecate_constant(self, :ORDER_BY_NS)
397
- OVER = ' OVER '.freeze
398
- Sequel::Deprecation.deprecate_constant(self, :OVER)
399
- PAREN_CLOSE = ')'.freeze
400
- Sequel::Deprecation.deprecate_constant(self, :PAREN_CLOSE)
401
- PAREN_OPEN = '('.freeze
402
- Sequel::Deprecation.deprecate_constant(self, :PAREN_OPEN)
403
- PAREN_SPACE_OPEN = ' ('.freeze
404
- Sequel::Deprecation.deprecate_constant(self, :PAREN_SPACE_OPEN)
405
- PARTITION_BY = "PARTITION BY ".freeze
406
- Sequel::Deprecation.deprecate_constant(self, :PARTITION_BY)
407
- QUESTION_MARK = '?'.freeze
408
- Sequel::Deprecation.deprecate_constant(self, :QUESTION_MARK)
409
- QUESTION_MARK_RE = /\?/.freeze
410
- Sequel::Deprecation.deprecate_constant(self, :QUESTION_MARK_RE)
411
- QUOTE = '"'.freeze
412
- Sequel::Deprecation.deprecate_constant(self, :QUOTE)
413
- QUOTE_RE = /"/.freeze
414
- Sequel::Deprecation.deprecate_constant(self, :QUOTE_RE)
415
- RETURNING = " RETURNING ".freeze
416
- Sequel::Deprecation.deprecate_constant(self, :RETURNING)
417
- SELECT = 'SELECT'.freeze
418
- Sequel::Deprecation.deprecate_constant(self, :SELECT)
419
- SET = ' SET '.freeze
420
- Sequel::Deprecation.deprecate_constant(self, :SET)
421
- SPACE = ' '.freeze
422
- Sequel::Deprecation.deprecate_constant(self, :SPACE)
423
- SQL_WITH = "WITH ".freeze
424
- Sequel::Deprecation.deprecate_constant(self, :SQL_WITH)
425
- SPACE_WITH = " WITH ".freeze
426
- Sequel::Deprecation.deprecate_constant(self, :SPACE_WITH)
427
- TILDE = '~'.freeze
428
- Sequel::Deprecation.deprecate_constant(self, :TILDE)
429
- TIMESTAMP_FORMAT = "'%Y-%m-%d %H:%M:%S%N%z'".freeze
430
- Sequel::Deprecation.deprecate_constant(self, :TIMESTAMP_FORMAT)
431
- STANDARD_TIMESTAMP_FORMAT = "TIMESTAMP '%Y-%m-%d %H:%M:%S%N%z'".freeze
432
- Sequel::Deprecation.deprecate_constant(self, :STANDARD_TIMESTAMP_FORMAT)
433
- UNDERSCORE = '_'.freeze
434
- Sequel::Deprecation.deprecate_constant(self, :UNDERSCORE)
435
- UPDATE = 'UPDATE'.freeze
436
- Sequel::Deprecation.deprecate_constant(self, :UPDATE)
437
- USING = ' USING ('.freeze
438
- Sequel::Deprecation.deprecate_constant(self, :USING)
439
- UNION_ALL_SELECT = ' UNION ALL SELECT '.freeze
440
- Sequel::Deprecation.deprecate_constant(self, :UNION_ALL_SELECT)
441
- VALUES = " VALUES ".freeze
442
- Sequel::Deprecation.deprecate_constant(self, :VALUES)
443
- WHERE = " WHERE ".freeze
444
- Sequel::Deprecation.deprecate_constant(self, :WHERE)
445
- WITH_ORDINALITY = " WITH ORDINALITY".freeze
446
- Sequel::Deprecation.deprecate_constant(self, :WITH_ORDINALITY)
447
- WITHIN_GROUP = " WITHIN GROUP (ORDER BY ".freeze
448
- Sequel::Deprecation.deprecate_constant(self, :WITHIN_GROUP)
449
-
450
256
  [:literal, :quote_identifier, :quote_schema_table].each do |meth|
451
257
  class_eval(<<-END, __FILE__, __LINE__ + 1)
452
258
  def #{meth}(*args, &block)
@@ -874,9 +680,9 @@ module Sequel
874
680
  # Splits table_name into an array of strings.
875
681
  #
876
682
  # ds.split_qualifiers(:s) # ['s']
877
- # ds.split_qualifiers(:t__s) # ['t', 's']
878
- # ds.split_qualifiers(Sequel[:d][:t__s]) # ['d', 't', 's']
879
- # ds.split_qualifiers(Sequel[:h__d][:t__s]) # ['h', 'd', 't', 's']
683
+ # ds.split_qualifiers(Sequel[:t][:s]) # ['t', 's']
684
+ # ds.split_qualifiers(Sequel[:d][:t][:s]) # ['d', 't', 's']
685
+ # ds.split_qualifiers(Sequel.qualify(Sequel[:h][:d], Sequel[:t][:s])) # ['h', 'd', 't', 's']
880
686
  def split_qualifiers(table_name, *args)
881
687
  case table_name
882
688
  when SQL::QualifiedIdentifier
@@ -889,9 +695,10 @@ module Sequel
889
695
 
890
696
  # Append literalization of subscripts (SQL array accesses) to SQL string.
891
697
  def subscript_sql_append(sql, s)
892
- literal_append(sql, s.f)
698
+ literal_append(sql, s.expression)
893
699
  sql << '['
894
- if s.sub.length == 1 && (range = s.sub.first).is_a?(Range)
700
+ sub = s.sub
701
+ if sub.length == 1 && (range = sub.first).is_a?(Range)
895
702
  literal_append(sql, range.begin)
896
703
  sql << ':'
897
704
  e = range.end
@@ -1015,25 +822,21 @@ module Sequel
1015
822
  end
1016
823
  end
1017
824
 
1018
- # Only allow caching the select SQL if the dataset is frozen and hasn't
1019
- # specifically been marked as not allowing SQL caching.
825
+ # Don't allow caching SQL if specifically marked not to.
1020
826
  def cache_sql?
1021
- frozen? && !@opts[:no_cache_sql] && !cache_get(:_no_cache_sql)
827
+ !@opts[:no_cache_sql] && !cache_get(:_no_cache_sql)
1022
828
  end
1023
829
 
1024
- # Raise an InvalidOperation exception if deletion is not allowed
1025
- # for this dataset
830
+ # Raise an InvalidOperation exception if deletion is not allowed for this dataset.
1026
831
  def check_modification_allowed!
1027
832
  raise(InvalidOperation, "Grouped datasets cannot be modified") if opts[:group]
1028
833
  raise(InvalidOperation, "Joined datasets cannot be modified") if !supports_modifying_joins? && joined_dataset?
1029
834
  end
1030
835
 
1031
- # Emit deprecation warning if the dataset uses limits or offsets.
836
+ # Raise error if the dataset uses limits or offsets.
1032
837
  def check_not_limited!(type)
1033
838
  return if @opts[:skip_limit_check] && type != :truncate
1034
- # SEQUEL5
1035
- #raise InvalidOperation, "Dataset##{type} not supported on datasets with limits or offsets" if opts[:limit] || opts[:offset]
1036
- Sequel::Deprecation.deprecate("Dataset##{type} on datasets with limits or offsets", "Call unlimited to remove the limit #{'or skip_limit_check to ignore the limit ' unless type == :truncate}before calling #{type}") if @opts[:limit] || @opts[:offset]
839
+ raise InvalidOperation, "Dataset##{type} not supported on datasets with limits or offsets" if opts[:limit] || opts[:offset]
1037
840
  end
1038
841
 
1039
842
  # Alias of check_modification_allowed!
@@ -1042,8 +845,7 @@ module Sequel
1042
845
  end
1043
846
 
1044
847
  # Append column list to SQL string.
1045
- # Converts an array of column names into a comma seperated string of
1046
- # column names. If the array is empty, a wildcard (*) is returned.
848
+ # If the column list is empty, a wildcard (*) is appended.
1047
849
  def column_list_append(sql, columns)
1048
850
  if (columns.nil? || columns.empty?)
1049
851
  sql << '*'
@@ -1138,7 +940,8 @@ module Sequel
1138
940
  false
1139
941
  end
1140
942
 
1141
- # Append literalization of array of expressions to SQL string.
943
+ # Append literalization of array of expressions to SQL string, separating them
944
+ # with commas.
1142
945
  def expression_list_append(sql, columns)
1143
946
  c = false
1144
947
  co = ', '
@@ -1149,7 +952,7 @@ module Sequel
1149
952
  end
1150
953
  end
1151
954
 
1152
- # Append literalization of array of grouping elements to SQL string.
955
+ # Append literalization of array of grouping elements to SQL string, seperating them with commas.
1153
956
  def grouping_element_list_append(sql, columns)
1154
957
  c = false
1155
958
  co = ', '
@@ -1177,7 +980,10 @@ module Sequel
1177
980
  v2 = db.from_application_timestamp(v)
1178
981
  fmt = default_timestamp_format.gsub(/%[Nz]/) do |m|
1179
982
  if m == '%N'
1180
- format_timestamp_usec(v.is_a?(DateTime) ? v.sec_fraction*(RUBY_VERSION >= '1.9.0' ? 1000000 : 86400000000) : v.usec) if supports_timestamp_usecs?
983
+ # Ruby 1.9 supports %N in timestamp formats, but Sequel has supported %N
984
+ # for longer in a different way, where the . is already appended and only 6
985
+ # decimal places are used by default.
986
+ format_timestamp_usec(v.is_a?(DateTime) ? v.sec_fraction*(1000000) : v.usec) if supports_timestamp_usecs?
1181
987
  else
1182
988
  if supports_timestamp_timezones?
1183
989
  # Would like to just use %z format, but it doesn't appear to work on Windows
@@ -1407,7 +1213,7 @@ module Sequel
1407
1213
 
1408
1214
  # Append literalization of string to SQL string.
1409
1215
  def literal_string_append(sql, v)
1410
- sql << "'" << v.gsub(/'/, "''") << "'"
1216
+ sql << "'" << v.gsub("'", "''") << "'"
1411
1217
  end
1412
1218
 
1413
1219
  # Append literalization of symbol to SQL string.
@@ -1471,7 +1277,7 @@ module Sequel
1471
1277
  end
1472
1278
  end
1473
1279
 
1474
- # Qualify the given expression e to the given table.
1280
+ # Qualify the given expression to the given table.
1475
1281
  def qualified_expression(e, table)
1476
1282
  Qualifier.new(table).transform(e)
1477
1283
  end
@@ -1494,7 +1300,7 @@ module Sequel
1494
1300
 
1495
1301
  # Modify the sql to add a dataset to the via an EXCEPT, INTERSECT, or UNION clause.
1496
1302
  # This uses a subselect for the compound datasets used, because using parantheses doesn't
1497
- # work on all databases. I consider this an ugly hack, but can't I think of a better default.
1303
+ # work on all databases.
1498
1304
  def select_compounds_sql(sql)
1499
1305
  return unless c = @opts[:compounds]
1500
1306
  c.each do |type, dataset, all|
@@ -1626,7 +1432,6 @@ module Sequel
1626
1432
  alias insert_with_sql select_with_sql
1627
1433
  alias update_with_sql select_with_sql
1628
1434
 
1629
- # The base keyword to use for the SQL WITH clause
1630
1435
  def select_with_sql_base
1631
1436
  "WITH "
1632
1437
  end
@@ -1649,7 +1454,7 @@ module Sequel
1649
1454
  end
1650
1455
 
1651
1456
  # The string that is appended to to create the SQL query, the empty
1652
- # string by default
1457
+ # string by default.
1653
1458
  def sql_string_origin
1654
1459
  String.new
1655
1460
  end
@@ -1680,7 +1485,7 @@ module Sequel
1680
1485
  end
1681
1486
  end
1682
1487
 
1683
- # Append literalization of the subselect to SQL String.
1488
+ # Append literalization of the subselect to SQL string.
1684
1489
  def subselect_sql_append(sql, ds)
1685
1490
  ds.clone(:append_sql=>sql).sql
1686
1491
  end
@@ -20,7 +20,7 @@ module Sequel
20
20
  module Deprecation
21
21
  @backtrace_filter = 10
22
22
  @output = $stderr
23
- @prefix = "SEQUEL DEPRECATION WARNING: "
23
+ @prefix = "SEQUEL DEPRECATION WARNING: ".freeze
24
24
 
25
25
  class << self
26
26
  # How to filter backtraces. +false+ does not include backtraces, +true+ includes
@@ -36,34 +36,25 @@ module Sequel
36
36
  attr_accessor :prefix
37
37
  end
38
38
 
39
- if RUBY_VERSION < '1.9'
40
- # :nocov:
41
- def self.deprecate(_method, _instead=nil)
42
- # Sequel 5 will drop ruby 1.8 support completely, so it doesn't make sense to issue deprecation
43
- # warnings on ruby 1.8.
44
- end
45
- # :nocov:
46
- else
47
- # Print the message and possibly backtrace to the output.
48
- def self.deprecate(method, instead=nil)
49
- return unless output
50
- message = instead ? "#{method} is deprecated and will be removed in Sequel 5. #{instead}." : method
51
- message = "#{prefix}#{message}" if prefix
52
- output.puts(message)
53
- case b = backtrace_filter
54
- when Integer
55
- caller.each do |c|
56
- b -= 1
57
- output.puts(c)
58
- break if b <= 0
59
- end
60
- when true
61
- caller.each{|c| output.puts(c)}
62
- when Proc
63
- caller.each_with_index{|line, line_no| output.puts(line) if b.call(line, line_no)}
39
+ # Print the message and possibly backtrace to the output.
40
+ def self.deprecate(method, instead=nil)
41
+ return unless output
42
+ message = instead ? "#{method} is deprecated and will be removed in Sequel 5.1. #{instead}." : method
43
+ message = "#{prefix}#{message}" if prefix
44
+ output.puts(message)
45
+ case b = backtrace_filter
46
+ when Integer
47
+ caller.each do |c|
48
+ b -= 1
49
+ output.puts(c)
50
+ break if b <= 0
64
51
  end
65
- nil
52
+ when true
53
+ caller.each{|c| output.puts(c)}
54
+ when Proc
55
+ caller.each_with_index{|line, line_no| output.puts(line) if b.call(line, line_no)}
66
56
  end
57
+ nil
67
58
  end
68
59
 
69
60
  # If using ruby 2.3+, use Module#deprecate_constant to deprecate the constant,