sequel 5.20.0 → 5.49.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 (511) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +398 -1922
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +7 -7
  5. data/doc/advanced_associations.rdoc +4 -4
  6. data/doc/association_basics.rdoc +80 -16
  7. data/doc/cheat_sheet.rdoc +6 -5
  8. data/doc/code_order.rdoc +10 -12
  9. data/doc/dataset_filtering.rdoc +17 -2
  10. data/doc/fork_safety.rdoc +84 -0
  11. data/doc/migration.rdoc +11 -5
  12. data/doc/model_dataset_method_design.rdoc +1 -1
  13. data/doc/model_plugins.rdoc +1 -1
  14. data/doc/opening_databases.rdoc +10 -2
  15. data/doc/postgresql.rdoc +82 -3
  16. data/doc/querying.rdoc +4 -4
  17. data/doc/release_notes/5.21.0.txt +87 -0
  18. data/doc/release_notes/5.22.0.txt +48 -0
  19. data/doc/release_notes/5.23.0.txt +56 -0
  20. data/doc/release_notes/5.24.0.txt +56 -0
  21. data/doc/release_notes/5.25.0.txt +32 -0
  22. data/doc/release_notes/5.26.0.txt +35 -0
  23. data/doc/release_notes/5.27.0.txt +21 -0
  24. data/doc/release_notes/5.28.0.txt +16 -0
  25. data/doc/release_notes/5.29.0.txt +22 -0
  26. data/doc/release_notes/5.30.0.txt +20 -0
  27. data/doc/release_notes/5.31.0.txt +148 -0
  28. data/doc/release_notes/5.32.0.txt +46 -0
  29. data/doc/release_notes/5.33.0.txt +24 -0
  30. data/doc/release_notes/5.34.0.txt +40 -0
  31. data/doc/release_notes/5.35.0.txt +56 -0
  32. data/doc/release_notes/5.36.0.txt +60 -0
  33. data/doc/release_notes/5.37.0.txt +30 -0
  34. data/doc/release_notes/5.38.0.txt +28 -0
  35. data/doc/release_notes/5.39.0.txt +19 -0
  36. data/doc/release_notes/5.40.0.txt +40 -0
  37. data/doc/release_notes/5.41.0.txt +25 -0
  38. data/doc/release_notes/5.42.0.txt +136 -0
  39. data/doc/release_notes/5.43.0.txt +98 -0
  40. data/doc/release_notes/5.44.0.txt +32 -0
  41. data/doc/release_notes/5.45.0.txt +34 -0
  42. data/doc/release_notes/5.46.0.txt +87 -0
  43. data/doc/release_notes/5.47.0.txt +59 -0
  44. data/doc/release_notes/5.48.0.txt +14 -0
  45. data/doc/release_notes/5.49.0.txt +59 -0
  46. data/doc/sharding.rdoc +2 -0
  47. data/doc/sql.rdoc +13 -1
  48. data/doc/testing.rdoc +20 -7
  49. data/doc/transactions.rdoc +0 -8
  50. data/doc/validations.rdoc +1 -1
  51. data/doc/virtual_rows.rdoc +1 -1
  52. data/lib/sequel/adapters/ado/access.rb +1 -1
  53. data/lib/sequel/adapters/ado.rb +43 -35
  54. data/lib/sequel/adapters/ibmdb.rb +2 -2
  55. data/lib/sequel/adapters/jdbc/mysql.rb +6 -6
  56. data/lib/sequel/adapters/jdbc/postgresql.rb +11 -17
  57. data/lib/sequel/adapters/jdbc/sqlite.rb +29 -0
  58. data/lib/sequel/adapters/jdbc.rb +24 -6
  59. data/lib/sequel/adapters/mysql.rb +1 -1
  60. data/lib/sequel/adapters/mysql2.rb +2 -3
  61. data/lib/sequel/adapters/odbc.rb +8 -6
  62. data/lib/sequel/adapters/oracle.rb +5 -4
  63. data/lib/sequel/adapters/postgres.rb +15 -9
  64. data/lib/sequel/adapters/shared/access.rb +6 -6
  65. data/lib/sequel/adapters/shared/mssql.rb +66 -21
  66. data/lib/sequel/adapters/shared/mysql.rb +27 -10
  67. data/lib/sequel/adapters/shared/oracle.rb +29 -23
  68. data/lib/sequel/adapters/shared/postgres.rb +271 -32
  69. data/lib/sequel/adapters/shared/sqlanywhere.rb +9 -9
  70. data/lib/sequel/adapters/shared/sqlite.rb +161 -19
  71. data/lib/sequel/adapters/sqlanywhere.rb +1 -1
  72. data/lib/sequel/adapters/sqlite.rb +1 -1
  73. data/lib/sequel/adapters/tinytds.rb +15 -2
  74. data/lib/sequel/adapters/utils/mysql_mysql2.rb +4 -1
  75. data/lib/sequel/ast_transformer.rb +6 -0
  76. data/lib/sequel/connection_pool/sharded_single.rb +4 -1
  77. data/lib/sequel/connection_pool/sharded_threaded.rb +12 -12
  78. data/lib/sequel/connection_pool/single.rb +1 -1
  79. data/lib/sequel/connection_pool/threaded.rb +2 -2
  80. data/lib/sequel/core.rb +333 -319
  81. data/lib/sequel/database/connecting.rb +3 -4
  82. data/lib/sequel/database/logging.rb +7 -1
  83. data/lib/sequel/database/misc.rb +31 -12
  84. data/lib/sequel/database/query.rb +3 -1
  85. data/lib/sequel/database/schema_generator.rb +53 -51
  86. data/lib/sequel/database/schema_methods.rb +38 -23
  87. data/lib/sequel/database/transactions.rb +17 -18
  88. data/lib/sequel/dataset/actions.rb +14 -9
  89. data/lib/sequel/dataset/features.rb +16 -0
  90. data/lib/sequel/dataset/misc.rb +2 -2
  91. data/lib/sequel/dataset/placeholder_literalizer.rb +3 -7
  92. data/lib/sequel/dataset/prepared_statements.rb +2 -0
  93. data/lib/sequel/dataset/query.rb +26 -9
  94. data/lib/sequel/dataset/sql.rb +76 -25
  95. data/lib/sequel/dataset.rb +4 -2
  96. data/lib/sequel/deprecated.rb +3 -1
  97. data/lib/sequel/exceptions.rb +2 -0
  98. data/lib/sequel/extensions/_pretty_table.rb +1 -2
  99. data/lib/sequel/extensions/any_not_empty.rb +45 -0
  100. data/lib/sequel/extensions/async_thread_pool.rb +438 -0
  101. data/lib/sequel/extensions/blank.rb +8 -0
  102. data/lib/sequel/extensions/columns_introspection.rb +1 -2
  103. data/lib/sequel/extensions/connection_expiration.rb +2 -2
  104. data/lib/sequel/extensions/connection_validator.rb +2 -2
  105. data/lib/sequel/extensions/core_refinements.rb +2 -0
  106. data/lib/sequel/extensions/date_arithmetic.rb +36 -24
  107. data/lib/sequel/extensions/duplicate_columns_handler.rb +3 -1
  108. data/lib/sequel/extensions/eval_inspect.rb +2 -0
  109. data/lib/sequel/extensions/exclude_or_null.rb +68 -0
  110. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  111. data/lib/sequel/extensions/index_caching.rb +9 -7
  112. data/lib/sequel/extensions/inflector.rb +9 -1
  113. data/lib/sequel/extensions/integer64.rb +2 -0
  114. data/lib/sequel/extensions/migration.rb +11 -3
  115. data/lib/sequel/extensions/named_timezones.rb +56 -8
  116. data/lib/sequel/extensions/pagination.rb +1 -1
  117. data/lib/sequel/extensions/pg_array.rb +5 -0
  118. data/lib/sequel/extensions/pg_array_ops.rb +14 -6
  119. data/lib/sequel/extensions/pg_enum.rb +11 -3
  120. data/lib/sequel/extensions/pg_extended_date_support.rb +2 -2
  121. data/lib/sequel/extensions/pg_hstore.rb +6 -0
  122. data/lib/sequel/extensions/pg_hstore_ops.rb +54 -2
  123. data/lib/sequel/extensions/pg_inet.rb +15 -5
  124. data/lib/sequel/extensions/pg_interval.rb +36 -8
  125. data/lib/sequel/extensions/pg_json.rb +387 -123
  126. data/lib/sequel/extensions/pg_json_ops.rb +238 -0
  127. data/lib/sequel/extensions/pg_loose_count.rb +3 -1
  128. data/lib/sequel/extensions/pg_range.rb +17 -9
  129. data/lib/sequel/extensions/pg_range_ops.rb +2 -0
  130. data/lib/sequel/extensions/pg_row.rb +4 -2
  131. data/lib/sequel/extensions/pg_row_ops.rb +24 -0
  132. data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
  133. data/lib/sequel/extensions/query.rb +3 -0
  134. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  135. data/lib/sequel/extensions/s.rb +2 -0
  136. data/lib/sequel/extensions/schema_dumper.rb +24 -7
  137. data/lib/sequel/extensions/server_block.rb +18 -7
  138. data/lib/sequel/extensions/sql_comments.rb +2 -2
  139. data/lib/sequel/extensions/string_agg.rb +1 -1
  140. data/lib/sequel/extensions/symbol_aref_refinement.rb +2 -0
  141. data/lib/sequel/extensions/symbol_as_refinement.rb +2 -0
  142. data/lib/sequel/extensions/to_dot.rb +9 -3
  143. data/lib/sequel/model/associations.rb +356 -117
  144. data/lib/sequel/model/base.rb +107 -68
  145. data/lib/sequel/model/errors.rb +10 -1
  146. data/lib/sequel/model/inflections.rb +1 -1
  147. data/lib/sequel/model/plugins.rb +9 -3
  148. data/lib/sequel/model.rb +3 -1
  149. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  150. data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
  151. data/lib/sequel/plugins/association_pks.rb +60 -18
  152. data/lib/sequel/plugins/association_proxies.rb +8 -2
  153. data/lib/sequel/plugins/async_thread_pool.rb +39 -0
  154. data/lib/sequel/plugins/auto_validations.rb +39 -5
  155. data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
  156. data/lib/sequel/plugins/blacklist_security.rb +1 -2
  157. data/lib/sequel/plugins/boolean_subsets.rb +4 -1
  158. data/lib/sequel/plugins/caching.rb +3 -0
  159. data/lib/sequel/plugins/class_table_inheritance.rb +33 -28
  160. data/lib/sequel/plugins/column_encryption.rb +728 -0
  161. data/lib/sequel/plugins/composition.rb +7 -2
  162. data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
  163. data/lib/sequel/plugins/constraint_validations.rb +2 -1
  164. data/lib/sequel/plugins/csv_serializer.rb +28 -9
  165. data/lib/sequel/plugins/dataset_associations.rb +4 -1
  166. data/lib/sequel/plugins/dirty.rb +60 -22
  167. data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
  168. data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
  169. data/lib/sequel/plugins/insert_conflict.rb +72 -0
  170. data/lib/sequel/plugins/instance_specific_default.rb +113 -0
  171. data/lib/sequel/plugins/json_serializer.rb +57 -35
  172. data/lib/sequel/plugins/lazy_attributes.rb +1 -1
  173. data/lib/sequel/plugins/many_through_many.rb +108 -9
  174. data/lib/sequel/plugins/nested_attributes.rb +15 -3
  175. data/lib/sequel/plugins/pg_array_associations.rb +58 -41
  176. data/lib/sequel/plugins/pg_auto_constraint_validations.rb +91 -30
  177. data/lib/sequel/plugins/prepared_statements.rb +15 -12
  178. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -3
  179. data/lib/sequel/plugins/rcte_tree.rb +43 -35
  180. data/lib/sequel/plugins/serialization.rb +8 -3
  181. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  182. data/lib/sequel/plugins/sharding.rb +11 -5
  183. data/lib/sequel/plugins/single_table_inheritance.rb +22 -15
  184. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  185. data/lib/sequel/plugins/static_cache.rb +9 -4
  186. data/lib/sequel/plugins/static_cache_cache.rb +53 -0
  187. data/lib/sequel/plugins/string_stripper.rb +1 -1
  188. data/lib/sequel/plugins/subclasses.rb +2 -0
  189. data/lib/sequel/plugins/throw_failures.rb +1 -1
  190. data/lib/sequel/plugins/timestamps.rb +1 -1
  191. data/lib/sequel/plugins/tree.rb +9 -4
  192. data/lib/sequel/plugins/typecast_on_load.rb +3 -2
  193. data/lib/sequel/plugins/unused_associations.rb +521 -0
  194. data/lib/sequel/plugins/update_or_create.rb +1 -1
  195. data/lib/sequel/plugins/validation_class_methods.rb +5 -1
  196. data/lib/sequel/plugins/validation_helpers.rb +18 -11
  197. data/lib/sequel/plugins/xml_serializer.rb +1 -1
  198. data/lib/sequel/sql.rb +20 -5
  199. data/lib/sequel/timezones.rb +63 -17
  200. data/lib/sequel/version.rb +1 -1
  201. metadata +113 -381
  202. data/Rakefile +0 -151
  203. data/doc/release_notes/4.0.0.txt +0 -262
  204. data/doc/release_notes/4.1.0.txt +0 -85
  205. data/doc/release_notes/4.10.0.txt +0 -226
  206. data/doc/release_notes/4.11.0.txt +0 -147
  207. data/doc/release_notes/4.12.0.txt +0 -105
  208. data/doc/release_notes/4.13.0.txt +0 -169
  209. data/doc/release_notes/4.14.0.txt +0 -68
  210. data/doc/release_notes/4.15.0.txt +0 -56
  211. data/doc/release_notes/4.16.0.txt +0 -36
  212. data/doc/release_notes/4.17.0.txt +0 -38
  213. data/doc/release_notes/4.18.0.txt +0 -36
  214. data/doc/release_notes/4.19.0.txt +0 -45
  215. data/doc/release_notes/4.2.0.txt +0 -129
  216. data/doc/release_notes/4.20.0.txt +0 -79
  217. data/doc/release_notes/4.21.0.txt +0 -94
  218. data/doc/release_notes/4.22.0.txt +0 -72
  219. data/doc/release_notes/4.23.0.txt +0 -65
  220. data/doc/release_notes/4.24.0.txt +0 -99
  221. data/doc/release_notes/4.25.0.txt +0 -181
  222. data/doc/release_notes/4.26.0.txt +0 -44
  223. data/doc/release_notes/4.27.0.txt +0 -78
  224. data/doc/release_notes/4.28.0.txt +0 -57
  225. data/doc/release_notes/4.29.0.txt +0 -41
  226. data/doc/release_notes/4.3.0.txt +0 -40
  227. data/doc/release_notes/4.30.0.txt +0 -37
  228. data/doc/release_notes/4.31.0.txt +0 -57
  229. data/doc/release_notes/4.32.0.txt +0 -132
  230. data/doc/release_notes/4.33.0.txt +0 -88
  231. data/doc/release_notes/4.34.0.txt +0 -86
  232. data/doc/release_notes/4.35.0.txt +0 -130
  233. data/doc/release_notes/4.36.0.txt +0 -116
  234. data/doc/release_notes/4.37.0.txt +0 -50
  235. data/doc/release_notes/4.38.0.txt +0 -67
  236. data/doc/release_notes/4.39.0.txt +0 -127
  237. data/doc/release_notes/4.4.0.txt +0 -92
  238. data/doc/release_notes/4.40.0.txt +0 -179
  239. data/doc/release_notes/4.41.0.txt +0 -77
  240. data/doc/release_notes/4.42.0.txt +0 -221
  241. data/doc/release_notes/4.43.0.txt +0 -87
  242. data/doc/release_notes/4.44.0.txt +0 -125
  243. data/doc/release_notes/4.45.0.txt +0 -370
  244. data/doc/release_notes/4.46.0.txt +0 -404
  245. data/doc/release_notes/4.47.0.txt +0 -56
  246. data/doc/release_notes/4.48.0.txt +0 -293
  247. data/doc/release_notes/4.49.0.txt +0 -222
  248. data/doc/release_notes/4.5.0.txt +0 -34
  249. data/doc/release_notes/4.6.0.txt +0 -30
  250. data/doc/release_notes/4.7.0.txt +0 -103
  251. data/doc/release_notes/4.8.0.txt +0 -175
  252. data/doc/release_notes/4.9.0.txt +0 -190
  253. data/spec/adapter_spec.rb +0 -4
  254. data/spec/adapters/db2_spec.rb +0 -170
  255. data/spec/adapters/mssql_spec.rb +0 -804
  256. data/spec/adapters/mysql_spec.rb +0 -1065
  257. data/spec/adapters/oracle_spec.rb +0 -371
  258. data/spec/adapters/postgres_spec.rb +0 -4125
  259. data/spec/adapters/spec_helper.rb +0 -44
  260. data/spec/adapters/sqlanywhere_spec.rb +0 -97
  261. data/spec/adapters/sqlite_spec.rb +0 -652
  262. data/spec/bin_spec.rb +0 -278
  263. data/spec/core/connection_pool_spec.rb +0 -1250
  264. data/spec/core/database_spec.rb +0 -2865
  265. data/spec/core/dataset_spec.rb +0 -5515
  266. data/spec/core/deprecated_spec.rb +0 -70
  267. data/spec/core/expression_filters_spec.rb +0 -1455
  268. data/spec/core/mock_adapter_spec.rb +0 -722
  269. data/spec/core/object_graph_spec.rb +0 -336
  270. data/spec/core/placeholder_literalizer_spec.rb +0 -166
  271. data/spec/core/schema_generator_spec.rb +0 -214
  272. data/spec/core/schema_spec.rb +0 -1826
  273. data/spec/core/spec_helper.rb +0 -24
  274. data/spec/core/version_spec.rb +0 -14
  275. data/spec/core_extensions_spec.rb +0 -763
  276. data/spec/core_model_spec.rb +0 -2
  277. data/spec/core_spec.rb +0 -1
  278. data/spec/deprecation_helper.rb +0 -30
  279. data/spec/extensions/accessed_columns_spec.rb +0 -51
  280. data/spec/extensions/active_model_spec.rb +0 -99
  281. data/spec/extensions/after_initialize_spec.rb +0 -28
  282. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  283. data/spec/extensions/association_dependencies_spec.rb +0 -125
  284. data/spec/extensions/association_pks_spec.rb +0 -423
  285. data/spec/extensions/association_proxies_spec.rb +0 -100
  286. data/spec/extensions/auto_literal_strings_spec.rb +0 -205
  287. data/spec/extensions/auto_validations_spec.rb +0 -229
  288. data/spec/extensions/blacklist_security_spec.rb +0 -95
  289. data/spec/extensions/blank_spec.rb +0 -69
  290. data/spec/extensions/boolean_readers_spec.rb +0 -93
  291. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  292. data/spec/extensions/caching_spec.rb +0 -273
  293. data/spec/extensions/caller_logging_spec.rb +0 -52
  294. data/spec/extensions/class_table_inheritance_spec.rb +0 -750
  295. data/spec/extensions/column_conflicts_spec.rb +0 -75
  296. data/spec/extensions/column_select_spec.rb +0 -129
  297. data/spec/extensions/columns_introspection_spec.rb +0 -90
  298. data/spec/extensions/columns_updated_spec.rb +0 -35
  299. data/spec/extensions/composition_spec.rb +0 -248
  300. data/spec/extensions/connection_expiration_spec.rb +0 -151
  301. data/spec/extensions/connection_validator_spec.rb +0 -144
  302. data/spec/extensions/constant_sql_override_spec.rb +0 -24
  303. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  304. data/spec/extensions/constraint_validations_spec.rb +0 -439
  305. data/spec/extensions/core_refinements_spec.rb +0 -528
  306. data/spec/extensions/csv_serializer_spec.rb +0 -183
  307. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  308. data/spec/extensions/dataset_associations_spec.rb +0 -365
  309. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  310. data/spec/extensions/date_arithmetic_spec.rb +0 -181
  311. data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  312. data/spec/extensions/def_dataset_method_spec.rb +0 -100
  313. data/spec/extensions/defaults_setter_spec.rb +0 -150
  314. data/spec/extensions/delay_add_association_spec.rb +0 -73
  315. data/spec/extensions/dirty_spec.rb +0 -189
  316. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  317. data/spec/extensions/eager_each_spec.rb +0 -62
  318. data/spec/extensions/eager_graph_eager_spec.rb +0 -100
  319. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  320. data/spec/extensions/error_splitter_spec.rb +0 -18
  321. data/spec/extensions/error_sql_spec.rb +0 -20
  322. data/spec/extensions/escaped_like_spec.rb +0 -40
  323. data/spec/extensions/eval_inspect_spec.rb +0 -81
  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 -402
  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 -291
  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 -864
  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 -111
  348. data/spec/extensions/nested_attributes_spec.rb +0 -767
  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 -172
  356. data/spec/extensions/pg_enum_spec.rb +0 -118
  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 -519
  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 -177
  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 -870
  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 -63
  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 -471
  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 -402
  409. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  410. data/spec/extensions/throw_failures_spec.rb +0 -74
  411. data/spec/extensions/timestamps_spec.rb +0 -209
  412. data/spec/extensions/to_dot_spec.rb +0 -153
  413. data/spec/extensions/touch_spec.rb +0 -226
  414. data/spec/extensions/tree_spec.rb +0 -334
  415. data/spec/extensions/typecast_on_load_spec.rb +0 -86
  416. data/spec/extensions/unlimited_update_spec.rb +0 -21
  417. data/spec/extensions/update_or_create_spec.rb +0 -83
  418. data/spec/extensions/update_primary_key_spec.rb +0 -105
  419. data/spec/extensions/update_refresh_spec.rb +0 -59
  420. data/spec/extensions/uuid_spec.rb +0 -101
  421. data/spec/extensions/validate_associated_spec.rb +0 -52
  422. data/spec/extensions/validation_class_methods_spec.rb +0 -1040
  423. data/spec/extensions/validation_contexts_spec.rb +0 -31
  424. data/spec/extensions/validation_helpers_spec.rb +0 -525
  425. data/spec/extensions/whitelist_security_spec.rb +0 -157
  426. data/spec/extensions/xml_serializer_spec.rb +0 -213
  427. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  428. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  429. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  430. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  431. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  432. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  433. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  434. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  435. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  436. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  437. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  438. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  439. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  440. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  441. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  442. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  443. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  444. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  445. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  446. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  447. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  448. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  449. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  450. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  451. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  452. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  453. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  454. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  455. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  456. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  457. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  458. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  459. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  460. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  461. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  462. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  463. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  464. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  465. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  466. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  467. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  468. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  469. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  470. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  471. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  472. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  473. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  474. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  475. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  476. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  477. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  478. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  479. data/spec/guards_helper.rb +0 -59
  480. data/spec/integration/associations_test.rb +0 -2597
  481. data/spec/integration/database_test.rb +0 -113
  482. data/spec/integration/dataset_test.rb +0 -1981
  483. data/spec/integration/eager_loader_test.rb +0 -687
  484. data/spec/integration/migrator_test.rb +0 -262
  485. data/spec/integration/model_test.rb +0 -203
  486. data/spec/integration/plugin_test.rb +0 -2396
  487. data/spec/integration/prepared_statement_test.rb +0 -405
  488. data/spec/integration/schema_test.rb +0 -889
  489. data/spec/integration/spec_helper.rb +0 -65
  490. data/spec/integration/timezone_test.rb +0 -86
  491. data/spec/integration/transaction_test.rb +0 -603
  492. data/spec/integration/type_test.rb +0 -127
  493. data/spec/model/association_reflection_spec.rb +0 -803
  494. data/spec/model/associations_spec.rb +0 -4738
  495. data/spec/model/base_spec.rb +0 -875
  496. data/spec/model/class_dataset_methods_spec.rb +0 -146
  497. data/spec/model/dataset_methods_spec.rb +0 -198
  498. data/spec/model/eager_loading_spec.rb +0 -2377
  499. data/spec/model/hooks_spec.rb +0 -370
  500. data/spec/model/inflector_spec.rb +0 -26
  501. data/spec/model/model_spec.rb +0 -956
  502. data/spec/model/plugins_spec.rb +0 -429
  503. data/spec/model/record_spec.rb +0 -2118
  504. data/spec/model/spec_helper.rb +0 -46
  505. data/spec/model/validations_spec.rb +0 -220
  506. data/spec/model_no_assoc_spec.rb +0 -1
  507. data/spec/model_spec.rb +0 -1
  508. data/spec/plugin_spec.rb +0 -1
  509. data/spec/sequel_coverage.rb +0 -15
  510. data/spec/sequel_warning.rb +0 -4
  511. data/spec/spec_config.rb +0 -12
@@ -1,67 +0,0 @@
1
- = New Features
2
-
3
- * Sequel::SQL::NumericMethods#coerce has been added, which adds
4
- support for ruby's coercion protocol when performing numeric
5
- operations. Previously, Sequel supported code like:
6
-
7
- Sequel.expr{a - 1}
8
-
9
- This is because a in this case returns a Sequel::SQL::Indentifier,
10
- which defines #- to return a Sequel::SQL::NumericExpression. By
11
- supporting #coerce, the following code now also works:
12
-
13
- Sequel.expr{1 - a}
14
-
15
- This is because Integer#- calls #coerce on the argument if it is
16
- defined (ruby's coercion protocol). Previously, you had to handle
17
- this differently, using something like:
18
-
19
- Sequel.expr(1) - a
20
- # or
21
- Sequel.-(1, a)
22
-
23
- * Sequel now supports the ** operator for exponentiation on
24
- expressions, similar to the +, -, *, and / operators. Sequel uses
25
- the database power function to implement this by default on the
26
- databases that support it (most of them). On Access, it uses the ^
27
- operator, on Derby it is emulated using a combination of exp/ln
28
- (with some loss of precision). SQLite doesn't support a power
29
- function at all, but Sequel emulates it using multiplication for
30
- known integer exponents.
31
-
32
- * Sequel::SQLTime.date= has been added, which allows you to set the
33
- date used for Sequel::SQLTime instances. Sequel::SQLTime is a
34
- subclass of Time that is literalized using only the time components,
35
- and is the ruby class used to store values of database time columns
36
- on most adapters. Sequel::SQLTime defaults to using the current
37
- date, but you can now set a specific date, for more consistency with
38
- some drivers (Mysql2 uses 2000-01-01, tiny_tds uses 1900-01-01).
39
-
40
- * The postgres adapter now supports a :driver_options option when
41
- using the pg driver, which is passed directly to pg. This can be
42
- used to specify a client SSL certificate or to specify the
43
- certificate authority root certificate when using
44
- :sslmode=>'verify-full'.
45
-
46
- = Other Improvements
47
-
48
- * Sequel no longer uses after_commit/rollback database hooks by
49
- default if the after_commit/after_rollback model methods are not
50
- overridden. This provides a performance speedup, but the main
51
- benefit is that it no longer causes memory issues when saving a
52
- large number of model instances in a single transaction, and it
53
- also works with prepared transactions/2 phase commit. You can
54
- still set use_after_commit_rollback= manually to force the
55
- after_commit/rollback setting.
56
-
57
- Note that Sequel 5 will move after_commit/rollback model hooks to
58
- a plugin, and the default and recommended approach will be to use
59
- the database after_commit/rollback hooks in the after_save or
60
- similar model hooks.
61
-
62
- = Backwards Compatibility
63
-
64
- * The Sequel::Model use_after_commit_rollback class and instance
65
- methods now return nil by default instead of true. nil now
66
- indicates the default behavior of checking whether the appropriate
67
- model hook has been defined, and only adding a database hook if so.
@@ -1,127 +0,0 @@
1
- = New Features
2
-
3
- * Sequel.[] has been added as an alias to Sequel.expr. This makes it
4
- a little easier to get Sequel-specific objects:
5
-
6
- Sequel[:table].* # "table".*
7
- Sequel[:table__column].as(:alias) # "table"."column" AS "alias"
8
- Sequel[:column] + 1 # ("column" + 1)
9
-
10
- * The timestamps plugin now supports an :allow_manual_update option.
11
- If this option is used, the timestamps plugin will not override the
12
- update timestamp when saving if the user has modified it since
13
- retrieving the object.
14
-
15
- * The touch plugin now also touches associations on create in addition
16
- to update and delete.
17
-
18
- * The IntegerMigrator now supports a :relative option, which will
19
- migrate that many migrations up (for positive numbers) or down (for
20
- negative numbers).
21
-
22
- * Database#rollback_checker has been added, which returns a callable
23
- that can be called later to determine whether the transaction ended
24
- up committing or rolling back. So if you may need to check
25
- transaction status at some future point, and don't need immediate
26
- action on rollback/commit, it is better to use a rollback checker
27
- than to add an after commit/rollback hook.
28
-
29
- rbc = nil
30
- DB.transaction do
31
- rbc = DB.rollback_checker
32
- rbc.call #=> nil
33
- end
34
- rbc.call # => false
35
-
36
- DB.transaction(:rollback=>:always) do
37
- rbc = DB.rollback_checker
38
- end
39
- rbc.call # => true
40
-
41
- * The add_column schema method now supports an :if_not_exists option
42
- on PostgreSQL 9.6+, which will only add the column if it does not
43
- already exist:
44
-
45
- DB.add_column :t, :c, Integer, :if_not_exists=>true
46
- # ALTER TABLE "t" ADD COLUMN IF NOT EXISTS "c" integer
47
-
48
- * The add_column schema method now supports an :after and :first
49
- option on MySQL to add the column after an existing column or as
50
- the first column:
51
-
52
- DB.add_column :t, :c, Integer, :first=>true
53
- # ALTER TABLE `t` ADD COLUMN `c` integer FIRST
54
- DB.add_column :t, :c1, Integer, :after=>:c2
55
- # ALTER TABLE `t` ADD COLUMN `c1` integer AFTER `c2`
56
-
57
- * JSONBOp#insert has been added to the pg_json_ops extension, which
58
- supports the new jsonb_insert function added in PostgreSQL 9.6+:
59
-
60
- Sequel.pg_jsonb_op(:c).insert(%w'0 a', 'a'=>1)
61
- # jsonb_insert("c", ARRAY['0','a'], '{"a":1}'::jsonb, false)
62
-
63
- * Dataset#full_text_search on PostgreSQL now supports a
64
- :to_tsquery=>:phrase option, to enable the native phrase searching
65
- added in PostgreSQL 9.6+:
66
-
67
- DB[:t].full_text_search(:c, 'foo bar', :to_tsquery=>:phrase)
68
- # SELECT * FROM "t"
69
- # WHERE
70
- # (to_tsvector(CAST('simple' AS regconfig), (COALESCE("c", '')))
71
- # @@ phraseto_tsquery(CAST('simple' AS regconfig), 'foo bar'))
72
-
73
- * Sequel::Database.set_shared_adapter_scheme has been added, allowing
74
- external adapters to add support for Sequel's mock adapter.
75
- External adapters should have a shared adapter requirable at
76
- sequel/adapters/shared/adapter_name, that uses the following
77
- format:
78
-
79
- # in sequel/adapters/shared/mydb
80
- module Sequel::MyDB
81
- Sequel::Database.set_shared_adapter_scheme :mydb, self
82
-
83
- def self.mock_adapter_setup(db)
84
- # Any mock-adapter specific setup to perform on the
85
- # given Database instance
86
- end
87
-
88
- module DatabaseMethods
89
- # methods for all Database objects using this adapter
90
- end
91
-
92
- module DatasetMethods
93
- # methods for all Dataset objects using this adapter
94
- end
95
- end
96
-
97
-
98
- = Other Improvements
99
-
100
- * The hook_class_methods plugin only adds a Database transaction
101
- hook if one of the after commit/rollback hook class methods is
102
- actually used. This means that loading the plugin no longer
103
- keeps all saved/deleted objects in memory until transaction
104
- commit.
105
-
106
- * The active_model plugin now uses a rollback checker instead of
107
- an after_rollback hook, so models that use the active_model plugin
108
- no longer store all saved model instances in memory until
109
- transaction commit.
110
-
111
- * When using the IntegerMigrator, attempting to migrate to a
112
- migration number above the maximum will now migrate to the lastest
113
- version, and attempting to migrate to a migration number below 0
114
- will now migrate all the way down.
115
-
116
- * The pg_interval extension now supports ActiveSupport::Duration
117
- objects that use week and hour parts (new in ActiveSupport 5).
118
-
119
- = Backwards Compatibility
120
-
121
- * The change to the touch plugin to touch associations on create could
122
- possibly affect existing behavior, so if you are using this plugin,
123
- you should test that this does not cause any problems.
124
-
125
- * External adapters that tried to add support for the mock adapter
126
- now need to update their code to use the new
127
- Sequel::Database.set_shared_adapter_scheme method.
@@ -1,92 +0,0 @@
1
- = New Features
2
-
3
- * Sequel now supports Sybase SQLAnywhere, via the sqlanywhere and
4
- jdbc/sqlanywhere adapters.
5
-
6
- * The filter by associations support now handles cases where the
7
- association has :conditions or a block (as long as the block
8
- does not rely on instance-specific behavior). This allows
9
- you to handle the following:
10
-
11
- Album.many_to_many :popular_tags, :class=>:Tag do |ds|
12
- ds.where{tags__popularity > 9000}
13
- end
14
- Album.where(:popular_tags=>[Tag[1], Tag[2]])
15
-
16
- This will return all albums whose popular_tags would include
17
- at least one of those two tags. Previously, the block would
18
- be ignored, returning albums containing one those tags even if
19
- the tags weren't popular.
20
-
21
- * A table_select plugin has been added that changes the default
22
- selection for models from * to table.*. This is useful for
23
- people who want ActiveRecord-like behavior instead of SQL-like
24
- behavior, where joining tables doesn't automatically include
25
- columns in the other table.
26
-
27
- This can fix issues where joining another table that has columns
28
- with the same name as columns in the model table without
29
- specifying an explicit selection results in model objects being
30
- returned where the values in the model object are the values
31
- from the joined table instead of the model table.
32
-
33
- * Dataset#offset has been added, for specifying offset separately
34
- from limit. Previous this was possible via:
35
-
36
- ds.limit(nil, offset)
37
-
38
- but this is a friendlier API.
39
-
40
- * The jdbc adapter now has support for foreign key parsing. This
41
- is used if there is no specific support for the underlying
42
- database.
43
-
44
- * Foreign key parsing is now supported on Oracle.
45
-
46
- = Other Improvements
47
-
48
- * Association add_*/remove_*/remove_all_* methods for
49
- pg_array_to_many associations now work on unsaved model objects.
50
-
51
- * In the constraint_validations extension, deletes from the
52
- metadata table are now processed before inserts, so that dropping
53
- an existing constraint and readding a constraint with the same
54
- name now works correctly.
55
-
56
- * Cloning an association now copies the :eager_block option
57
- correctly from the source association if it was passed as
58
- the block to the source association method.
59
-
60
- * Cloning a cloned association now copies the block for the
61
- association.
62
-
63
- * The descendants method in the tree plugin no longer modifies an
64
- array it is iterating over.
65
-
66
- * The jdbc/postgresql adapter now supports PostgreSQL-specific types,
67
- with pretty much the same support as the postgres adapter. When
68
- using the pg_* extensions, the dataset will now handle the
69
- PostgreSQL types correctly and return instances of the correct
70
- Ruby classes (e.g. hstore is returned as Sequel::Postgres::HStore).
71
-
72
- You should no longer need to use the typecast_on_load or
73
- pg_typecast_on_load plugins when using model objects that use these
74
- types when using the jdbc/postgresql adapter.
75
-
76
- * Offset emulation on Oracle now handles cases where selected
77
- columns can't be ordered.
78
-
79
- * Offset emulation on DB2 no longer automatically orders on all
80
- columns if the dataset itself is unordered.
81
-
82
- * Types containing spaces are now returning correctly when
83
- parsing the schema in the oracle adapter.
84
-
85
- * Database#tables no longer returns tables in the recycle bin on
86
- Oracle.
87
-
88
- * add_foreign_key now works correctly on HSQLDB, by splitting the
89
- column addition and constraint addition into two separate
90
- statements.
91
-
92
- * add_primary_key now works correctly on H2.
@@ -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.