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,65 +0,0 @@
1
- = New Features
2
-
3
- * An update_refresh plugin has been added, for refreshing a model
4
- instance when updating. The default behavior is to only refresh
5
- when inserting. However, if you have triggers on the model's table,
6
- it's a good idea to refresh when updating to pick up the possibly
7
- changed values. On databases that support UPDATE RETURNING, such as
8
- PostgreSQL, the update and refresh are done in a single query.
9
-
10
- * A delay_add_association plugin has been added, for delaying add_*
11
- method calls for associations until after the receiver has been
12
- saved, if the receiver is a new object. Example:
13
-
14
- artist = Artist.new(:name=>'Foo')
15
- artist.add_album(Album.new(:name=>'Bar'))
16
- # No database queries yet
17
-
18
- artist.save # Saves artist, then album
19
-
20
- * A validate_associated plugin has been added, for validating
21
- associated objects when validating the current object. This
22
- was extracted from the nested_attributes plugin, and is also
23
- used by the delay_add_association plugin. For example,
24
- if you have an albums association and you want to validate all
25
- associated objects before saving the current object, you can
26
- cal validate_associated_object for each object:
27
-
28
- def validate
29
- super
30
- reflection = association_reflection(:albums)
31
- associations[:albums].each do |obj|
32
- validate_associated_object(reflection, obj)
33
- end
34
- end
35
-
36
- = Other Improvements
37
-
38
- * Database#transaction now returns the block return value if
39
- :rollback=>:always is used. Previously, it would return nil in
40
- that case.
41
-
42
- * Postgres::JSONBOp#[] and #get_text now return JSONBOp instances
43
- instead of JSONOp instances.
44
-
45
- * Model#move_to, #move_up, and #move_down in the list plugin now
46
- automatically handle out-of-range targets by defaulting to the first
47
- or last position in the list. Previously, using an out of range
48
- target would raise an exception.
49
-
50
- * Database#add_named_conversion_proc on PostgreSQL now works for enum
51
- types.
52
-
53
- * dataset.call_sproc(:insert, ...) now works correctly on JDBC.
54
-
55
- * postgresql:// connection strings are now supported, since that is
56
- the protocol name supported by libpq.
57
-
58
- * Sequel has switched from rspec to minitest/spec for testing, and
59
- now uses random test order when testing. During the conversion
60
- process, many test order dependency bugs were fixed.
61
-
62
- = Backwards Compatibility
63
-
64
- * The deprecated fdbsql, jdbc/fdbsql, and openbase adapters have been
65
- removed.
@@ -1,99 +0,0 @@
1
- = New Features
2
-
3
- * A pg_inet_ops extension has been added, for DSL support for
4
- calling PostgreSQL inet functions and operators. Example:
5
-
6
- r = Sequel.pg_inet_op(:inet)
7
-
8
- ~r # ~inet
9
- r & :other # inet & other
10
- r | :other # inet | other
11
- r << :other # inet << other
12
- r >> :other # inet >> other
13
-
14
- r.contained_by(:other) # inet << other
15
- r.contained_by_or_equals(:other) # inet <<= other
16
- r.contains(:other) # inet >> other
17
- r.contains_or_equals(:other) # inet >>= other
18
- r.contains_or_contained_by(:other) # inet && other
19
-
20
- r.abbrev # abbrev(inet)
21
- r.broadcast # broadcast(inet)
22
- r.family # family(inet)
23
- r.host # host(inet)
24
- r.hostmask # hostmask(inet)
25
- r.masklen # masklen(inet)
26
- r.netmask # netmask(inet)
27
- r.network # network(inet)
28
- r.set_masklen(16) # set_masklen(inet, 16)
29
- r.text # text(inet)
30
-
31
- * The association_pks plugin now supports a :delay_pks association
32
- option. When set to true, this makes the methods created by the
33
- plugin usable on new objects, by delaying the saving of the
34
- associated pks until after the new object has been saved. When
35
- set to :always, this also changes the behavior of the methods
36
- for existing objects, so that nothing is persisted until the
37
- object has been saved. Example:
38
-
39
- Album.plugin :association_pks
40
- Album.many_to_many :tags, :delay_pks=>true
41
-
42
- album = Album.new(:tag_pks=>[1,2,3]) # No database query
43
- album.save # Queries to insert album, and then update albums_tags
44
-
45
- * The class_table_inheritance plugin now supports subclasses that
46
- don't require additional columns, and therefore do not need to
47
- join to additional tables. It now loads the
48
- single_table_inheritance plugin and supports options that were
49
- previously only supported by single_table_inheritance, such as the
50
- :key_map and :key_chooser options.
51
-
52
- * The validation_helpers plugin now supports a :from=>:values option
53
- in the validation methods, which will take the value directly from
54
- the values hash instead of calling the related method. This
55
- allows validation_helpers to differentiate between validations on
56
- underlying database column and validations on the model.
57
-
58
- The auto_validations plugin has been modified to use this feature,
59
- since all validations it generates are for validations on the
60
- underlying database columns.
61
-
62
- * The auto_validations plugin now supports options to pass to each
63
- of the underlying validation methods:
64
-
65
- Sequel::Model.plugin :auto_validations,
66
- :unique_opts=>{:only_if_modified=>true}
67
-
68
- In addition to :unique_opts, there is support for :not_null_opts
69
- (for NOT NULL columns without a default), :explicit_not_null_opts
70
- (for NOT NULL columns with a default), :max_length_opts, and
71
- :schema_types_opts.
72
-
73
- * The update_refresh plugin now accepts a :columns option, which
74
- specifies the columns to refresh. This option is currently only
75
- respected if the related dataset supports RETURNING.
76
-
77
- * The :timeout option to Database#listen in the postgres adapter can
78
- now be a callable object, previously it had to be Numeric. This
79
- allows you to dynamically change the timeout based on current
80
- application state.
81
-
82
- = Other Improvements
83
-
84
- * The uniqueness validations added by the auto_validations plugin now
85
- use a symbol key in the related Errors instance if the underlying
86
- index was on a single column. Previously, the uniqueness
87
- validations for a single column would use an array key in the
88
- related Errors instance.
89
-
90
- * The jdbc subadapters now correctly handle 64-bit autoincrementing
91
- primary keys.
92
-
93
- * The jdbc subadapters now work correctly if they issue queries while
94
- the subadapter is being loaded. This can happen in the
95
- jdbc/postgresql adapter if the pg_hstore extension is used.
96
-
97
- = Backwards Compatibility
98
-
99
- * The deprecated db2 and dbi adapters have been removed.
@@ -1,181 +0,0 @@
1
- = New Features
2
-
3
- * The =~ and !~ methods are now defined on ComplexExpressions in
4
- addition to GenericExpressions, allowing the following code to
5
- work:
6
-
7
- DB[:table].where{(column1 + column2) =~ column3}
8
-
9
- * Dataset#group_append has been added for appending to an existing
10
- GROUP BY clause:
11
-
12
- ds = DB[:table].group(:column1)
13
- # SELECT * FROM table GROUP BY column1
14
-
15
- ds = ds.group_append(:column2)
16
- # SELECT * FROM table GROUP BY column1, column2
17
-
18
- * An inverted_subsets plugin has been added, for automatic creation of
19
- methods for the inversion of the subset criteria. For example:
20
-
21
- Album.plugin :inverted_subsets
22
- Album.subset :published, :published=>true
23
-
24
- Album.published
25
- # SELECT * FROM albums WHERE published IS TRUE
26
-
27
- Album.not_published
28
- # SELECT * FROM albums WHERE published IS NOT TRUE
29
-
30
- By default, the subset method name is prefixed with "not_". You can
31
- pass a block to override the default behavior:
32
-
33
- Album.plugin(:inverted_subsets){|name| "exclude_#{name}"}
34
- Album.subset :published, :published=>true
35
-
36
- Album.exclude_published
37
- # SELECT * FROM albums WHERE published IS NOT TRUE
38
-
39
- * A singular_table_names plugin has been added, which changes Sequel
40
- to not pluralize table names by default.
41
-
42
- Sequel::Model.plugin :singular_table_names
43
- class FooBar < Sequel::Model; end
44
- FooBar.table_name # => foo_bar
45
-
46
- * Dataset#insert_conflict and #insert_ignore have been added on
47
- PostgreSQL. When using PostgreSQL 9.5+, they allow you to ignore
48
- unique or exclusion constraint violations on inserting, or to do
49
- an update instead:
50
-
51
- DB[:table].insert_conflict.insert(:a=>1, :b=>2)
52
- # INSERT INTO TABLE (a, b) VALUES (1, 2)
53
- # ON CONFLICT DO NOTHING
54
-
55
- You can pass a specific constraint name using :constraint, to only
56
- ignore a specific constraint violation:
57
-
58
- DB[:table].insert_conflict(:constraint=>:table_a_uidx).
59
- insert(:a=>1, :b=>2)
60
- # INSERT INTO TABLE (a, b) VALUES (1, 2)
61
- # ON CONFLICT ON CONSTRAINT table_a_uidx DO NOTHING
62
-
63
- If the unique or exclusion constraint covers the whole table (e.g.
64
- it isn't a partial unique index), then you can just specify the
65
- column using the :target option:
66
-
67
- DB[:table].insert_conflict(:target=>:a).insert(:a=>1, :b=>2)
68
- # INSERT INTO TABLE (a, b) VALUES (1, 2)
69
- # ON CONFLICT (a) DO NOTHING
70
-
71
- If you want to update the existing row instead of ignoring the
72
- constraint violation, you can pass an :update option with a hash of
73
- values to update. You must pass either the :target or :constraint
74
- options when passing the :update option:
75
-
76
- DB[:table].insert_conflict(:target=>:a,
77
- :update=>{:b=>:excluded__b}).
78
- insert(:a=>1, :b=>2)
79
- # INSERT INTO TABLE (a, b) VALUES (1, 2)
80
- # ON CONFLICT (a) DO UPDATE SET b = excluded.b
81
-
82
- Additionally, if you only want to do the update in certain cases,
83
- you can specify an :update_where option, which will be used as a
84
- filter. If the row doesn't match the conditions, the constraint
85
- violation will be ignored, but the row will not be updated:
86
-
87
- DB[:table].insert_conflict(:constraint=>:table_a_uidx,
88
- :update=>{:b=>:excluded__b},
89
- :update_where=>{:table__status_id=>1}).
90
- insert(:a=>1, :b=>2)
91
- # INSERT INTO TABLE (a, b) VALUES (1, 2)
92
- # ON CONFLICT ON CONSTRAINT table_a_uidx
93
- # DO UPDATE SET b = excluded.b WHERE (table.status_id = 1)
94
-
95
- * Dataset#group_rollup and #group_cube are now supported when using
96
- PostgreSQL 9.5+.
97
-
98
- * Sequel now supports Dataset#returning when using prepared statements
99
- and bound variables:
100
-
101
- DB[:table].returning.prepare(:insert, :i, :col=>:$col).
102
- call(:col=>42)
103
- # => [{:col=>42}]
104
-
105
- = Other Improvements
106
-
107
- * The serialization plugin now integrates with the dirty plugin, so
108
- that column changes are detected correctly. However, column values
109
- that are changed and then changed back to the original value are
110
- still detected as changed.
111
-
112
- * Dataset#for_update and similar locking methods now cause Sequel not
113
- to use the :read_only shard if sharding is used.
114
-
115
- * The association_pks plugin now clears cached delayed associated pks
116
- when the object is refreshed.
117
-
118
- * The :collate column option when adding columns now literalizes
119
- non-String values on PostgreSQL. Previously, the :collate option
120
- value was used verbatim. This is because PostgreSQL's collations
121
- generally require quoting as they are uppercase or mixed-case.
122
-
123
- * Sequel's metadata parsing methods now support Microsoft SQL Server
124
- 2012+ when used in case sensitive mode.
125
-
126
- * Sequel now recognizes an addition check constraint violation
127
- exception on SQLite.
128
-
129
- * Sequel now recognizes constraint violations when using the
130
- swift/sqlite adapter.
131
-
132
- * Sequel now automatically REORGs tables when altering them in the
133
- jdbc/db2 adapter.
134
-
135
- = Backwards Compatibility
136
-
137
- * Sequel now defaults to ignoring NULL values when using IN/NOT IN
138
- with an empty array. Previously, code such as:
139
-
140
- DB[:table].where(:column=>[])
141
-
142
- would be literalized as:
143
-
144
- SELECT * FROM table WHERE (column != column)
145
-
146
- This yields a NULL value when column is NULL, similarly to how most
147
- other SQL operators work. Unfortunately, most databases do not
148
- optimize this, and such a query can require a sequential scan of the
149
- table.
150
-
151
- Sequel previously shipped with a empty_array_ignore_nulls extension
152
- that literalized the query to:
153
-
154
- SELECT * FROM table WHERE (1 = 0)
155
-
156
- which databases will generally optimize to a constant false value,
157
- resulting in much faster queries. This behavior is now the default.
158
-
159
- Users that desire the previous behavior can use the new
160
- empty_array_consider_nulls extension.
161
-
162
- * The deprecated firebird and informix adapters have been removed.
163
-
164
- * Calling prepare on a prepared statement now raises an exception.
165
- It was supported accidently before, as prepared statements are
166
- dataset instances.
167
-
168
- * Model::DatasetModule#subset now calls Model.subset instead of
169
- the other way around. This makes it possible to modify the
170
- behavior of subset in a plugin.
171
-
172
- * The :collate column option change on PostgreSQL can break code
173
- that used already quoted values in symbols. For example:
174
-
175
- String :column_name, collate=>:'"C"'
176
-
177
- would need to change to:
178
-
179
- String :column_name, collate=>:C
180
- # or
181
- String :column_name, collate=>'"C"'
@@ -1,44 +0,0 @@
1
- = New Features
2
-
3
- * Add Dataset#grouping_sets to support GROUP BY GROUPING SETS on
4
- PostgreSQL 9.5+, MSSQL 2008+, Oracle, DB2, and SQLAnywhere:
5
-
6
- DB[:test].group([:type_id, :b], :type_id, []).grouping_sets
7
- # SELECT * FROM test
8
- # GROUP BY GROUPING SETS((type_id, b), (type_id), ())
9
-
10
- * Sequel::NoMatchingRow exceptions raised by Sequel now give access
11
- to the dataset that raised the exception via the dataset method.
12
- This makes it easier to write generic error handling code.
13
-
14
- * Support :if_exists option to drop_column on PostgreSQL:
15
-
16
- DB.drop_column :t, :col, :if_exists=>true
17
- ALTER TABLE t DROP COLUMN IF EXISTS col
18
-
19
- = Other Improvements
20
-
21
- * Make the class_table_inheritance plugin work correctly without an
22
- sti_key. This was broken in a recent refactoring to make class
23
- table inheritance support multiple classes for a single table.
24
-
25
- * Make Class.new(ModelClass){set_dataset :table} work correctly on
26
- ruby 1.8. This was broken in a refactoring to allow the
27
- singular_table_names plugin to work.
28
-
29
- * Make offset emulation via ROW_NUMBER better handle ambiguous column
30
- names for datasets without an ORDER BY clause, but with an explicit
31
- SELECT clause.
32
-
33
- * Make pg_range extension use PostgreSQL range function constructors
34
- instead of casting string literals to the appropriate range type,
35
- if the range type is known. This allows arbitrary expressions to
36
- be used inside ranges, such as CURRENT_TIMESTAMP in timestamp
37
- ranges.
38
-
39
- * Make Dataset#== not consider frozen status.
40
-
41
- * Allow Dataset#prepare on already prepared statements in situations
42
- where determining the SQL for a prepared statement requires it.
43
-
44
- * Detect additional disconnect errors when using the tinytds adapter.
@@ -1,78 +0,0 @@
1
- = New Features
2
-
3
- * A before_after_save plugin has been added, which for newly
4
- created objects refreshes the object before calling after_create,
5
- and resets the modified flag before calling after_update.
6
- Previously, these actions were not taken until after after_save
7
- was called. This will be the default behavior in Sequel 5.
8
-
9
- * In create_table blocks, primary_key now supports a :keep_order
10
- option, which will not change the order in which the primary key
11
- is added. Without this option, Sequel's historical behavior of
12
- making the primary key column the first column is used.
13
-
14
- DB.create_table(:foo) do
15
- Integer :a
16
- primary_key :b, :keep_order=>true
17
- end
18
- # CREATE TABLE foo
19
- # (a integer, b integer PRIMARY KEY AUTOINCREMENT)
20
-
21
- The schema dumper now uses this option if necessary, allowing it
22
- to correctly dump tables where the primary key column is not the
23
- first column.
24
-
25
- * Dataset#single_record! and #single_value! have been added. These
26
- are faster versions of #single_record and #single_value that
27
- don't require cloning the dataset. If you are sure the dataset
28
- will only return a single row or a single value, you can use
29
- these methods for better performance.
30
-
31
- * The new jsonb and json functions added in PostgreSQL 9.5 are now
32
- supported by the pg_json_ops extension.
33
-
34
- Sequel.pg_jsonb_op(:metadata).set(%w'a b', [1,2,3])
35
- # jsonb_set("metadata", ARRAY['a','b'], '[1,2,3]'::jsonb, true)
36
-
37
- = Other Improvements
38
-
39
- * Sequel.synchronize is no longer a stub on MRI. Testing has shown
40
- that relying on the global interpreter lock to protect
41
- multi-threaded access to hashes is not safe in all environments,
42
- so Sequel now uses a mutex on MRI just as it does on other ruby
43
- interpreters.
44
-
45
- * Database#schema now sets the :auto_increment option correctly for
46
- auto incrementing primary keys if they are not the first column
47
- in the table.
48
-
49
- * Dataset#single_value and #with_sql_single_value are now slightly
50
- faster by avoiding an array allocation.
51
-
52
- * Model datasets can now use #with_sql_single_value and return a
53
- single value, instead of an array in [:column_name, value] format.
54
-
55
- * Model#persisted? in the active_model plugin will now return false
56
- if the transaction that inserts the row for the object is rolled
57
- back.
58
-
59
- * bin/sequel now warns if additional arguments are passed that it
60
- ignores. In Sequel 5, bin/sequel will raise an error in these
61
- cases.
62
-
63
- * Database#foreign_key_list on PostgreSQL now returns referenced
64
- composite keys in the correct order.
65
-
66
- * The postgres adapter now works with postgres-pr 0.7.0. Note that
67
- postgres adapter users that want a pure-ruby driver are encouraged
68
- to use jeremyevans-postgres-pr as that has many additional bugfixes
69
- and is the version tested with Sequel on a regular basis.
70
-
71
- * The jdbc/postgresql adapter now recognizes an additional disconnect
72
- error.
73
-
74
- = Backwards Compatibility
75
-
76
- * Users who were relying on #with_sql_single_value returning an array
77
- instead of a single value for model datasets need to update their
78
- code.
@@ -1,57 +0,0 @@
1
- = New Features
2
-
3
- * A subset_conditions plugin has been added, which adds a method
4
- for each subset that returns the filter conditions for the
5
- subset. This makes it easier to reuse the subset conditions:
6
-
7
- class Foo < Sequel::Model
8
- plugin :subset_conditions
9
- subset :active, :active=>true
10
- end
11
-
12
- Foo.exclude(Foo.active_conditions)
13
- Foo.where(:a=>1).or(Foo.active_conditions)
14
-
15
- * A boolean_subsets plugin has been added, which adds a subset for each
16
- boolean column:
17
-
18
- # Assume boolean column :active
19
- Foo.plugin :boolean_subsets
20
-
21
- Foo.active
22
- # SELECT * FROM foos WHERE (active IS TRUE)
23
-
24
- You can provide a block to the plugin to change the arguments passed
25
- to subset:
26
-
27
- Foo.plugin :boolean_subsets do |column|
28
- [:"where_#{column}", column]
29
- end
30
-
31
- Foo.where_active
32
- # SELECT * FROM foos WHERE active
33
-
34
- As with similar plugins, you can add the boolean_subsets plugin to
35
- Sequel::Model itself, and all subclasses created afterward will have
36
- the boolean subset methods automatically created.
37
-
38
- = Other Improvements
39
-
40
- * If Model#refresh can't find the related row, Sequel now raises a
41
- Sequel::NoExistingObject exception instead of a generic
42
- Sequel::Error exception.
43
-
44
- * In the csv_serializer plugin, when calling #to_csv on a model class
45
- or dataset, instead of using #[] to access data, #send is used to
46
- call methods. This is more similar to other plugins as well as
47
- Model#to_csv.
48
-
49
- * The list plugin now works better with the auto_validations plugin,
50
- or any other time there is a validation on the position column.
51
-
52
- = Backwards Compatibility
53
-
54
- * The change to the csv_serializer plugin can change results if you
55
- are overriding any of the column accessor methods. It can also
56
- break existing code if one of the columns being used isn't defined
57
- as a method or the method requires more than one argument.
@@ -1,41 +0,0 @@
1
- = New Features
2
-
3
- * A uuid plugin has now been added. This plugin will automatically
4
- create a uuid for newly created model objects.
5
-
6
- Model.plugin :uuid
7
- Model.create.uuid => # some UUID
8
-
9
- * Model#json_serializer_opts has been added to the json_serializer
10
- plugin, allowing you to override the JSON serialization options
11
- on a per instance basis without passing the options directly
12
- to Model#to_json. This is useful if you are including the model
13
- instance inside another datastructure that will be serialized
14
- to JSON.
15
-
16
- obj.json_serializer_opts(:root => true)
17
- [obj].to_json
18
- # => '[{"obj":{"id":1,"name":"Foo"}}]'
19
-
20
- = Other Improvements
21
-
22
- * The Database#transaction :retry_on option now works when using
23
- savepoints.
24
-
25
- * Calling Database#table_exists? inside a transaction will now use
26
- a savepoint if the database supports it, so that if the table
27
- doesn't exist, it will not affect the state of the transaction.
28
-
29
- * Blobs can now be used as bound variables in the oracle adapter.
30
-
31
- * The sqlanywhere adapter now works with database sharding.
32
-
33
- * The Dataset#full_text_search :rank option has been fixed to order
34
- by rank descending instead of ascending.
35
-
36
- * External adapters that do not support INSERT with DEFAULT VALUES
37
- can now override Dataset#insert_empty_columns_values to set
38
- the columns and values to use for an empty INSERT.
39
-
40
- * External adapters can now implement Dataset#date_add_sql_append
41
- to integrate with the date_arithmetic extension.
@@ -1,40 +0,0 @@
1
- = New Features
2
-
3
- * The tree and rcte_tree plugins now support composite keys.
4
-
5
- * An error_sql Database extension has been added. This extension
6
- adds the DatabaseError#sql method, which should return the
7
- database query that caused the error. This is useful for
8
- drivers that don't include the SQL used as part of the error
9
- message.
10
-
11
- = Other Improvements
12
-
13
- * Empty blobs are now literalized correctly on MySQL.
14
-
15
- * Empty arrays are now literalized correctly on PostgreSQL <8.4.
16
-
17
- * In the pagination extension, Dataset#page_count is now 1 even if
18
- the dataset is empty. This fixes issues with last_page? and
19
- page_range returning bad values for empty datasets.
20
-
21
- * In the pagination extension, calling Dataset#each_page without a
22
- block now returns an Enumerator.
23
-
24
- * Dataset#qualify and Sequel.delay now work together, qualifying
25
- the object returned by the delayed evaluation.
26
-
27
- * Migrator.migrator_class is now a public method.
28
-
29
- * The PostgreSQL citext type is now recognized as a string.
30
-
31
- * Another disconnect error is now recognized in the jdbc/as400
32
- adapter.
33
-
34
- * Guides about using and creating Sequel extensions and model
35
- plugins have been added.
36
-
37
- = Backwards Compatibility
38
-
39
- * If you were expecting Dataset#page_count on a empty paginated
40
- dataset to return 0, you need to update your code.
@@ -1,37 +0,0 @@
1
- = New Features
2
-
3
- * Overriding the :limit and :eager_limit_strategy association options
4
- can now be done on a per-call basis when eager loading, by using an
5
- eager block callback and setting the :eager_limit or
6
- :eager_limit_strategy dataset options. Example:
7
-
8
- Album.eager(:tracks=>proc{|ds| ds.clone(:eager_limit=>5)}).all
9
-
10
- * Dataset#insert_conflict and #insert_ignore have been added on
11
- SQLite, adding support for the INSERT OR ... SQL syntax:
12
-
13
- DB[:table].insert_ignore.insert(:a=>1, :b=>2)
14
- # INSERT OR IGNORE INTO TABLE (a, b) VALUES (1, 2)
15
-
16
- DB[:table].insert_conflict(:replace).insert(:a=>1, :b=>2)
17
- # INSERT OR REPLACE INTO TABLE (a, b) VALUES (1, 2)
18
-
19
- * An identifier_columns plugin has been added, which allows
20
- Sequel::Model#save to work when column names contain double
21
- underscores.
22
-
23
- = Other Improvements
24
-
25
- * IPv6 addresses can now be used in connection URLs when using
26
- ruby 1.9.3+.
27
-
28
- * The :db_type entries in column schema hashes now include sizes
29
- for string and decimal types on DB2 and when using the jdbc
30
- adapter's generic schema parsing.
31
-
32
- * Database#row_type in the pg_row extension now handles different
33
- formats of specifying schema qualified types. So a row type
34
- registered via :schema__type can be found using
35
- Sequel.qualify(:schema, :type).
36
-
37
- * Another disconnect error is recognized in the tinytds adapter.