sequel 4.49.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,