sequel 5.8.0 → 5.38.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 (510) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +409 -1795
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +4 -4
  5. data/bin/sequel +4 -0
  6. data/doc/advanced_associations.rdoc +136 -18
  7. data/doc/association_basics.rdoc +10 -5
  8. data/doc/cheat_sheet.rdoc +1 -0
  9. data/doc/code_order.rdoc +12 -2
  10. data/doc/dataset_filtering.rdoc +17 -2
  11. data/doc/mass_assignment.rdoc +3 -3
  12. data/doc/model_dataset_method_design.rdoc +1 -1
  13. data/doc/model_plugins.rdoc +1 -1
  14. data/doc/opening_databases.rdoc +30 -8
  15. data/doc/postgresql.rdoc +107 -2
  16. data/doc/release_notes/5.10.0.txt +84 -0
  17. data/doc/release_notes/5.11.0.txt +83 -0
  18. data/doc/release_notes/5.12.0.txt +141 -0
  19. data/doc/release_notes/5.13.0.txt +27 -0
  20. data/doc/release_notes/5.14.0.txt +63 -0
  21. data/doc/release_notes/5.15.0.txt +39 -0
  22. data/doc/release_notes/5.16.0.txt +110 -0
  23. data/doc/release_notes/5.17.0.txt +31 -0
  24. data/doc/release_notes/5.18.0.txt +69 -0
  25. data/doc/release_notes/5.19.0.txt +28 -0
  26. data/doc/release_notes/5.20.0.txt +89 -0
  27. data/doc/release_notes/5.21.0.txt +87 -0
  28. data/doc/release_notes/5.22.0.txt +48 -0
  29. data/doc/release_notes/5.23.0.txt +56 -0
  30. data/doc/release_notes/5.24.0.txt +56 -0
  31. data/doc/release_notes/5.25.0.txt +32 -0
  32. data/doc/release_notes/5.26.0.txt +35 -0
  33. data/doc/release_notes/5.27.0.txt +21 -0
  34. data/doc/release_notes/5.28.0.txt +16 -0
  35. data/doc/release_notes/5.29.0.txt +22 -0
  36. data/doc/release_notes/5.30.0.txt +20 -0
  37. data/doc/release_notes/5.31.0.txt +148 -0
  38. data/doc/release_notes/5.32.0.txt +46 -0
  39. data/doc/release_notes/5.33.0.txt +24 -0
  40. data/doc/release_notes/5.34.0.txt +40 -0
  41. data/doc/release_notes/5.35.0.txt +56 -0
  42. data/doc/release_notes/5.36.0.txt +60 -0
  43. data/doc/release_notes/5.37.0.txt +30 -0
  44. data/doc/release_notes/5.38.0.txt +28 -0
  45. data/doc/release_notes/5.9.0.txt +99 -0
  46. data/doc/security.rdoc +10 -0
  47. data/doc/sharding.rdoc +42 -28
  48. data/doc/sql.rdoc +12 -0
  49. data/doc/testing.rdoc +24 -17
  50. data/doc/transactions.rdoc +78 -0
  51. data/doc/validations.rdoc +2 -2
  52. data/lib/sequel/adapters/ado.rb +26 -18
  53. data/lib/sequel/adapters/ado/access.rb +2 -2
  54. data/lib/sequel/adapters/ado/mssql.rb +5 -8
  55. data/lib/sequel/adapters/amalgalite.rb +1 -1
  56. data/lib/sequel/adapters/jdbc.rb +71 -27
  57. data/lib/sequel/adapters/jdbc/mysql.rb +6 -6
  58. data/lib/sequel/adapters/jdbc/oracle.rb +7 -6
  59. data/lib/sequel/adapters/jdbc/postgresql.rb +17 -28
  60. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +5 -6
  61. data/lib/sequel/adapters/jdbc/sqlite.rb +33 -2
  62. data/lib/sequel/adapters/jdbc/sqlserver.rb +4 -3
  63. data/lib/sequel/adapters/jdbc/transactions.rb +14 -28
  64. data/lib/sequel/adapters/mysql.rb +14 -15
  65. data/lib/sequel/adapters/mysql2.rb +5 -3
  66. data/lib/sequel/adapters/odbc.rb +4 -6
  67. data/lib/sequel/adapters/oracle.rb +7 -7
  68. data/lib/sequel/adapters/postgres.rb +52 -16
  69. data/lib/sequel/adapters/shared/access.rb +16 -12
  70. data/lib/sequel/adapters/shared/db2.rb +5 -0
  71. data/lib/sequel/adapters/shared/mssql.rb +41 -18
  72. data/lib/sequel/adapters/shared/mysql.rb +66 -19
  73. data/lib/sequel/adapters/shared/oracle.rb +29 -23
  74. data/lib/sequel/adapters/shared/postgres.rb +341 -95
  75. data/lib/sequel/adapters/shared/sqlanywhere.rb +23 -10
  76. data/lib/sequel/adapters/shared/sqlite.rb +174 -21
  77. data/lib/sequel/adapters/sqlanywhere.rb +33 -17
  78. data/lib/sequel/adapters/sqlite.rb +78 -68
  79. data/lib/sequel/adapters/tinytds.rb +14 -6
  80. data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +2 -5
  81. data/lib/sequel/adapters/utils/mysql_mysql2.rb +5 -1
  82. data/lib/sequel/connection_pool.rb +2 -6
  83. data/lib/sequel/connection_pool/sharded_single.rb +7 -4
  84. data/lib/sequel/connection_pool/sharded_threaded.rb +32 -21
  85. data/lib/sequel/connection_pool/single.rb +1 -1
  86. data/lib/sequel/connection_pool/threaded.rb +26 -11
  87. data/lib/sequel/core.rb +327 -319
  88. data/lib/sequel/database/connecting.rb +7 -8
  89. data/lib/sequel/database/logging.rb +7 -1
  90. data/lib/sequel/database/misc.rb +68 -34
  91. data/lib/sequel/database/query.rb +6 -4
  92. data/lib/sequel/database/schema_generator.rb +31 -11
  93. data/lib/sequel/database/schema_methods.rb +32 -22
  94. data/lib/sequel/database/transactions.rb +129 -25
  95. data/lib/sequel/dataset.rb +4 -2
  96. data/lib/sequel/dataset/actions.rb +34 -23
  97. data/lib/sequel/dataset/features.rb +34 -0
  98. data/lib/sequel/dataset/graph.rb +27 -11
  99. data/lib/sequel/dataset/misc.rb +17 -3
  100. data/lib/sequel/dataset/placeholder_literalizer.rb +50 -21
  101. data/lib/sequel/dataset/prepared_statements.rb +96 -26
  102. data/lib/sequel/dataset/query.rb +43 -8
  103. data/lib/sequel/dataset/sql.rb +189 -41
  104. data/lib/sequel/deprecated.rb +3 -1
  105. data/lib/sequel/exceptions.rb +2 -0
  106. data/lib/sequel/extensions/_pretty_table.rb +1 -2
  107. data/lib/sequel/extensions/any_not_empty.rb +45 -0
  108. data/lib/sequel/extensions/caller_logging.rb +79 -0
  109. data/lib/sequel/extensions/columns_introspection.rb +1 -2
  110. data/lib/sequel/extensions/connection_expiration.rb +6 -6
  111. data/lib/sequel/extensions/connection_validator.rb +7 -6
  112. data/lib/sequel/extensions/constant_sql_override.rb +65 -0
  113. data/lib/sequel/extensions/constraint_validations.rb +53 -28
  114. data/lib/sequel/extensions/core_refinements.rb +2 -0
  115. data/lib/sequel/extensions/duplicate_columns_handler.rb +2 -0
  116. data/lib/sequel/extensions/escaped_like.rb +100 -0
  117. data/lib/sequel/extensions/eval_inspect.rb +3 -1
  118. data/lib/sequel/extensions/exclude_or_null.rb +68 -0
  119. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  120. data/lib/sequel/extensions/index_caching.rb +9 -7
  121. data/lib/sequel/extensions/integer64.rb +3 -1
  122. data/lib/sequel/extensions/looser_typecasting.rb +3 -3
  123. data/lib/sequel/extensions/migration.rb +13 -6
  124. data/lib/sequel/extensions/named_timezones.rb +84 -23
  125. data/lib/sequel/extensions/pg_array.rb +87 -79
  126. data/lib/sequel/extensions/pg_array_ops.rb +14 -6
  127. data/lib/sequel/extensions/pg_enum.rb +34 -18
  128. data/lib/sequel/extensions/pg_extended_date_support.rb +34 -14
  129. data/lib/sequel/extensions/pg_hstore.rb +6 -0
  130. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -0
  131. data/lib/sequel/extensions/pg_inet.rb +15 -5
  132. data/lib/sequel/extensions/pg_interval.rb +2 -0
  133. data/lib/sequel/extensions/pg_json.rb +387 -123
  134. data/lib/sequel/extensions/pg_json_ops.rb +168 -0
  135. data/lib/sequel/extensions/pg_range.rb +20 -10
  136. data/lib/sequel/extensions/pg_range_ops.rb +2 -0
  137. data/lib/sequel/extensions/pg_row.rb +3 -2
  138. data/lib/sequel/extensions/pg_row_ops.rb +24 -0
  139. data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
  140. data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
  141. data/lib/sequel/extensions/query.rb +1 -0
  142. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  143. data/lib/sequel/extensions/s.rb +2 -0
  144. data/lib/sequel/extensions/schema_dumper.rb +13 -7
  145. data/lib/sequel/extensions/sequel_4_dataset_methods.rb +4 -2
  146. data/lib/sequel/extensions/server_block.rb +18 -7
  147. data/lib/sequel/extensions/sql_comments.rb +2 -2
  148. data/lib/sequel/extensions/symbol_aref_refinement.rb +2 -0
  149. data/lib/sequel/extensions/symbol_as_refinement.rb +2 -0
  150. data/lib/sequel/extensions/to_dot.rb +9 -3
  151. data/lib/sequel/model.rb +3 -1
  152. data/lib/sequel/model/associations.rb +403 -69
  153. data/lib/sequel/model/base.rb +170 -90
  154. data/lib/sequel/model/plugins.rb +105 -0
  155. data/lib/sequel/plugins/after_initialize.rb +1 -1
  156. data/lib/sequel/plugins/association_dependencies.rb +3 -3
  157. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  158. data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
  159. data/lib/sequel/plugins/association_pks.rb +74 -22
  160. data/lib/sequel/plugins/association_proxies.rb +6 -2
  161. data/lib/sequel/plugins/auto_validations.rb +36 -17
  162. data/lib/sequel/plugins/blacklist_security.rb +1 -2
  163. data/lib/sequel/plugins/boolean_subsets.rb +4 -1
  164. data/lib/sequel/plugins/caching.rb +3 -0
  165. data/lib/sequel/plugins/class_table_inheritance.rb +62 -34
  166. data/lib/sequel/plugins/composition.rb +13 -9
  167. data/lib/sequel/plugins/csv_serializer.rb +28 -9
  168. data/lib/sequel/plugins/defaults_setter.rb +2 -2
  169. data/lib/sequel/plugins/dirty.rb +60 -22
  170. data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
  171. data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
  172. data/lib/sequel/plugins/finder.rb +2 -2
  173. data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
  174. data/lib/sequel/plugins/hook_class_methods.rb +17 -5
  175. data/lib/sequel/plugins/insert_conflict.rb +72 -0
  176. data/lib/sequel/plugins/instance_specific_default.rb +113 -0
  177. data/lib/sequel/plugins/inverted_subsets.rb +2 -2
  178. data/lib/sequel/plugins/json_serializer.rb +21 -14
  179. data/lib/sequel/plugins/lazy_attributes.rb +1 -1
  180. data/lib/sequel/plugins/list.rb +22 -10
  181. data/lib/sequel/plugins/many_through_many.rb +1 -1
  182. data/lib/sequel/plugins/nested_attributes.rb +27 -5
  183. data/lib/sequel/plugins/pg_array_associations.rb +12 -9
  184. data/lib/sequel/plugins/pg_auto_constraint_validations.rb +149 -61
  185. data/lib/sequel/plugins/prepared_statements.rb +6 -12
  186. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -3
  187. data/lib/sequel/plugins/rcte_tree.rb +20 -22
  188. data/lib/sequel/plugins/sharding.rb +13 -7
  189. data/lib/sequel/plugins/single_table_inheritance.rb +20 -15
  190. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  191. data/lib/sequel/plugins/static_cache.rb +36 -17
  192. data/lib/sequel/plugins/static_cache_cache.rb +53 -0
  193. data/lib/sequel/plugins/string_stripper.rb +1 -1
  194. data/lib/sequel/plugins/subclasses.rb +2 -0
  195. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  196. data/lib/sequel/plugins/tactical_eager_loading.rb +73 -2
  197. data/lib/sequel/plugins/throw_failures.rb +110 -0
  198. data/lib/sequel/plugins/tree.rb +49 -31
  199. data/lib/sequel/plugins/typecast_on_load.rb +3 -2
  200. data/lib/sequel/plugins/validation_class_methods.rb +11 -5
  201. data/lib/sequel/plugins/validation_helpers.rb +2 -2
  202. data/lib/sequel/sql.rb +120 -30
  203. data/lib/sequel/timezones.rb +55 -14
  204. data/lib/sequel/version.rb +6 -1
  205. metadata +101 -361
  206. data/Rakefile +0 -151
  207. data/doc/release_notes/4.0.0.txt +0 -262
  208. data/doc/release_notes/4.1.0.txt +0 -85
  209. data/doc/release_notes/4.10.0.txt +0 -226
  210. data/doc/release_notes/4.11.0.txt +0 -147
  211. data/doc/release_notes/4.12.0.txt +0 -105
  212. data/doc/release_notes/4.13.0.txt +0 -169
  213. data/doc/release_notes/4.14.0.txt +0 -68
  214. data/doc/release_notes/4.15.0.txt +0 -56
  215. data/doc/release_notes/4.16.0.txt +0 -36
  216. data/doc/release_notes/4.17.0.txt +0 -38
  217. data/doc/release_notes/4.18.0.txt +0 -36
  218. data/doc/release_notes/4.19.0.txt +0 -45
  219. data/doc/release_notes/4.2.0.txt +0 -129
  220. data/doc/release_notes/4.20.0.txt +0 -79
  221. data/doc/release_notes/4.21.0.txt +0 -94
  222. data/doc/release_notes/4.22.0.txt +0 -72
  223. data/doc/release_notes/4.23.0.txt +0 -65
  224. data/doc/release_notes/4.24.0.txt +0 -99
  225. data/doc/release_notes/4.25.0.txt +0 -181
  226. data/doc/release_notes/4.26.0.txt +0 -44
  227. data/doc/release_notes/4.27.0.txt +0 -78
  228. data/doc/release_notes/4.28.0.txt +0 -57
  229. data/doc/release_notes/4.29.0.txt +0 -41
  230. data/doc/release_notes/4.3.0.txt +0 -40
  231. data/doc/release_notes/4.30.0.txt +0 -37
  232. data/doc/release_notes/4.31.0.txt +0 -57
  233. data/doc/release_notes/4.32.0.txt +0 -132
  234. data/doc/release_notes/4.33.0.txt +0 -88
  235. data/doc/release_notes/4.34.0.txt +0 -86
  236. data/doc/release_notes/4.35.0.txt +0 -130
  237. data/doc/release_notes/4.36.0.txt +0 -116
  238. data/doc/release_notes/4.37.0.txt +0 -50
  239. data/doc/release_notes/4.38.0.txt +0 -67
  240. data/doc/release_notes/4.39.0.txt +0 -127
  241. data/doc/release_notes/4.4.0.txt +0 -92
  242. data/doc/release_notes/4.40.0.txt +0 -179
  243. data/doc/release_notes/4.41.0.txt +0 -77
  244. data/doc/release_notes/4.42.0.txt +0 -221
  245. data/doc/release_notes/4.43.0.txt +0 -87
  246. data/doc/release_notes/4.44.0.txt +0 -125
  247. data/doc/release_notes/4.45.0.txt +0 -370
  248. data/doc/release_notes/4.46.0.txt +0 -404
  249. data/doc/release_notes/4.47.0.txt +0 -56
  250. data/doc/release_notes/4.48.0.txt +0 -293
  251. data/doc/release_notes/4.49.0.txt +0 -222
  252. data/doc/release_notes/4.5.0.txt +0 -34
  253. data/doc/release_notes/4.6.0.txt +0 -30
  254. data/doc/release_notes/4.7.0.txt +0 -103
  255. data/doc/release_notes/4.8.0.txt +0 -175
  256. data/doc/release_notes/4.9.0.txt +0 -190
  257. data/spec/adapter_spec.rb +0 -4
  258. data/spec/adapters/db2_spec.rb +0 -170
  259. data/spec/adapters/mssql_spec.rb +0 -804
  260. data/spec/adapters/mysql_spec.rb +0 -1041
  261. data/spec/adapters/oracle_spec.rb +0 -327
  262. data/spec/adapters/postgres_spec.rb +0 -4000
  263. data/spec/adapters/spec_helper.rb +0 -43
  264. data/spec/adapters/sqlanywhere_spec.rb +0 -97
  265. data/spec/adapters/sqlite_spec.rb +0 -600
  266. data/spec/bin_spec.rb +0 -269
  267. data/spec/core/connection_pool_spec.rb +0 -1228
  268. data/spec/core/database_spec.rb +0 -2673
  269. data/spec/core/dataset_spec.rb +0 -5419
  270. data/spec/core/deprecated_spec.rb +0 -70
  271. data/spec/core/expression_filters_spec.rb +0 -1344
  272. data/spec/core/mock_adapter_spec.rb +0 -722
  273. data/spec/core/object_graph_spec.rb +0 -306
  274. data/spec/core/placeholder_literalizer_spec.rb +0 -166
  275. data/spec/core/schema_generator_spec.rb +0 -214
  276. data/spec/core/schema_spec.rb +0 -1820
  277. data/spec/core/spec_helper.rb +0 -23
  278. data/spec/core/version_spec.rb +0 -7
  279. data/spec/core_extensions_spec.rb +0 -762
  280. data/spec/core_model_spec.rb +0 -2
  281. data/spec/core_spec.rb +0 -1
  282. data/spec/deprecation_helper.rb +0 -30
  283. data/spec/extensions/accessed_columns_spec.rb +0 -51
  284. data/spec/extensions/active_model_spec.rb +0 -99
  285. data/spec/extensions/after_initialize_spec.rb +0 -24
  286. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  287. data/spec/extensions/association_dependencies_spec.rb +0 -125
  288. data/spec/extensions/association_pks_spec.rb +0 -423
  289. data/spec/extensions/association_proxies_spec.rb +0 -100
  290. data/spec/extensions/auto_literal_strings_spec.rb +0 -205
  291. data/spec/extensions/auto_validations_spec.rb +0 -202
  292. data/spec/extensions/blacklist_security_spec.rb +0 -95
  293. data/spec/extensions/blank_spec.rb +0 -69
  294. data/spec/extensions/boolean_readers_spec.rb +0 -93
  295. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  296. data/spec/extensions/caching_spec.rb +0 -273
  297. data/spec/extensions/class_table_inheritance_spec.rb +0 -568
  298. data/spec/extensions/column_conflicts_spec.rb +0 -75
  299. data/spec/extensions/column_select_spec.rb +0 -129
  300. data/spec/extensions/columns_introspection_spec.rb +0 -90
  301. data/spec/extensions/columns_updated_spec.rb +0 -35
  302. data/spec/extensions/composition_spec.rb +0 -248
  303. data/spec/extensions/connection_expiration_spec.rb +0 -133
  304. data/spec/extensions/connection_validator_spec.rb +0 -127
  305. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  306. data/spec/extensions/constraint_validations_spec.rb +0 -395
  307. data/spec/extensions/core_refinements_spec.rb +0 -528
  308. data/spec/extensions/csv_serializer_spec.rb +0 -183
  309. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  310. data/spec/extensions/dataset_associations_spec.rb +0 -365
  311. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  312. data/spec/extensions/date_arithmetic_spec.rb +0 -181
  313. data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  314. data/spec/extensions/def_dataset_method_spec.rb +0 -100
  315. data/spec/extensions/defaults_setter_spec.rb +0 -141
  316. data/spec/extensions/delay_add_association_spec.rb +0 -73
  317. data/spec/extensions/dirty_spec.rb +0 -189
  318. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  319. data/spec/extensions/eager_each_spec.rb +0 -62
  320. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  321. data/spec/extensions/error_splitter_spec.rb +0 -18
  322. data/spec/extensions/error_sql_spec.rb +0 -20
  323. data/spec/extensions/eval_inspect_spec.rb +0 -74
  324. data/spec/extensions/finder_spec.rb +0 -260
  325. data/spec/extensions/force_encoding_spec.rb +0 -126
  326. data/spec/extensions/freeze_datasets_spec.rb +0 -31
  327. data/spec/extensions/graph_each_spec.rb +0 -113
  328. data/spec/extensions/hook_class_methods_spec.rb +0 -380
  329. data/spec/extensions/identifier_mangling_spec.rb +0 -201
  330. data/spec/extensions/implicit_subquery_spec.rb +0 -58
  331. data/spec/extensions/index_caching_spec.rb +0 -66
  332. data/spec/extensions/inflector_spec.rb +0 -183
  333. data/spec/extensions/input_transformer_spec.rb +0 -69
  334. data/spec/extensions/insert_returning_select_spec.rb +0 -72
  335. data/spec/extensions/instance_filters_spec.rb +0 -79
  336. data/spec/extensions/instance_hooks_spec.rb +0 -246
  337. data/spec/extensions/integer64_spec.rb +0 -22
  338. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  339. data/spec/extensions/json_serializer_spec.rb +0 -336
  340. data/spec/extensions/lazy_attributes_spec.rb +0 -183
  341. data/spec/extensions/list_spec.rb +0 -275
  342. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  343. data/spec/extensions/many_through_many_spec.rb +0 -2177
  344. data/spec/extensions/migration_spec.rb +0 -840
  345. data/spec/extensions/modification_detection_spec.rb +0 -93
  346. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
  347. data/spec/extensions/named_timezones_spec.rb +0 -109
  348. data/spec/extensions/nested_attributes_spec.rb +0 -703
  349. data/spec/extensions/null_dataset_spec.rb +0 -85
  350. data/spec/extensions/optimistic_locking_spec.rb +0 -127
  351. data/spec/extensions/pagination_spec.rb +0 -116
  352. data/spec/extensions/pg_array_associations_spec.rb +0 -802
  353. data/spec/extensions/pg_array_ops_spec.rb +0 -144
  354. data/spec/extensions/pg_array_spec.rb +0 -398
  355. data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -165
  356. data/spec/extensions/pg_enum_spec.rb +0 -113
  357. data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
  358. data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
  359. data/spec/extensions/pg_hstore_spec.rb +0 -219
  360. data/spec/extensions/pg_inet_ops_spec.rb +0 -102
  361. data/spec/extensions/pg_inet_spec.rb +0 -72
  362. data/spec/extensions/pg_interval_spec.rb +0 -103
  363. data/spec/extensions/pg_json_ops_spec.rb +0 -289
  364. data/spec/extensions/pg_json_spec.rb +0 -262
  365. data/spec/extensions/pg_loose_count_spec.rb +0 -23
  366. data/spec/extensions/pg_range_ops_spec.rb +0 -60
  367. data/spec/extensions/pg_range_spec.rb +0 -487
  368. data/spec/extensions/pg_row_ops_spec.rb +0 -61
  369. data/spec/extensions/pg_row_plugin_spec.rb +0 -60
  370. data/spec/extensions/pg_row_spec.rb +0 -363
  371. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
  372. data/spec/extensions/pg_timestamptz_spec.rb +0 -17
  373. data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
  374. data/spec/extensions/prepared_statements_spec.rb +0 -182
  375. data/spec/extensions/pretty_table_spec.rb +0 -123
  376. data/spec/extensions/query_spec.rb +0 -94
  377. data/spec/extensions/rcte_tree_spec.rb +0 -381
  378. data/spec/extensions/round_timestamps_spec.rb +0 -39
  379. data/spec/extensions/s_spec.rb +0 -60
  380. data/spec/extensions/schema_caching_spec.rb +0 -64
  381. data/spec/extensions/schema_dumper_spec.rb +0 -868
  382. data/spec/extensions/select_remove_spec.rb +0 -38
  383. data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
  384. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  385. data/spec/extensions/serialization_spec.rb +0 -365
  386. data/spec/extensions/server_block_spec.rb +0 -97
  387. data/spec/extensions/server_logging_spec.rb +0 -45
  388. data/spec/extensions/sharding_spec.rb +0 -189
  389. data/spec/extensions/shared_caching_spec.rb +0 -151
  390. data/spec/extensions/single_table_inheritance_spec.rb +0 -347
  391. data/spec/extensions/singular_table_names_spec.rb +0 -22
  392. data/spec/extensions/skip_create_refresh_spec.rb +0 -18
  393. data/spec/extensions/spec_helper.rb +0 -61
  394. data/spec/extensions/split_array_nil_spec.rb +0 -24
  395. data/spec/extensions/split_values_spec.rb +0 -57
  396. data/spec/extensions/sql_comments_spec.rb +0 -33
  397. data/spec/extensions/sql_expr_spec.rb +0 -59
  398. data/spec/extensions/static_cache_spec.rb +0 -410
  399. data/spec/extensions/string_agg_spec.rb +0 -90
  400. data/spec/extensions/string_date_time_spec.rb +0 -95
  401. data/spec/extensions/string_stripper_spec.rb +0 -68
  402. data/spec/extensions/subclasses_spec.rb +0 -79
  403. data/spec/extensions/subset_conditions_spec.rb +0 -38
  404. data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
  405. data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
  406. data/spec/extensions/synchronize_sql_spec.rb +0 -124
  407. data/spec/extensions/table_select_spec.rb +0 -83
  408. data/spec/extensions/tactical_eager_loading_spec.rb +0 -141
  409. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  410. data/spec/extensions/timestamps_spec.rb +0 -209
  411. data/spec/extensions/to_dot_spec.rb +0 -153
  412. data/spec/extensions/touch_spec.rb +0 -226
  413. data/spec/extensions/tree_spec.rb +0 -284
  414. data/spec/extensions/typecast_on_load_spec.rb +0 -86
  415. data/spec/extensions/unlimited_update_spec.rb +0 -21
  416. data/spec/extensions/update_or_create_spec.rb +0 -83
  417. data/spec/extensions/update_primary_key_spec.rb +0 -105
  418. data/spec/extensions/update_refresh_spec.rb +0 -59
  419. data/spec/extensions/uuid_spec.rb +0 -101
  420. data/spec/extensions/validate_associated_spec.rb +0 -52
  421. data/spec/extensions/validation_class_methods_spec.rb +0 -1040
  422. data/spec/extensions/validation_contexts_spec.rb +0 -31
  423. data/spec/extensions/validation_helpers_spec.rb +0 -525
  424. data/spec/extensions/whitelist_security_spec.rb +0 -157
  425. data/spec/extensions/xml_serializer_spec.rb +0 -213
  426. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  427. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  428. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  429. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  430. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  431. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  432. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  433. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  434. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  435. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  436. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  437. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  438. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  439. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  440. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  441. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  442. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  443. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  444. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  445. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  446. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  447. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  448. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  449. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  450. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  451. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  452. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  453. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  454. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  455. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  456. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  457. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  458. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  459. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  460. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  461. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  462. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  463. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  464. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  465. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  466. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  467. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  468. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  469. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  470. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  471. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  472. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  473. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  474. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  475. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  476. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  477. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  478. data/spec/guards_helper.rb +0 -58
  479. data/spec/integration/associations_test.rb +0 -2513
  480. data/spec/integration/database_test.rb +0 -113
  481. data/spec/integration/dataset_test.rb +0 -1880
  482. data/spec/integration/eager_loader_test.rb +0 -687
  483. data/spec/integration/migrator_test.rb +0 -262
  484. data/spec/integration/model_test.rb +0 -203
  485. data/spec/integration/plugin_test.rb +0 -2302
  486. data/spec/integration/prepared_statement_test.rb +0 -398
  487. data/spec/integration/schema_test.rb +0 -869
  488. data/spec/integration/spec_helper.rb +0 -64
  489. data/spec/integration/timezone_test.rb +0 -86
  490. data/spec/integration/transaction_test.rb +0 -354
  491. data/spec/integration/type_test.rb +0 -127
  492. data/spec/model/association_reflection_spec.rb +0 -803
  493. data/spec/model/associations_spec.rb +0 -4538
  494. data/spec/model/base_spec.rb +0 -817
  495. data/spec/model/class_dataset_methods_spec.rb +0 -146
  496. data/spec/model/dataset_methods_spec.rb +0 -198
  497. data/spec/model/eager_loading_spec.rb +0 -2262
  498. data/spec/model/hooks_spec.rb +0 -370
  499. data/spec/model/inflector_spec.rb +0 -26
  500. data/spec/model/model_spec.rb +0 -953
  501. data/spec/model/plugins_spec.rb +0 -318
  502. data/spec/model/record_spec.rb +0 -2107
  503. data/spec/model/spec_helper.rb +0 -45
  504. data/spec/model/validations_spec.rb +0 -193
  505. data/spec/model_no_assoc_spec.rb +0 -1
  506. data/spec/model_spec.rb +0 -1
  507. data/spec/plugin_spec.rb +0 -1
  508. data/spec/sequel_coverage.rb +0 -15
  509. data/spec/sequel_warning.rb +0 -4
  510. data/spec/spec_config.rb +0 -12
@@ -1,404 +0,0 @@
1
- = Deprecated Features
2
-
3
- * Symbol splitting is now deprecated by default. Sequel has
4
- split symbols since the very first version, but it has caused
5
- many problems over the years and while terse, it isn't
6
- intuitive to new Sequel users and causes significant
7
- problems when using databases that use double/triple
8
- underscores in identifiers.
9
-
10
- If you are using symbols with embedded double/triple
11
- underscores, such as:
12
-
13
- :table__column
14
- :column___alias
15
- :table__column___alias
16
-
17
- you either need to turn symbol splitting on by doing:
18
-
19
- Sequel.split_symbols = true
20
-
21
- or you need to convert the symbols to Sequel objects:
22
-
23
- Sequel[:table][:column]
24
- Sequel[:column].as(:alias)
25
- Sequel[:table][:column].as(:alias)
26
-
27
- Sequel ships with multiple extensions that make creation
28
- of those Sequel objects less verbose, so consider using
29
- the symbol_aref, symbol_aref_refinement, symbol_as,
30
- symbol_as_refinement, and/or s extensions.
31
-
32
- To automatically convert symbols with double/triple
33
- underscores to their Sequel object equivalents, you can
34
- use the sequel-unsplit tool available at
35
- https://github.com/jeremyevans/sequel-unsplit.
36
-
37
- This deprecation also affects virtual row block methods that use
38
- double underscores. For example:
39
-
40
- DB[:table].where{table__column > 3}
41
-
42
- should be changed to:
43
-
44
- DB[:table].where{table[:column] > 3}
45
-
46
- * Automatically treating plain strings passed to filtering/update
47
- methods as literal strings has been deprecated, with support moved
48
- to the auto_literal_strings extension. The automatic conversion
49
- of plain strings to literal SQL is the most common cause of
50
- SQL injections in applications using Sequel, since many methods
51
- pass their arguments down to the filtering methods, without
52
- considering whether the argument might be a string derived from
53
- user input. By requiring explicit marking of literal SQL strings,
54
- SQL injections are less likely and easier to audit for.
55
-
56
- This change means that unless you want to use the
57
- auto_literal_strings extension, code such as:
58
-
59
- DB[:table].where("a = 1")
60
- DB[:table].where("a > ?", 1)
61
-
62
- should to be converted to:
63
-
64
- DB[:table].where(Sequel.lit("a = 1"))
65
- DB[:table].where(Sequel.lit("a > ?", 1))
66
-
67
- or even better, avoid literal SQL completely by converting it to
68
- use equivalent Sequel expressions:
69
-
70
- DB[:table].where(:a => 1)
71
- DB[:table].where{a > 1}
72
-
73
- This change also affects passing Dataset#update a string:
74
-
75
- # Before
76
- DB[:table].update("a = a + 1")
77
-
78
- # Change to
79
- DB[:table].update(Sequel.lit("a = a + 1"))
80
- DB[:table].update(:a => Sequel[:a] + 1)
81
-
82
- Note that this deprecation does not affect cases where literal
83
- SQL is used for the entire query, such as when using any of the
84
- following:
85
-
86
- DB["SELECT * FROM foo"]
87
- DB.fetch("SELECT * FROM foo WHERE a = ?", 1)
88
- DB.dataset.with_sql("SELECT * FROM foo WHERE a = ?", 1)
89
-
90
- * Passing blocks to virtual row methods has been deprecated,
91
- with support moved to the virtual_row_method_block
92
- extension. Historically, passing blocks to virtual row methods
93
- changed how the methods were handled, but in recent years
94
- alternative methods have been added to get the same results.
95
- If you don't want to use the virtual_row_method_block extension,
96
- conversion is fairly simple:
97
-
98
- # WHERE a()
99
- # Before
100
- where{a{}}
101
- # Change to
102
- where{a.function}
103
-
104
- # SELECT count(*)
105
- # Before
106
- select{count(:*){}}
107
- # Change to
108
- select{count.function.*}
109
-
110
- # SELECT count(DISTINCT c)
111
- # Before
112
- select{count(:distinct, :c){}}
113
- # Change to
114
- select{count(:c).distinct}
115
-
116
- # SELECT sum(c) OVER (PARTITION BY a)
117
- # Before
118
- select{count(:over, :args=>c, :partition=>:a){}}
119
- # Change to
120
- select{count(:c).over(:partition=>:a)}
121
-
122
- * Model.set_allowed_columns and Model#{set,update}_{all,only}
123
- have been deprecated, with support moved to the
124
- whitelist_security plugin. These were the historical mass
125
- assignment methods supported by Sequel, but set_fields and
126
- update_fields have been recommended instead for many years.
127
-
128
- * Model.finder and .prepared_finder have been deprecated by default,
129
- with support moved to the finder plugin. Model.finder was
130
- originally added to make it easy to create optimized finder
131
- methods, but few Sequel users actually use it, so it makes more
132
- sense to move it to a plugin.
133
-
134
- * Model.def_dataset_method and Model.subset have been deprecated
135
- by default, with support moved to the def_dataset_method plugin.
136
- It's been recommended for many years to use Model.dataset_module
137
- to define dataset methods, instead of calling def_dataset_method
138
- and subset on the model class.
139
-
140
- * Using ` in virtual rows to create literal SQL is now deprecated,
141
- switch to using Sequel.lit instead:
142
-
143
- # Before
144
- DB[:table].where{`a = 1`}
145
- # Change to
146
- DB[:table].where(Sequel.lit('a = 1'))
147
-
148
- * Corner cases in argument handling in the filtering methods are now
149
- deprecated, including:
150
-
151
- * Ignoring a filtering method called without an argument or block.
152
- In Sequel 5, this will raise an exception.
153
-
154
- * Ignoring empty string arguments or other objects that respond to
155
- empty? and return true. In Sequel 5, only an empty array or hash
156
- will be ignored.
157
-
158
- * Ignoring an explicit nil argument when a block is passed. In
159
- Sequel 5, this will use a NULL filter.
160
-
161
- * Ignoring an explicit nil argument when there is no existing
162
- filter on the dataset. In Sequel 5, this will use a NULL
163
- filter.
164
-
165
- * Using a joined dataset as a Sequel::Model dataset is now
166
- deprecated. Such datasets should now be wrapped in a subquery.
167
- In Sequel 5, such datasets will automatically be wrapped in
168
- a subquery aliased to the first table.
169
-
170
- # Before
171
- Model.dataset = DB[:a].join(:b, :id=>:b_id)
172
- # Change to
173
- Model.dataset = DB[:a].join(:b, :id=>:b_id).from_self(:alias=>:a)
174
-
175
- * Model.first_where has been deprecated, Model.first should be used
176
- instead.
177
-
178
- * Database#log_yield is now deprecated. This does not affect any of
179
- the adapters that ship with Sequel, but external adapters that
180
- have not yet been updated to support #log_connection_yield will need
181
- to be updated.
182
-
183
- * The set_overrides extension is now deprecated. Anyone using it
184
- should consider supporting it as an external extension.
185
-
186
- * Many internal Database and Dataset regexp and string constants
187
- that were previously used internally have been deprecated.
188
- Additionally, some historical aliases for existing constants
189
- have also been deprecated, such as Sequel::Schema::Generator.
190
- Ruby 2.3+ is required to receive deprecation warnings related to
191
- these constants.
192
-
193
- * Passing model classes as the first argument to Dataset#join_table
194
- and Dataset#graph is now deprecated. Pass the model's table name
195
- or the model's datasets instead.
196
-
197
- * Passing model instances to Dataset#insert and #insert_sql is now
198
- deprecated. Call values on the model instance to get the values
199
- hash, and pass that as the argument instead.
200
-
201
- * Calling Dataset#set_graph_aliases before Dataset#graph is now
202
- deprecated. Dataset#set_graph_aliases should now be called
203
- after Dataset#graph, not before.
204
-
205
- * The sequel/no_core_ext file is deprecated. Sequel hasn't loaded
206
- the core extensions by default since Sequel 3. You can use the
207
- following if you want to support both Sequel 3 and Sequel 5:
208
-
209
- begin
210
- require 'sequel/no_core_ext'
211
- rescue LoadError
212
- require 'sequel'
213
- end
214
-
215
- * Database#pragma_get and #pragma_set on SQLite are now deprecated,
216
- along with any method that calls them, such as auto_vacuum,
217
- temp_store, foreign_keys, case_sensitive_like, synchronous, and
218
- their setter methods. To set these pragrams for all SQLite
219
- database connections, the appropriate options should be passed
220
- when creating the Database instance.
221
-
222
- * Automatically looking up the dataset class for a Database
223
- instance by looking for a DatasetClass constant in the Database's
224
- class is now deprecated. All adapters that ship with Sequel have
225
- been converted, but external adapters should now define the
226
- Database#dataset_class_default private method appropriately
227
- to return the correct dataset class.
228
-
229
- * Calling Model.db= on a model with a dataset is now deprecated.
230
- If a model already has a dataset, you must now use set_dataset
231
- or dataset= to change the dataset, not db=.
232
-
233
- * Sequel::SQL::Expression#sql_literal and #lit are now deprecated.
234
- These aren't used internally and aren't expected to be used
235
- externally.
236
-
237
- * {Integer,Timestamp}Migrator::DEFAULT_SCHEMA_{COLUMN,TABLE}
238
- are now deprecated. They have been replaced by
239
- default_schema_column and default_schema_table instance methods.
240
-
241
- * Passing a Schema::CreateTableGenerator instance as the
242
- second argument to Database#create_table is now
243
- deprecated. Database#create_table still supports passing the
244
- generator via the :generator option.
245
-
246
- * Passing a second argument to Database#alter_table is now
247
- deprecated.
248
-
249
- * Sequel::BasicObject.remove_methods! is now deprecated. It has
250
- always been a no-op on ruby 1.9+.
251
-
252
- * Referencing the PG_NAMED_TYPES constant in your code is now
253
- deprecated. Previously, adding entries to the PG_NAMED_TYPES
254
- was deprecated, but no deprecation message would be issued by
255
- referencing the constant.
256
-
257
- * The conversion of - to _ in adapter schemes is now deprecated.
258
- This does not affect any internal adapters, but it may affect
259
- external ones.
260
-
261
- * The Database#jdbc_* methods in the jdbc/db2 adapter (e.g.
262
- jdbc_tables) are now deprecated. Call the regular versions
263
- instead (e.g. tables).
264
-
265
- * Dataset#_filter and #_filter_or_exclude private methods have
266
- been deprecated. If you have an extension that was calling these
267
- methods, switch to the new #add_filter private method.
268
-
269
- = New Features
270
-
271
- * The class_table_inheritance plugin now supports an :alias option.
272
- If provided, this wraps subclass datasets in subqueries, avoiding
273
- problems with ambiguous columns and cases where the wrong table
274
- name is used. Due to the deprecation of joined datasets for
275
- models, use of the class_table_inheritance plugin without this
276
- :alias option will result in deprecation warnings. In Sequel 5,
277
- class_table_inheritance will default to using an :alias option
278
- with the same as the name of the parent table.
279
-
280
- * The Dataset#sqltime_precision private method has been added.
281
- Adapters can use override this if the precision for time values
282
- is different from the precision for timestamp values. Sequel
283
- uses this support on Microsoft SQL Server, so that time values
284
- now support microsecond precision, instead of millisecond
285
- precision.
286
-
287
- = Other Improvements
288
-
289
- * Sequel::Model classes that use a SQL::Identifier or
290
- SQL::QualifiedIdentifier FROM table value will now use optimized
291
- lookups and deletes, just as is done for those that use a
292
- Symbol or String.
293
-
294
- * Dataset#simple_select_all? now handles aliased subqueries
295
- correctly, returning false instead of true.
296
-
297
- * If Sequel.application_timezone is set to :utc,
298
- Sequel::SQLTime.create will create instances using utc time
299
- instead of local time.
300
-
301
- * If there is an exception while rolling back a transaction when
302
- using the :rollback=>:always option, the exception is now
303
- raised instead of being ignored.
304
-
305
- * If a migration file does not contain a migration or contains
306
- multiple migrations, the exception raised will now include
307
- the file name in the exception message.
308
-
309
- * In the jdbc/sqlserver adapter, time values with fractional
310
- seconds and datetimeoffset values are now handled better when
311
- using some versions of the underlying JDBC driver.
312
-
313
- * An additional disconnect error is recognized when using the
314
- mysql and mysql2 adapters.
315
-
316
- * Dataset#full_text_search on Microsoft SQL Server now works
317
- correctly if the no_auto_literal_strings extension is used.
318
-
319
- * Calling Database#disconnect when using the single connection
320
- pool without an active connection works correctly again. It was
321
- broken starting in 4.43.0 during changes to implement
322
- Database#freeze.
323
-
324
- * Model class methods are no longer added for private methods
325
- defined in a dataset_module block. Previously, a public model
326
- class method was defined, but it would raise an error when
327
- called.
328
-
329
- * Fixnum is no longer referenced in the sqlanywhere shared
330
- adapter, fixing deprecation warnings on ruby 2.4.
331
-
332
- * Sequel no longer uses constants for building SQL queries,
333
- relying on frozen string literal support for better
334
- performance on ruby 2.3+. However, this decreases SQL
335
- query building performance on ruby <2.3. For the fastest
336
- SQL query building, update to a recent version of ruby.
337
-
338
- * Sequel no longer ignores an empty object argument to a
339
- filtering method if a block is provided. Previously,
340
- this could raise an exception or produce invalid SQL.
341
-
342
- * Many small modifications were made to reduce array
343
- allocations, providing minor speedups.
344
-
345
- * Internal use of Array#at has been replaced with Array#[],
346
- providing minor speedups on recent ruby versions.
347
-
348
- * The jdbc/db2 adapter no longer adds jdbc_* methods to
349
- JDBC::Database.
350
-
351
- * Sequel no longer issues deprecation warnings on ruby 1.8.7.
352
- Sequel 5 will drop support for ruby 1.8.7, and it doesn't make
353
- sense to issue a deprecation warning if you couldn't upgrade
354
- anyway.
355
-
356
- = Backwards Compatibility
357
-
358
- * When specifying the :fields option to a nested_attributes
359
- setter, set_fields is now used internally instead of set_only.
360
- set_fields has been recommended over set_fields since it's
361
- introduction in Sequel 3.12, but nested_attributes was added
362
- in Sequel 3.4, before set_fields was available. The result
363
- of this change is that if additional fields are provided that
364
- do not match the fields in the :fields option, they will be
365
- ignored instead of an exception being raised.
366
-
367
- * When specifying a function name using a Sequel::SQL::Identifier
368
- instance, the function name is no longer quoted unless
369
- Sequel::SQL::Function#quoted is used to create a quoted
370
- function. The reason for this is to make converting virtual
371
- row method block code easier.
372
-
373
- # Before
374
- Sequel.function(Sequel[:a]) # "a"()
375
-
376
- # Now
377
- Sequel.function(Sequel[:a]) # a()
378
- Sequel.function(Sequel[:a]).quoted # "a"()
379
-
380
- * When passing an SQL::PlaceholderLiteralString instance to a
381
- dataset filtering method, the placeholder string is now always
382
- wrapped in parentheses:
383
-
384
- ds.where(Sequel.lit('? OR ?', :a, :b)).where(:c)
385
- # Before: WHERE a OR b AND c
386
- # Now: WHERE (a OR b) AND c
387
-
388
- This is more of a bugfix than a backwards compatibility issue,
389
- but is listed in the backwards compatibility section as there
390
- may be applications that could break due to this change.
391
-
392
- * Model.subset now calls Model.dataset_module.subset, instead of
393
- the other way around. If your code depends on this, you will
394
- need to make modifications.
395
-
396
- * The private Database#column_definition_order method no longer
397
- uses const_get(:COLUMN_DEFINITION_ORDER). External adapters
398
- that defined COLUMN_DEFINITION_ORDER but did not override
399
- this method must now override this method.
400
-
401
- * The private Database#native_function_name method no longer
402
- uses const_get(:EMULATED_FUNCTION_MAP). External adapters
403
- that defined EMULATED_FUNCTION_MAP but did not override
404
- this method must now override this method.
@@ -1,56 +0,0 @@
1
- = Deprecated Features
2
-
3
- * Setting an invalid dataset for a model is now deprecated.
4
- Historically, Sequel has swallowed exceptions for this to keep
5
- backwards compatibility, but it generally just results in code
6
- breaking later. To allow invalid datasets to be used:
7
-
8
- Sequel::Model.require_valid_table = false
9
-
10
- * The association_autoreloading and many_to_one_pk_lookup plugins
11
- are now deprecated. They were moved from plugins to standard
12
- model behavior in Sequel 4.0, and have been no-ops since.
13
-
14
- * The pg_typecast_on_load plugin is now deprecated. It is only useful
15
- on the already deprecated do and swift adapters.
16
-
17
- = New Features
18
-
19
- * Database#with_server in the server_block extension now accepts an
20
- optional second argument for the read only server to use. This
21
- allows for overriding the default server while providing a separate
22
- default for read only queries:
23
-
24
- DB.with_server(:server1, :server1ro) do
25
- DB[:a].all # Uses server1ro
26
- DB[:b].insert(1) # Uses server1
27
- end
28
-
29
- * Model.default_association_type_options has been added, allowing the
30
- ability to set default options per association type. This can be
31
- used to make some association types read_only by default:
32
-
33
- opts = Sequel::Model.default_association_type_options
34
- opts[:one_to_many] = opts[:many_to_many] = {:read_only=>true}
35
-
36
- * Database#views on PostgreSQL now accepts a :materialized option to
37
- return materialized views instead of regular views.
38
-
39
- = Other Improvements
40
-
41
- * Setting Sequel::Model.require_valid_table = true no longer raises
42
- an exception when using a valid dataset that selects from a subquery
43
- or table returning function or uses a join.
44
-
45
- * The defaults_setter plugin now inherits any custom default
46
- values when subclassing.
47
-
48
- * The schema_dumper extension now handles Oracle 11g XE behavior of
49
- appending not null to the database type.
50
-
51
- = Backwards Compatibility
52
-
53
- * External callers of Database#check_non_connection_error (private
54
- method) should update their code to call it with a true or false
55
- argument specifying whether to raise an error for exceptions that
56
- are not connection errors.