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,179 +0,0 @@
1
- = New Features
2
-
3
- * A Sequel.split_symbols setting has been added. This setting is
4
- true by default, so there is no change to backwards compatibility
5
- by default. However, users can now do:
6
-
7
- Sequel.split_symbols = false
8
-
9
- to disable the splitting of symbols. This will make Sequel no
10
- longer treat symbols with double or triple underscores as qualified
11
- or aliased identifiers, instead treating them as plain identifiers.
12
- It will also make Sequel no longer treat virtual row methods with
13
- double underscores as qualified identifiers. Examples:
14
-
15
- # Sequel.split_symbols = true
16
- :column # "column"
17
- :table__column # "table"."column"
18
- :column___alias # "column" AS "alias"
19
- :table__column___alias # "table"."column" AS "alias"
20
- Sequel.expr{table__column} # "table"."column"
21
-
22
- # Sequel.split_symbols = false
23
- :column # "column"
24
- :table__column # "table__column"
25
- :column___alias # "column___alias"
26
- :table__column___alias # "table__column___alias"
27
- Sequel.expr{table__column} # "table__column"
28
-
29
- Disabling symbol splitting can make things much easier if leading
30
- trailing, double, or triple underscores are used in identifiers
31
- in your database.
32
-
33
- Disabling symbol splitting makes Sequel simpler, even if it does
34
- make it slightly less easy to create qualified and aliased
35
- identifiers. It is possible that the symbol splitting will be
36
- disabled by default starting in Sequel 5.
37
-
38
- Note that due to Database symbol literal caching, you should not
39
- change the Sequel.split_symbols setting after creating a
40
- Database instance.
41
-
42
- * SQL::Identifier#[] and SQL::QualifiedIdentifier#[] have been added
43
- for creating qualified identifiers. This makes it easier and more
44
- natural to create qualified identifiers from existing identifiers.
45
- Previously, you could do:
46
-
47
- Sequel[:column].qualify(:table)
48
-
49
- You can now use the more natural:
50
-
51
- Sequel[:table][:column]
52
-
53
- This can also be used in virtual rows:
54
-
55
- Sequel.expr{table[:column]}
56
-
57
- This offers a easy way to create qualified identifers when symbol
58
- splitting has been disabled.
59
-
60
- * A symbol_aref extension has been added, allowing the use of
61
- Symbol#[] to create qualified identifiers if passed a Symbol,
62
- SQL::Identifier, or SQL::QualifiedIdentifier. This doesn't
63
- break any existing ruby behavior, as ruby currrently raises
64
- an exception in such cases. Example:
65
-
66
- :table[:column] # "table"."column"
67
-
68
- This extension can make it easier to create qualified identifiers
69
- if symbol splitting is disabled.
70
-
71
- A symbol_aref_refinement extension has also been added, which
72
- adds a refinement version of the extension that can be enabled via:
73
-
74
- using Sequel::SymbolAref
75
-
76
- * A symbol_as extension has been added, which adds the Symbol#as method
77
- to create aliased identifiers. This was previously part of the core
78
- extensions, but has been separated so it can be included by itself.
79
- Example:
80
-
81
- :column.as(:alias) # "column" AS "alias"
82
-
83
- This extension can make it easier to create aliased identifiers if
84
- symbol splitting is disabled.
85
-
86
- A symbol_as_refinement extension has also been added, which
87
- adds a refinement version of the extension that can be enabled via:
88
-
89
- using Sequel::SymbolAs
90
-
91
- * An s extension has been added, which adds the Sequel::S module,
92
- containing a private #S method that calls Sequel.expr. You can
93
- include this module in any module or class where you would like the
94
- S method to be available:
95
-
96
- class Album < Sequel::Model
97
- extend Sequel::S
98
- one_to_many :tracks, :order=>S(:number).desc
99
- end
100
-
101
- You can include this in Object if you want the S method to be
102
- available globally:
103
-
104
- Object.send(:include, Sequel::S)
105
-
106
- Sequel::S also works if it is used as a refinement, adding the S
107
- method to Object while the refinement is active:
108
-
109
- using Sequel::S
110
-
111
- This extension can make it easier to create qualified and aliased
112
- identifiers if symbol splitting is disabled:
113
-
114
- S(:table)[:column]
115
- S(:column).as(:alias)
116
-
117
- * Dataset#insert_conflict on PostgreSQL now supports a :conflict_where
118
- option, allowing for the handling of insert conflicts when using a
119
- partial unique index:
120
-
121
- DB[:table].insert_conflict(:target=>:a,
122
- :conflict_where=>{:c=>true}).insert(:a=>1, :b=>2)
123
- # INSERT INTO TABLE (a, b) VALUES (1, 2)
124
- # ON CONFLICT (a) WHERE (c IS TRUE) DO NOTHING
125
-
126
- = Other Improvements
127
-
128
- * Sequel no longer attempts to combine arguments for non-associative
129
- operators, as doing so leads to invalid code in cases such as:
130
-
131
- Sequel.expr{column1 - (column2 - 1)}
132
-
133
- * Sequel now automatically adds NOT NULL constraints on columns when
134
- adding a primary key constraint on the columns, if the database
135
- doesn't handle that situation correctly.
136
-
137
- * Database#rollback_checker now returns a thread-safe object.
138
-
139
- * SQL::QualifiedIdentifier#initialize now converts SQL::Identifier
140
- arguments to strings, fixing usage of such objects in the
141
- schema methods.
142
-
143
- * The prepared_statements plugin now correctly handles lookup by
144
- primary key on models with joined datasets.
145
-
146
- * The dataset_associations plugin now handles many_through_many and
147
- one_through_many associations that use a single join table. Note
148
- there is no reason to create such associations, as many_to_many
149
- and one_through_one associations will work for such cases.
150
-
151
- * The insert_returning_select plugin now handles cases where the
152
- model doesn't have a valid dataset, fixing usage with the
153
- lazy_attributes and dataset_associations plugins, and potentially
154
- other plugins.
155
-
156
- * The column_select plugin no longer raises an exception if the
157
- model's table does not exist.
158
-
159
- * The class_table_inheritance plugin now works when the
160
- prepared_statements plugin is also used.
161
-
162
- * Some adapters now avoid thread-safety issues during loading on
163
- ruby implementations without a GVL by avoiding the modification of
164
- shared datastructures.
165
-
166
- * When using Database#tables with the :qualify=>true option on
167
- PostgreSQL, table names with double or triple underscores are
168
- now handled correctly.
169
-
170
- = Backwards Compatibility
171
-
172
- * The following Dataset constants are now frozen: NON_SQL_OPTIONS,
173
- ACTION_METHODS, QUERY_METHODS, CONDITIONED_JOIN_TYPES,
174
- UNCONDITIONED_JOIN_TYPES, and JOIN_METHODS. Of these,
175
- NON_SQL_OPTIONS was previously modified in a non-thread-safe manner
176
- by some adapters. External adapters should switch to having the
177
- adapter's dataset non_sql_options method return an array of options
178
- that do not affect the SELECT SQL for the adapter's datasets, rather
179
- than modifying NON_SQL_OPTIONS.
@@ -1,77 +0,0 @@
1
- = New Features
2
-
3
- * Dataset#with_* methods have been added as equivalents for a
4
- few Dataset#*= methods, but instead of modifying the receiver, they
5
- return a modified copy, similar to the dataset query methods.
6
- Specific methods added:
7
-
8
- with_extend :: Extends clone with given modules
9
- with_row_proc :: Modifies row_proc in clone
10
- with_quote_identifiers :: Modifies quote_identifiers setting in
11
- clone
12
- with_identifier_input_method :: Modifies identifier_input_method
13
- setting in clone
14
- with_identifier_output_method :: Modifies identifier_output_method
15
- setting in clone
16
-
17
- Similarly, on Microsoft SQL Server, a with_mssql_unicode_strings
18
- method has been added, which returns a clone with the
19
- mssql_unicode_strings setting modified.
20
-
21
- * On DB2, Sequel now supports an :offset_strategy Database option,
22
- which can be set to :limit_offset for "LIMIT X OFFSET Y" or
23
- :offset_fetch for "OFFSET Y FETCH FIRST X ROWS ONLY". Depending
24
- on what version of DB2 is used and how DB2 is configured, it's
25
- possible one of these strategies will work. For backwards
26
- compatibility, the current default is still to emulate offsets
27
- using the ROW_NUMBER window function.
28
-
29
- * In the json_serializer plugin, you can now use an
30
- Sequel::SQL::AliasedExpression instance as an association name
31
- value, which allows you to rename the association in the resulting
32
- JSON:
33
-
34
- album.to_json(:include=>{Sequel.as(:album, :s)=>{:only=>:name}})
35
- # => '{"id":1,"name":"RF","artist_id":2,"s":{"name":"YJM"}}'
36
-
37
- = Other Improvements
38
-
39
- * The association dataset methods now correctly handle cases where
40
- one of the keys is nil. Previously, they would incorrectly use an
41
- IS NULL predicate in such cases. Now, they use a false predicate.
42
-
43
- * The hook_class_methods plugin handling of commit hooks has been
44
- fixed. The implementation of commit hooks (but not rollback
45
- hooks) was broken in hook_class_methods starting in 4.39.0 due to
46
- changes to avoid keeping references to all model instances until
47
- the transaction was committed or rolled back.
48
-
49
- * Using the Fixnum schema method no longer raises a warning on ruby
50
- 2.4+, as it now uses the Integer class instead of the Fixnum
51
- constant.
52
-
53
- * The ado adapter has been greatly improved. It now avoids memory
54
- leaks, has much better type handling, and passes almost all specs.
55
- Note that the ado adapter's behavior can change depending on the
56
- version of ruby in use, try to use ruby 2.2+ for best compatibility.
57
-
58
- * Dataset#graph no longer mutates the receiver. Previously, it set
59
- an empty hash as the :graph option in the receiver, which was
60
- unintentional and not desired.
61
-
62
- * Pure java exceptions that don't support the message= method are now
63
- handled properly when reraising the exception on connection errors
64
- in the jdbc adapter.
65
-
66
- = Backwards Compatibility
67
-
68
- * Support for using the Bignum constant as a generic type has been
69
- removed, as was preannounced in the 4.36.0 release notes. Users
70
- should switch to using the :Bignum constant if they haven't already.
71
-
72
- * Users of the ado adapter may need to update their code now that the
73
- ado adapter correctly handles most types.
74
-
75
- * The spec_*_w rake tasks in the repository now require ruby 2.4+ and
76
- use the warning library for filtering warnings, instead of trying to
77
- filter warnings with egrep.
@@ -1,221 +0,0 @@
1
- = New Features
2
-
3
- * There have been numerous improvements this release related to
4
- frozen datasets. Frozen datasets now work in almost all cases,
5
- except when calling a dataset mutation method.
6
-
7
- When using ruby 2.4, Sequel uses the new support for
8
- clone(:freeze=>false) to actually freeze datasets while allowing
9
- them to copy singleton classes/extended modules from the dataset
10
- calling clone. On earlier versions of ruby, the dataset opts
11
- are now frozen, preventing more types of accidental modification.
12
-
13
- The dataset internals were refactored to reduce the number of
14
- instance variables. Now, datasets store all of their state
15
- in opts. Additionally, all datasets now use a thread-safe
16
- cache for storing cached state such as the dataset's columns.
17
- Previously, accessing/setting the columns was not thread-safe,
18
- unless the ruby interpreter used thread-safe methods for
19
- instance variable getting/setting.
20
-
21
- Frozen datasets use this new cache to optimize repeated method
22
- calls, resulting in substantial performance speedups. This can
23
- include caching returned and/or intermediate datasets, SELECT and
24
- DELETE SQL generated, as well as internal objects designed to
25
- optimize the building of SQL strings with different arguments.
26
-
27
- Even for fairly simple datasets, this can result in up to 10x
28
- performance improvements for dataset methods that don't require
29
- database access, and up to 3x performance improvements for dataset
30
- methods that do require database access.
31
-
32
- * A freeze_datasets Database extension has been added which
33
- automatically freezes all datasets for the Database instance.
34
- This also enables dataset caching when creating datasets using
35
- Database#[] and #from using a single symbol, such as
36
- DB[:table_name]. In addition to speeding up the methods
37
- themselves, this also allows code such as:
38
-
39
- DB[:foo].for_update.first
40
-
41
- To run much faster by avoiding any dataset creation or SQL
42
- string building after the first call.
43
-
44
- The freeze_datasets extension makes #dup an alias of #clone,
45
- ensuring that all cloned datasets that were originally created
46
- by the Database instance are frozen.
47
-
48
- It is highly recommended that you start using the
49
- freeze_datasets extension in your applications using Sequel,
50
- as this extension will become the default and only behavior
51
- in Sequel 5. Unfrozen datasets and dataset mutation will
52
- not be supported in Sequel 5.
53
-
54
- * The dataset methods created by Model#subset and
55
- Model::DatasetModule#subset now cache the returned dataset if the
56
- current dataset is frozen, none of the arguments are Procs, and a
57
- block is not provided. This can result in up to a 3x performance
58
- improvement for method chains that use subsets, such as:
59
-
60
- ModelClass.subset1.subset2.subset3.first
61
-
62
- * Model::DatasetModule has had the following methods added to it:
63
- distinct, exclude, exclude_having, grep, group, group_and_count,
64
- group_append, having, limit, offset, order, order_append,
65
- order_prepend, select, select_all, select_append, select_group,
66
- where, and server. These methods create dataset methods that
67
- when called call the dataset method with the same name on the
68
- receiver. Example:
69
-
70
- class ModelClass < Sequel::Model
71
- dataset_module do
72
- select :with_id_and_name, :id, :name
73
- where :active, :active
74
- order :by_name, :name
75
- end
76
- end
77
-
78
- ModelClass.active.by_name.with_id_and_name.all
79
- # SELECT id, name FROM model_classes WHERE active ORDER BY name
80
- # Equivalent to:
81
- ModelClass.
82
- where(:active).
83
- order(:name).
84
- select(:id, :name).
85
- all
86
-
87
- In addition to being easier than defining the methods manually, this
88
- also enables caching of the datasets in most cases, so that the
89
- above method chain does not create any additional datasets after the
90
- first call.
91
-
92
- * Dataset#with_extend now accepts a block and will create a module
93
- with that block that will be used to extend the object, after any
94
- modules given as arguments have been applied:
95
-
96
- DB[:table].with_extend{def foo; 1 end}.foo => 1
97
-
98
- * The identifier mangling support for datasets
99
- (identifier_input_method and identifier_output_method) has been
100
- moved to a identifier_mangling database extension, but it is still
101
- loaded by default. You can disable the loading of this extension
102
- by using the :identifier_mangling=>false Database option. Sequel
103
- 5 will stop loading of this extension by default, requiring you to
104
- load it manually via Database#extension if you need it.
105
-
106
- Sequel's default remains the same as before, to convert identifiers
107
- to uppercase on input and lowercase on output on databases that
108
- fold unquoted identifiers to uppercase (per the SQL standard), and
109
- to not mangle identifiers at all on databases that fold unquoted
110
- identifiers to lowercase (MySQL, PostgreSQL, SQLite). The
111
- identifier_mangling extension just allows you to change the default
112
- behavior.
113
-
114
- * On DB2, Dataset#with_convert_smallint_to_bool has been added,
115
- which returns a modified dataset with the
116
- convert_smallint_to_bool setting changed. Previously,
117
- chaging the smallint_to_bool setting required mutating a
118
- dataset.
119
-
120
- * The mock adapter now supports Dataset#with_{autoid,fetch,numrows},
121
- allowing mocking of results when using frozen datasets.
122
-
123
- = Other Improvements
124
-
125
- * Using an eager load callback when eager loading a one_to_one
126
- association that uses an order or offset now works correctly
127
- on databases that do not support window functions.
128
-
129
- * Dataset#== and Dataset#hash are now faster as they don't need
130
- to generate SQL. As all internal state is now stored in the
131
- opts, it just considers the class, db, and opts.
132
-
133
- * The prepared statement/bound variable internals were heavily
134
- refactored to be simpler and more robust, to more easily
135
- support native prepared statements, and to work with frozen
136
- datasets.
137
-
138
- * When emulating alter table operations on SQLite, integer
139
- primary keys now use AUTOINCREMENT, since that is Sequel's
140
- default when creating tables on SQLite.
141
-
142
- * On SQLite, Database#schema no longer uses :auto_increment entries
143
- when the table has a composite primary key.
144
-
145
- * Most dataset opts values are now frozen to prevent accidental
146
- modification and allow for thread-safe access.
147
-
148
- * SQL::Expression subclass instances are now always frozen.
149
-
150
- * Dataset::PlaceholderLiteralizer and
151
- Dataset::PlaceholderLiteralizer::Argument instances are now
152
- always frozen.
153
-
154
- * Dataset#ungraphed now works on a frozen model dataset.
155
-
156
- * Model#set_server now works when the model uses a frozen dataset.
157
-
158
- * The pagination and null_dataset extensions now work on frozen
159
- datasets.
160
-
161
- * Dataset#server now works for frozen model datasets when the
162
- model uses the sharding plugin.
163
-
164
- * Calling eager_graph or association_join on a model dataset
165
- is now deprecated if it would ignore the association's
166
- :conditions option and the :graph_conditions, :graph_block,
167
- or :graph_only_conditions association option is not used.
168
-
169
- * Using the :eager_limit dataset option in an eager_load
170
- callback with a singular association now raises an Error.
171
- Previously, the behavior was undefined.
172
-
173
- * Calling Dataset#prepare without a name argument is now
174
- deprecated. Previously, it raised an Error in the mysql, mysql2,
175
- and postgres adapters, but was allowed on other adapters.
176
-
177
- * The looser_typecasting extension now handles the strict
178
- BigDecimal parsing introduced in ruby 2.4.
179
-
180
- * When using the duplicate_columns_handler extension with
181
- :on_duplicate_columns=>:warn, the warning message is now
182
- prepend with the file and line.
183
-
184
- * Internally, Sequel uses Dataset#where instead of #filter,
185
- reverse instead of reverse_order, and select_append instead
186
- of select_more to save a method call and array creation.
187
-
188
- * Dataset#db= and #opts= in the sequel_3_dataset_methods
189
- extension now raise a RuntimeError if the dataset is frozen.
190
-
191
- * Sequel's tests now run without warnings when using Minitest
192
- 5.10.
193
-
194
- * Sequel now issues a deprecation message instead of a warning
195
- when used with PostgreSQL <8.2.
196
-
197
- = Backwards Compatibility
198
-
199
- * Any external dataset extensions or adapters that modified or
200
- directly accessed dataset instance variables other than @db and
201
- @opts (such as @columns) needs to be updated to work with the
202
- new dataset internals.
203
-
204
- * Any external adapters that implemented native prepared statements/
205
- bound variables need to be updated to work with the new internal
206
- prepared statement API.
207
-
208
- * Model.set_dataset and .dataset= now operate on a clone of the
209
- dataset given, instead of mutating the dataset that is passed in.
210
- This allows them to work with frozen datasets, but can change
211
- the behavior if you mutate a dataset after passing it to one
212
- of these methods. Anyone doing that needs to change their code
213
- to get the current copy of the model's dataset, and mutate that,
214
- or better yet, avoid mutating datasets at all.
215
-
216
- * Dataset#columns now calls #columns! instead of the other way around,
217
- which may require external plugins/extensions that override #columns
218
- to switch to overriding #columns!.
219
-
220
- * External adapters that want to disable identifier mangling by
221
- default need to be updated.