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,87 +0,0 @@
1
- = New Features
2
-
3
- * Database#freeze has now been implemented. It is now recommended
4
- to use it in production and during testing, after loading
5
- extensions and making other changes to Database state. Once frozen,
6
- the Database settings cannot be modified, but the Database can
7
- execute queries and return results. By freezing the Database, you
8
- gain greater thread-safety assurance and will be alerted via an
9
- exception if runtime code attempts to modify Database state.
10
-
11
- = Other Improvements
12
-
13
- * Model#refresh now uses the same optimization that Model.with_pk
14
- uses, resulting in faster refreshing for most models.
15
-
16
- * The prepared_statements plugin no longer automatically uses
17
- prepared statements in cases where it is likely to be slower.
18
- Now, prepared statements are only used by default for INSERT
19
- and UPDATE statements (and DELETE on Oracle and DB2). This
20
- change was made after benchmarking showed that using prepared
21
- statements for primary key lookups, refreshes, and deletes is
22
- significantly slower than non-prepared statements across almost
23
- all adapters.
24
-
25
- * Database#extension no longer attempts to load the same extension
26
- more than once.
27
-
28
- * The timestamp migrator now handles key length limitations when
29
- using MySQL with InnoDB engine and utf8mb4 charset default.
30
-
31
- * The jdbc/sqlite adapter will now use SQLite result codes for
32
- more accurate exception types, if the jdbc-sqlite driver
33
- supports them.
34
-
35
- * dataset_module is now inherited correctly if using the
36
- single_table_inheritance plugin. This was broken in 4.42.0,
37
- and fixed in 4.42.1.
38
-
39
- * The prepared_statements plugin now respects a server specified
40
- for the model instance, instead of always using the default
41
- server.
42
-
43
- * The prepared_statements_associations plugin now respects a
44
- server specified for the model instance if using the sharding
45
- plugin, instead of always using the default server.
46
-
47
- * The prepared_statements_associations plugin now works correctly
48
- when using some instance-specific associations, such as
49
- many_to_one associations using a nil :key option.
50
-
51
- * The prepared_statements_with_pk plugin now respects a server
52
- specified for the dataset, instead of always using the default
53
- server.
54
-
55
- * Model#freeze now freezes the associations hash after validating
56
- the model instance, instead of before, fixing cases where
57
- validation calls association methods.
58
-
59
- * Sequel no longer continually tries to determine the server
60
- version on HSQLDB, if the first attempt fails.
61
-
62
- * The mock adapter now uses a thread-safe incrementor for autoid.
63
-
64
- * Mysql2 native prepared statement support now better handles
65
- sharding where connection options differ per shard.
66
-
67
- * On Oracle, Database#sequence_for_table is now thread-safe.
68
-
69
- * On PostgreSQL, Database#type_supported? is now thread-safe.
70
-
71
- * On MySQL, Database#supports_timestamp_usecs? now correctly
72
- memoizes false values.
73
-
74
- * The jdbc/postgresql adapter now works correctly if the
75
- pg_hstore extension is loaded first.
76
-
77
- = Backwards Compatibility
78
-
79
- * Maintainers of external adapters and Database extensions
80
- should update their code to support Database#freeze.
81
-
82
- * Code that relies on Database extensions being loaded multiple
83
- times if called multiple times needs to be updated, because
84
- now the extension only gets loaded the first time
85
- Database#extension is called.
86
-
87
- * @enum_labels in the pg_enum extension is now frozen by default.
@@ -1,125 +0,0 @@
1
- = New Features
2
-
3
- * Model.freeze is now supported and recommended in production and
4
- during testing. It freezes all class-level metadata, preventing
5
- possible thread-safety issues at runtime.
6
-
7
- * Model.finalize_associations has been added, speeding up some
8
- association reflection methods by about 10x. This method
9
- should be called after all associated models have been loaded.
10
- This can speed up the retrieval of associated objects for small
11
- datasets by 5-10%.
12
-
13
- One advantage of using this is it will raise an exception if it
14
- recognizes that any of your associations are not defined
15
- correctly, such as referencing an associated class that doesn't
16
- exist.
17
-
18
- * Model.freeze_descendents has been added to the subclasses plugin.
19
- This method finalizes associations for all descendent classes,
20
- then freezes the descendent class. It's designed to make it
21
- easy to freeze all model classes in use:
22
-
23
- Sequel::Model.plugin :subclasses
24
- Dir['./models/*.rb'].each{|f| require f}
25
- Sequel::Model.freeze_descendents
26
-
27
- * An implicit_subquery dataset extension has been added, which
28
- implicitly uses a subquery if you have a dataset with raw SQL and
29
- you call a method that would modify the SQL used:
30
-
31
- DB['SELECT * FROM foo'].where(:bar=>1)
32
- # SELECT * FROM foo
33
-
34
- DB.extension :implicit_subquery
35
- DB['SELECT * FROM foo'].where(:bar=>1)
36
- # SELECT * FROM (SELECT * FROM foo) AS t1 WHERE (bar = 1)
37
-
38
- * Model datasets now have where_all, where_each, and
39
- where_single_value methods for returning data:
40
-
41
- class Album < Sequel::Model; end
42
- Album.where_all(:id=>[1,2,3])
43
- # => [Album[1], Album[3], Album[2]]
44
-
45
- Album.where_each(:id=>[1,2,3]) do |album|
46
- # ...
47
- end
48
-
49
- Album.select(:name).where_single_value(:id=>1)
50
- # "Album's Name"
51
-
52
- These methods are designed for use by other dataset methods you
53
- define, and are optimized for frozen datasets if the methods will
54
- be called multiple times on the same dataset. where_all and
55
- where_each can increase performance by up to 40% for small datasets
56
- compared to where.all and where.each. where_single_value can be up
57
- to twice as fast as where.single_value.
58
-
59
- * Model.dataset_module now supports an eager method for eager loading:
60
-
61
- class Album < Sequel::Model
62
- many_to_one :artist
63
-
64
- dataset_module do
65
- eager :with_artist, :artist
66
- end
67
- end
68
-
69
- Album.with_artist.all # eagerly loads artist association
70
-
71
- = Other Improvements
72
-
73
- * The jdbc adapter now supports Database#freeze. Possible
74
- thread-safety issues when initializing multiple jdbc Database
75
- instances in separate threads at the same time have been fixed.
76
-
77
- * The postgres adapter now raises an exception if it recognizes that
78
- the loaded version of sequel_pg is incompatible.
79
-
80
- * Sequel classes that are subclasses of core classes now define
81
- custom #inspect methods so instances can easily be differentiated from
82
- core class instances. For example:
83
-
84
- Sequel::SQL::Blob.new('a')
85
- # => #<Sequel::SQL::Blob:0xa6f3a3c3710 bytes=1 content="a">
86
- Sequel::SQLTime.now
87
- # => #<Sequel::SQLTime 10:03:06>
88
- Sequel::LiteralString.new("foo")
89
- # => #<Sequel::LiteralString "foo">
90
- class Album < Sequel::Model; end
91
- Album.many_to_one :artist
92
- # => #<Sequel::Model::Associations::ManyToOneAssociationReflection Album.many_to_one :artist>
93
- Sequel::SQL::ValueList.new([[1,2]])
94
- # => #<Sequel::SQL::ValueList [[1, 2]]>
95
-
96
- * Dataset#from_self now copies the columns from the current dataset
97
- if they are present, since wrapping a dataset in a subquery should
98
- not change the columns returned.
99
-
100
- * On PostgreSQL, array type conversion now correctly handles false
101
- values.
102
-
103
- * Another disconnect error is now recognized by the jdbc/as400
104
- adapter.
105
-
106
- * Modifications to Sequel::Model::Associations::ASSOCIATION_TYPES
107
- are now thread safe, fixing issues if separate threads attempt
108
- to load separate model plugins that modify this hash.
109
-
110
- * The force_encoding plugin no longer modifies the encoding of
111
- Sequel::SQL::Blob instances.
112
-
113
- * Many plugins were updated so they no longer add constants to the
114
- namespace of the model that loads them.
115
-
116
- = Backwards Compatibility
117
-
118
- * Maintainers of external model plugins should update their
119
- code to support Model.freeze.
120
-
121
- = Upcoming Deprecation
122
-
123
- * Starting in Sequel 4.45.0, Sequel will be adding deprecation
124
- warnings for features that will be removed or where behavior will
125
- change in Sequel 5.
@@ -1,370 +0,0 @@
1
- = Deprecated Features
2
-
3
- * Dataset mutation is now deprecated. Users should switch to using
4
- the non-mutating methods.
5
-
6
- # Instead of:
7
- dataset.where!(:foo)
8
- # Switch to:
9
- dataset = dataset.where(:foo)
10
-
11
- * Support for the Cubrid, Firebird, Informix, and Progress databases
12
- has been deprecated. Any users of this support should consider
13
- creating an external adapter with the current code and maintaining
14
- such support themselves.
15
-
16
- * The do (DataObjects), swift, and jdbc/as400 adapters have been
17
- deprecated. Any users of these adapters should consider creating an
18
- external adapter with the current code and maintaining the adapter
19
- themselves.
20
-
21
- * Model transaction hooks (after_commit, after_rollback,
22
- after_destroy_commit, after_destroy_rollback) are now deprecated.
23
- Users should switch to calling the after_commit and after_rollback
24
- database transaction hooks directly.
25
-
26
- # Instead of:
27
- def after_commit
28
- super
29
- do_something
30
- end
31
- # Switch to:
32
- def after_save
33
- super
34
- db.after_commit{do_something}
35
- end
36
-
37
- * Passing a block to Database#from is now deprecated. For backwards
38
- compatibility, this block affected the WHERE clause instead of the
39
- FROM clause. In Sequel 5, Database#from blocks will be treated like
40
- Dataset#from blocks, and will affect the FROM clause. This behavior
41
- has been available for years by using the from_block extension.
42
-
43
- # Instead of:
44
- DB.from(:foo){a > b}
45
- # Switch to:
46
- DB.from(:foo).where{a > b}
47
-
48
- * Passing non-hash arguments and multiple arguments to the
49
- model association methods is now deprecated. Switch to using a
50
- hash as an argument.
51
-
52
- # Instead of:
53
- model.association(true)
54
- model.association(proc{|ds| ds.where(:foo)})
55
- # Switch to:
56
- model.association(:reload=>true)
57
- model.association(:callback=>proc{|ds| ds.where(:foo)})
58
- model.association{|ds| ds.where(:foo)}
59
-
60
- * Passing procs as filter arguments is now deprecated. These should
61
- now be passed as blocks instead of arguments.
62
-
63
- # Instead of:
64
- dataset.where(proc{foo > bar})
65
- # Switch to:
66
- dataset.where{foo > bar}
67
-
68
- * Passing multiple arguments or an array as filter arguments when the
69
- array/arguments does not represent a conditions specifier (array of
70
- two element arrays, treated like a hash) is now deprecated. Switch
71
- to calling the filter method separately with each argument or using
72
- Sequel.& to combine the arguments:
73
-
74
- # Instead of:
75
- dataset.where(:foo, :bar)
76
- dataset.where([:foo, :bar])
77
- # Switch to:
78
- dataset.where(:foo).where(:bar)
79
- dataset.where(Sequel.&(:foo, :bar))
80
-
81
- * Returning false from model before hooks to cancel an action is
82
- now deprecated. Switch to calling cancel_action instead.
83
-
84
- # Instead of:
85
- def before_save
86
- return false if something
87
- super
88
- end
89
- # Switch to:
90
- def before_save
91
- cancel_action('something bad') if something
92
- super
93
- end
94
-
95
- * Database#each_server has been deprecated. Switch to using
96
- Database#servers and Database#with_server from server_block
97
- extension:
98
-
99
- # Instead of:
100
- DB.each_server{|db| db.run("foo")}
101
- # Switch to:
102
- DB.extension :server_block
103
- DB.servers.each{|s| DB.with_server(s){DB.run("foo")}}
104
-
105
- * Calling Database#add_servers and Database#remove_servers on a
106
- database that does not use the :servers option is now deprecated.
107
- Currently, the calls to add_servers and remove_servers are
108
- ignored for such databases, which can hide errors.
109
-
110
- * Sequel::Postgres::PG_NAMED_TYPES is now deprecated. Switch to
111
- calling Database#add_named_conversion_proc instead.
112
-
113
- # Instead of:
114
- require 'sequel/adapters/utils/pg_types'
115
- Sequel::Postgres::PG_NAMED_TYPES[:foo] = lambda{|v| v}
116
- DB = Sequel.connect('postgres://...')
117
- # Switch to:
118
- DB = Sequel.connect('postgres://...')
119
- DB.add_named_conversion_proc(:foo){|v| v}
120
-
121
- * Modifying the identifier mangling settings for a Database or
122
- Dataset is now deprecated unless the identifier_mangling extension
123
- is explicitly loaded into the Database instance.
124
-
125
- * The Sequel::Database.single_threaded accessor is now deprecated.
126
- Switch to using Sequel.single_threaded= and Sequel.single_threaded?.
127
-
128
- * Sequel::Database.identifier_input_method,
129
- Sequel::Database.identifier_output_method,
130
- and Sequel::Database.quote_identifier accessors are now deprecated.
131
- Switch to modifying the setting for each Database instance.
132
-
133
- * Sequel.identifier_input_method=, Sequel.identifier_output_method=,
134
- and Sequel.quote_identifer= setter methods are now deprecated.
135
- Switch to modifying the setting for each Database instance.
136
-
137
- * Calling Dataset#delete/update/truncate on datasets with limits
138
- or offsets is now deprecated, unless the database will respect
139
- the limit or offset. Currently, only MySQL and Microsoft SQL
140
- Server have limited support for such deletes and updates. You
141
- should either call unlimited or skip_limit_check before calling
142
- delete/update/truncate.
143
-
144
- * Deprecate having duplicate column names in subclass tables when
145
- using the class_table_inheritance plugin. The documentation has
146
- warned against this for a long time, but the code did not enforce
147
- it.
148
-
149
- * When using the association_pks plugin setter methods without the
150
- :delay_pks association option set, a warning is now issued. In
151
- Sequel 5, the default will be to assume that the :delay_pks
152
- option is :always, and not to make modifications until the object
153
- is saved. If you would like to keep the current behavior, set
154
- the :delay_pks=>false association option.
155
-
156
- The current :delay_pks=>true behavior will be removed in Sequel 5,
157
- with it being treated like :delay_pks=>:always. If you are relying
158
- on the current behavior of :delay_pks=>true (delay for new objects,
159
- immediate for existing objects), you will need to update your code.
160
-
161
- * Database#dup/clone are now deprecated. They have never been
162
- handled correctly, since the default implementation from Kernel
163
- has been used.
164
-
165
- * Model.dup/clone are now deprecated. They have never been
166
- handled correctly, as the default implemenation from Kernel/Module
167
- has been used.
168
-
169
- * Database#use on MySQL is now deprecated. Switch to creating a new
170
- Database instance instead of modifying the database for an existing
171
- instance.
172
-
173
- * Database#database_name on MySQL is now deprecated. Switch to asking
174
- the database server which database you are connected to:
175
-
176
- # Instead of:
177
- DB.database_name
178
- # Switch to:
179
- DB.get{DATABASE{}}
180
-
181
- * In the lazy_attributes, nested_attributes, composition, and
182
- serialization plugins, the *_module accessors are now deprecated.
183
- These were implementation details that should not have been
184
- exposed.
185
-
186
- * The schema plugin is now deprecated. Switch to defining the schema
187
- before creating the model class using the Database schema methods.
188
-
189
- * The scissors plugin is deprecated. It existed for compatibility
190
- with Sequel 3, but it is dangerous as it makes it easier to modify
191
- all rows when the intent was to modify a single row.
192
-
193
- * The prepared_statements_associations and prepared_statements_with_pk
194
- plugins are now deprecated. These plugins generally make things
195
- slower.
196
-
197
- * Dataset#unbind, Sequel::Unbinder, and Sequel::UnbindDuplicate are
198
- now deprecated. This mostly existed to support the
199
- prepared_statements_associations and prepared_statements_with_pk
200
- plugins.
201
-
202
- * Sequel::Error::* exception class aliases are now deprecated. Switch
203
- to using the exception classes in the Sequel namespace.
204
-
205
- * Sequel::BeforeHookFailed is now deprecated. Switch to using
206
- Sequel::HookFailed.
207
-
208
- * Calling Sequel::Qualifier.new with 2 arguments is now deprecated.
209
- Users should switch to calling it with a single argument (the
210
- table used for qualifying unqualified identifiers).
211
-
212
- * Treating unrecognized prepared statement types as :select is now
213
- deprecated. Switch to using :select as the prepared statement
214
- type.
215
-
216
- * The @was_new instance variable available in model after_save hooks
217
- is now deprecated. There is no deprecation warning associated
218
- with this change.
219
-
220
- # Instead of:
221
- def after_save
222
- super
223
- if @was_new
224
- do_something
225
- else
226
- do_something_else
227
- end
228
- end
229
- # Switch to:
230
- def after_create
231
- super
232
- do_something
233
- end
234
- def after_update
235
- super
236
- do_something_else
237
- end
238
-
239
- * The @columns_updated instance variable available in model
240
- after_save and after_update hooks is deprecated. Switch to
241
- using the new columns_updated plugin and calling the
242
- columns_updated method.
243
-
244
- * The Sequel.cache_anonymous_models accessor has been deprecated.
245
- Switch to using Sequel::Model.cache_anonymous_models.
246
-
247
- * Sequel::Model::ANONYMOUS_MODEL_CLASSES and
248
- Sequel::Model::ANONYMOUS_MODEL_CLASSES_MUTEX have been
249
- deprecated.
250
-
251
- * Sequel::Database::ResetIdentifierMangling has been deprecated.
252
-
253
- = New Features
254
-
255
- * A validation_contexts plugin has been added, which adds support
256
- for a :validation_context option to Model#save and Model#valid?.
257
- The value for this option will be available via the
258
- validation_context method inside the validation hooks and
259
- validate method.
260
-
261
- class Album < Sequel::Model
262
- plugin :validation_contexts
263
-
264
- def validate
265
- super
266
- if validation_context == :approve
267
- errors.add(:status_id, 'not 42') unless status_id == 42
268
- end
269
- end
270
- end
271
-
272
- album = Album.first
273
- album.status_id = 41
274
- album.valid?(:validation_context=>:approve) # => false
275
- album.status_id = 42
276
- album.valid?(:validation_context=>:approve) # => true
277
-
278
- * A columns_updated plugin has been added, allowing you to get
279
- access to the hash used for updating a model instance via the
280
- columns_updated method:
281
-
282
- class Album < Sequel::Model
283
- plugin :columns_updated
284
-
285
- def after_update
286
- super
287
- if columns_updated.has_key?(:foo)
288
- do_something(columns_updated[:foo])
289
- end
290
- end
291
- end
292
-
293
- * Dataset#delete on Microsoft SQL Server now respects limits. Note
294
- that Microsoft SQL Server does not respect orders for deletes, only
295
- limits, which makes this support not very useful. Currently a
296
- deprecation warning will be issued when using a delete with an
297
- order and a limit, and in Sequel 5 an exception will be raised.
298
-
299
- * An odbc/oracle subadapter has been added.
300
-
301
- * A Model.dataset_module_class accessor has been added, allowing
302
- plugins to add support for custom behavior in dataset_module blocks.
303
-
304
- * Support for deprecating constants on Ruby 2.3+ has been added.
305
- Note that you will only get warnings for deprecated constant
306
- use if you are running on Ruby 2.3+. If you are running on a
307
- previous version of Ruby, you should scan your code manually for
308
- deprecated constant use.
309
-
310
- = Other Improvements
311
-
312
- * Using Model#cancel_action inside validation hooks now works
313
- correctly when Model#valid? is called.
314
-
315
- * Model#[] now handles columns with false values correctly when using
316
- the split_values plugin.
317
-
318
- * When calling Dataset#union/intersect/except on a dataset with
319
- an offset but no limit, the dataset is wrapped in a subquery, just
320
- like a dataset with a limit.
321
-
322
- * The dumping of 64-bit autoincrementing primary key columns by the
323
- schema_dumper extension is now handled correctly when using the
324
- :same_db option.
325
-
326
- * The schema_dumper extension now supports the :schema option when
327
- dumping schema.
328
-
329
- * On Microsoft SQL Server and SQLAnywhere, ORDER BY clauses now come
330
- after UNION/INTERSECT/EXCEPT instead of before, fixing issues when
331
- the :from_self=>false option is used with union/intersect/except
332
- and an order is applied afterward.
333
-
334
- * On Microsoft SQL Server, if calling Dataset#union/intersect/except
335
- on a dataset with an order and without a limit or offset, the order
336
- is removed. When using UNION/INTERSECT/EXCEPT, Microsoft SQL
337
- Server does not guarantee any ordering unless you specify an order
338
- for the compound dataset. As a general rule, you should always
339
- apply orders after compounds instead of before.
340
-
341
- * On Microsoft SQL Server <2012, when using a dataset with an offset
342
- without a limit in a UNION/INTERSECT/EXCEPT query, Sequel now uses
343
- TOP (100) PERCENT to work around the limitation that using orders
344
- in subqueries is not supported unless there is a limit (offsets
345
- are emulated by a ROW_NUMBER window function with an order in this
346
- case).
347
-
348
- * Database#indexes on MySQL now handles qualified identifiers.
349
-
350
- * Sequel now literalizes Sequel::SQLTime instances with 3 fractional
351
- digits in the jdbc/postgresql adapter, fixing issues on JRuby
352
- 9.1.8.0+ (the first JRuby version to support greater than
353
- millisecond precision).
354
-
355
- = Backwards Compatibility
356
-
357
- * When using the association_proxies plugin and passing a block when
358
- loading the plugin, the :proxy_argument option in hash passed to
359
- the block is now an empty hash instead of nil if no argument was
360
- given to the association method.
361
-
362
- * The private Model#_valid? method now takes a single options hash
363
- argument, instead of 2 arguments.
364
-
365
- * The pg_hstore extension no longer modifies PG_NAMED_TYPES. This
366
- should not affect behavior if the pg_hstore extension is loaded
367
- into the Database instance.
368
-
369
- * Support for pg <0.8.0 has been dropped. pg 0.8.0 was released in
370
- January 2008.