sequel 5.29.0 → 5.30.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 (323) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +8 -1922
  3. data/doc/release_notes/5.30.0.txt +20 -0
  4. data/lib/sequel/adapters/shared/sqlite.rb +7 -1
  5. data/lib/sequel/database/transactions.rb +5 -9
  6. data/lib/sequel/version.rb +1 -1
  7. metadata +4 -368
  8. data/Rakefile +0 -151
  9. data/doc/release_notes/4.0.0.txt +0 -262
  10. data/doc/release_notes/4.1.0.txt +0 -85
  11. data/doc/release_notes/4.10.0.txt +0 -226
  12. data/doc/release_notes/4.11.0.txt +0 -147
  13. data/doc/release_notes/4.12.0.txt +0 -105
  14. data/doc/release_notes/4.13.0.txt +0 -169
  15. data/doc/release_notes/4.14.0.txt +0 -68
  16. data/doc/release_notes/4.15.0.txt +0 -56
  17. data/doc/release_notes/4.16.0.txt +0 -36
  18. data/doc/release_notes/4.17.0.txt +0 -38
  19. data/doc/release_notes/4.18.0.txt +0 -36
  20. data/doc/release_notes/4.19.0.txt +0 -45
  21. data/doc/release_notes/4.2.0.txt +0 -129
  22. data/doc/release_notes/4.20.0.txt +0 -79
  23. data/doc/release_notes/4.21.0.txt +0 -94
  24. data/doc/release_notes/4.22.0.txt +0 -72
  25. data/doc/release_notes/4.23.0.txt +0 -65
  26. data/doc/release_notes/4.24.0.txt +0 -99
  27. data/doc/release_notes/4.25.0.txt +0 -181
  28. data/doc/release_notes/4.26.0.txt +0 -44
  29. data/doc/release_notes/4.27.0.txt +0 -78
  30. data/doc/release_notes/4.28.0.txt +0 -57
  31. data/doc/release_notes/4.29.0.txt +0 -41
  32. data/doc/release_notes/4.3.0.txt +0 -40
  33. data/doc/release_notes/4.30.0.txt +0 -37
  34. data/doc/release_notes/4.31.0.txt +0 -57
  35. data/doc/release_notes/4.32.0.txt +0 -132
  36. data/doc/release_notes/4.33.0.txt +0 -88
  37. data/doc/release_notes/4.34.0.txt +0 -86
  38. data/doc/release_notes/4.35.0.txt +0 -130
  39. data/doc/release_notes/4.36.0.txt +0 -116
  40. data/doc/release_notes/4.37.0.txt +0 -50
  41. data/doc/release_notes/4.38.0.txt +0 -67
  42. data/doc/release_notes/4.39.0.txt +0 -127
  43. data/doc/release_notes/4.4.0.txt +0 -92
  44. data/doc/release_notes/4.40.0.txt +0 -179
  45. data/doc/release_notes/4.41.0.txt +0 -77
  46. data/doc/release_notes/4.42.0.txt +0 -221
  47. data/doc/release_notes/4.43.0.txt +0 -87
  48. data/doc/release_notes/4.44.0.txt +0 -125
  49. data/doc/release_notes/4.45.0.txt +0 -370
  50. data/doc/release_notes/4.46.0.txt +0 -404
  51. data/doc/release_notes/4.47.0.txt +0 -56
  52. data/doc/release_notes/4.48.0.txt +0 -293
  53. data/doc/release_notes/4.49.0.txt +0 -222
  54. data/doc/release_notes/4.5.0.txt +0 -34
  55. data/doc/release_notes/4.6.0.txt +0 -30
  56. data/doc/release_notes/4.7.0.txt +0 -103
  57. data/doc/release_notes/4.8.0.txt +0 -175
  58. data/doc/release_notes/4.9.0.txt +0 -190
  59. data/spec/adapter_spec.rb +0 -4
  60. data/spec/adapters/db2_spec.rb +0 -170
  61. data/spec/adapters/mssql_spec.rb +0 -828
  62. data/spec/adapters/mysql_spec.rb +0 -1060
  63. data/spec/adapters/oracle_spec.rb +0 -371
  64. data/spec/adapters/postgres_spec.rb +0 -4476
  65. data/spec/adapters/spec_helper.rb +0 -44
  66. data/spec/adapters/sqlanywhere_spec.rb +0 -97
  67. data/spec/adapters/sqlite_spec.rb +0 -652
  68. data/spec/bin_spec.rb +0 -278
  69. data/spec/core/connection_pool_spec.rb +0 -1250
  70. data/spec/core/database_spec.rb +0 -2915
  71. data/spec/core/dataset_spec.rb +0 -5544
  72. data/spec/core/deprecated_spec.rb +0 -70
  73. data/spec/core/expression_filters_spec.rb +0 -1498
  74. data/spec/core/mock_adapter_spec.rb +0 -722
  75. data/spec/core/object_graph_spec.rb +0 -336
  76. data/spec/core/placeholder_literalizer_spec.rb +0 -166
  77. data/spec/core/schema_generator_spec.rb +0 -214
  78. data/spec/core/schema_spec.rb +0 -1844
  79. data/spec/core/spec_helper.rb +0 -24
  80. data/spec/core/version_spec.rb +0 -14
  81. data/spec/core_extensions_spec.rb +0 -763
  82. data/spec/core_model_spec.rb +0 -2
  83. data/spec/core_spec.rb +0 -1
  84. data/spec/deprecation_helper.rb +0 -30
  85. data/spec/extensions/accessed_columns_spec.rb +0 -51
  86. data/spec/extensions/active_model_spec.rb +0 -99
  87. data/spec/extensions/after_initialize_spec.rb +0 -28
  88. data/spec/extensions/any_not_empty_spec.rb +0 -23
  89. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  90. data/spec/extensions/association_dependencies_spec.rb +0 -125
  91. data/spec/extensions/association_multi_add_remove_spec.rb +0 -1041
  92. data/spec/extensions/association_pks_spec.rb +0 -423
  93. data/spec/extensions/association_proxies_spec.rb +0 -100
  94. data/spec/extensions/auto_literal_strings_spec.rb +0 -205
  95. data/spec/extensions/auto_validations_spec.rb +0 -229
  96. data/spec/extensions/blacklist_security_spec.rb +0 -95
  97. data/spec/extensions/blank_spec.rb +0 -69
  98. data/spec/extensions/boolean_readers_spec.rb +0 -93
  99. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  100. data/spec/extensions/caching_spec.rb +0 -273
  101. data/spec/extensions/caller_logging_spec.rb +0 -52
  102. data/spec/extensions/class_table_inheritance_spec.rb +0 -750
  103. data/spec/extensions/column_conflicts_spec.rb +0 -75
  104. data/spec/extensions/column_select_spec.rb +0 -129
  105. data/spec/extensions/columns_introspection_spec.rb +0 -90
  106. data/spec/extensions/columns_updated_spec.rb +0 -35
  107. data/spec/extensions/composition_spec.rb +0 -248
  108. data/spec/extensions/connection_expiration_spec.rb +0 -151
  109. data/spec/extensions/connection_validator_spec.rb +0 -144
  110. data/spec/extensions/constant_sql_override_spec.rb +0 -24
  111. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  112. data/spec/extensions/constraint_validations_spec.rb +0 -439
  113. data/spec/extensions/core_refinements_spec.rb +0 -528
  114. data/spec/extensions/csv_serializer_spec.rb +0 -183
  115. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  116. data/spec/extensions/dataset_associations_spec.rb +0 -365
  117. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  118. data/spec/extensions/date_arithmetic_spec.rb +0 -181
  119. data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  120. data/spec/extensions/def_dataset_method_spec.rb +0 -100
  121. data/spec/extensions/defaults_setter_spec.rb +0 -150
  122. data/spec/extensions/delay_add_association_spec.rb +0 -73
  123. data/spec/extensions/dirty_spec.rb +0 -222
  124. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  125. data/spec/extensions/eager_each_spec.rb +0 -62
  126. data/spec/extensions/eager_graph_eager_spec.rb +0 -100
  127. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  128. data/spec/extensions/empty_failure_backtraces_spec.rb +0 -60
  129. data/spec/extensions/error_splitter_spec.rb +0 -18
  130. data/spec/extensions/error_sql_spec.rb +0 -20
  131. data/spec/extensions/escaped_like_spec.rb +0 -40
  132. data/spec/extensions/eval_inspect_spec.rb +0 -81
  133. data/spec/extensions/exclude_or_null_spec.rb +0 -15
  134. data/spec/extensions/finder_spec.rb +0 -260
  135. data/spec/extensions/force_encoding_spec.rb +0 -126
  136. data/spec/extensions/freeze_datasets_spec.rb +0 -31
  137. data/spec/extensions/graph_each_spec.rb +0 -113
  138. data/spec/extensions/hook_class_methods_spec.rb +0 -402
  139. data/spec/extensions/identifier_mangling_spec.rb +0 -201
  140. data/spec/extensions/implicit_subquery_spec.rb +0 -58
  141. data/spec/extensions/index_caching_spec.rb +0 -66
  142. data/spec/extensions/inflector_spec.rb +0 -183
  143. data/spec/extensions/input_transformer_spec.rb +0 -69
  144. data/spec/extensions/insert_conflict_spec.rb +0 -103
  145. data/spec/extensions/insert_returning_select_spec.rb +0 -72
  146. data/spec/extensions/instance_filters_spec.rb +0 -79
  147. data/spec/extensions/instance_hooks_spec.rb +0 -246
  148. data/spec/extensions/integer64_spec.rb +0 -22
  149. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  150. data/spec/extensions/json_serializer_spec.rb +0 -346
  151. data/spec/extensions/lazy_attributes_spec.rb +0 -183
  152. data/spec/extensions/list_spec.rb +0 -291
  153. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  154. data/spec/extensions/many_through_many_spec.rb +0 -2177
  155. data/spec/extensions/migration_spec.rb +0 -864
  156. data/spec/extensions/modification_detection_spec.rb +0 -93
  157. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
  158. data/spec/extensions/named_timezones_spec.rb +0 -218
  159. data/spec/extensions/nested_attributes_spec.rb +0 -815
  160. data/spec/extensions/null_dataset_spec.rb +0 -85
  161. data/spec/extensions/optimistic_locking_spec.rb +0 -127
  162. data/spec/extensions/pagination_spec.rb +0 -116
  163. data/spec/extensions/pg_array_associations_spec.rb +0 -802
  164. data/spec/extensions/pg_array_ops_spec.rb +0 -144
  165. data/spec/extensions/pg_array_spec.rb +0 -398
  166. data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -209
  167. data/spec/extensions/pg_enum_spec.rb +0 -118
  168. data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
  169. data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
  170. data/spec/extensions/pg_hstore_spec.rb +0 -219
  171. data/spec/extensions/pg_inet_ops_spec.rb +0 -102
  172. data/spec/extensions/pg_inet_spec.rb +0 -72
  173. data/spec/extensions/pg_interval_spec.rb +0 -103
  174. data/spec/extensions/pg_json_ops_spec.rb +0 -356
  175. data/spec/extensions/pg_json_spec.rb +0 -451
  176. data/spec/extensions/pg_loose_count_spec.rb +0 -23
  177. data/spec/extensions/pg_range_ops_spec.rb +0 -60
  178. data/spec/extensions/pg_range_spec.rb +0 -600
  179. data/spec/extensions/pg_row_ops_spec.rb +0 -61
  180. data/spec/extensions/pg_row_plugin_spec.rb +0 -60
  181. data/spec/extensions/pg_row_spec.rb +0 -363
  182. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
  183. data/spec/extensions/pg_timestamptz_spec.rb +0 -17
  184. data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
  185. data/spec/extensions/prepared_statements_spec.rb +0 -177
  186. data/spec/extensions/pretty_table_spec.rb +0 -123
  187. data/spec/extensions/query_spec.rb +0 -94
  188. data/spec/extensions/rcte_tree_spec.rb +0 -387
  189. data/spec/extensions/round_timestamps_spec.rb +0 -39
  190. data/spec/extensions/s_spec.rb +0 -60
  191. data/spec/extensions/schema_caching_spec.rb +0 -64
  192. data/spec/extensions/schema_dumper_spec.rb +0 -870
  193. data/spec/extensions/select_remove_spec.rb +0 -38
  194. data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
  195. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  196. data/spec/extensions/serialization_spec.rb +0 -365
  197. data/spec/extensions/server_block_spec.rb +0 -135
  198. data/spec/extensions/server_logging_spec.rb +0 -45
  199. data/spec/extensions/sharding_spec.rb +0 -197
  200. data/spec/extensions/shared_caching_spec.rb +0 -151
  201. data/spec/extensions/single_table_inheritance_spec.rb +0 -347
  202. data/spec/extensions/singular_table_names_spec.rb +0 -22
  203. data/spec/extensions/skip_create_refresh_spec.rb +0 -18
  204. data/spec/extensions/spec_helper.rb +0 -70
  205. data/spec/extensions/split_array_nil_spec.rb +0 -24
  206. data/spec/extensions/split_values_spec.rb +0 -57
  207. data/spec/extensions/sql_comments_spec.rb +0 -33
  208. data/spec/extensions/sql_expr_spec.rb +0 -59
  209. data/spec/extensions/static_cache_cache_spec.rb +0 -35
  210. data/spec/extensions/static_cache_spec.rb +0 -471
  211. data/spec/extensions/string_agg_spec.rb +0 -90
  212. data/spec/extensions/string_date_time_spec.rb +0 -95
  213. data/spec/extensions/string_stripper_spec.rb +0 -68
  214. data/spec/extensions/subclasses_spec.rb +0 -79
  215. data/spec/extensions/subset_conditions_spec.rb +0 -38
  216. data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
  217. data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
  218. data/spec/extensions/synchronize_sql_spec.rb +0 -124
  219. data/spec/extensions/table_select_spec.rb +0 -83
  220. data/spec/extensions/tactical_eager_loading_spec.rb +0 -402
  221. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  222. data/spec/extensions/throw_failures_spec.rb +0 -74
  223. data/spec/extensions/timestamps_spec.rb +0 -209
  224. data/spec/extensions/to_dot_spec.rb +0 -153
  225. data/spec/extensions/touch_spec.rb +0 -226
  226. data/spec/extensions/tree_spec.rb +0 -334
  227. data/spec/extensions/typecast_on_load_spec.rb +0 -86
  228. data/spec/extensions/unlimited_update_spec.rb +0 -21
  229. data/spec/extensions/update_or_create_spec.rb +0 -83
  230. data/spec/extensions/update_primary_key_spec.rb +0 -105
  231. data/spec/extensions/update_refresh_spec.rb +0 -59
  232. data/spec/extensions/uuid_spec.rb +0 -101
  233. data/spec/extensions/validate_associated_spec.rb +0 -52
  234. data/spec/extensions/validation_class_methods_spec.rb +0 -1040
  235. data/spec/extensions/validation_contexts_spec.rb +0 -31
  236. data/spec/extensions/validation_helpers_spec.rb +0 -525
  237. data/spec/extensions/whitelist_security_spec.rb +0 -157
  238. data/spec/extensions/xml_serializer_spec.rb +0 -213
  239. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  240. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  241. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  242. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  243. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  244. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  245. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  246. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  247. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  248. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  249. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  250. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  251. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  252. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  253. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  254. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  255. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  256. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  257. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  258. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  259. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  260. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  261. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  262. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  263. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  264. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  265. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  266. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  267. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  268. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  269. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  270. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  271. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  272. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  273. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  274. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  275. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  276. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  277. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  278. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  279. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  280. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  281. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  282. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  283. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  284. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  285. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  286. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  287. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  288. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  289. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  290. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  291. data/spec/guards_helper.rb +0 -59
  292. data/spec/integration/associations_test.rb +0 -2597
  293. data/spec/integration/database_test.rb +0 -113
  294. data/spec/integration/dataset_test.rb +0 -2037
  295. data/spec/integration/eager_loader_test.rb +0 -687
  296. data/spec/integration/migrator_test.rb +0 -262
  297. data/spec/integration/model_test.rb +0 -203
  298. data/spec/integration/plugin_test.rb +0 -2423
  299. data/spec/integration/prepared_statement_test.rb +0 -405
  300. data/spec/integration/schema_test.rb +0 -903
  301. data/spec/integration/spec_helper.rb +0 -71
  302. data/spec/integration/timezone_test.rb +0 -86
  303. data/spec/integration/transaction_test.rb +0 -603
  304. data/spec/integration/type_test.rb +0 -127
  305. data/spec/model/association_reflection_spec.rb +0 -803
  306. data/spec/model/associations_spec.rb +0 -4738
  307. data/spec/model/base_spec.rb +0 -875
  308. data/spec/model/class_dataset_methods_spec.rb +0 -146
  309. data/spec/model/dataset_methods_spec.rb +0 -198
  310. data/spec/model/eager_loading_spec.rb +0 -2377
  311. data/spec/model/hooks_spec.rb +0 -370
  312. data/spec/model/inflector_spec.rb +0 -26
  313. data/spec/model/model_spec.rb +0 -956
  314. data/spec/model/plugins_spec.rb +0 -429
  315. data/spec/model/record_spec.rb +0 -2118
  316. data/spec/model/spec_helper.rb +0 -46
  317. data/spec/model/validations_spec.rb +0 -220
  318. data/spec/model_no_assoc_spec.rb +0 -1
  319. data/spec/model_spec.rb +0 -1
  320. data/spec/plugin_spec.rb +0 -1
  321. data/spec/sequel_coverage.rb +0 -15
  322. data/spec/sequel_warning.rb +0 -5
  323. data/spec/spec_config.rb +0 -12
@@ -1,129 +0,0 @@
1
- = New Features
2
-
3
- * LATERAL subqueries are now supported on PostgreSQL 9.3+, HSQLDB,
4
- and DB2 via Dataset#lateral:
5
-
6
- DB.from(:a, DB[:b].where(:c=>:a__d).lateral)
7
- # SELECT * FROM a,
8
- # LATERAL (SELECT * FROM b WHERE (c = a.d)) AS t1
9
-
10
- You can use a similar syntax when joining tables:
11
-
12
- DB[:a].cross_join(DB[:b].where(:c=>:a__d).lateral)
13
- # SELECT * FROM a
14
- # CROSS JOIN LATERAL (SELECT * FROM b WHERE (c = a.d)) AS t1
15
-
16
- If you are using Microsoft SQL Server, you can use the new
17
- mssql_emulate_lateral_with_apply extension to emulate LATERAL
18
- subqueries via CROSS/OUTER APPLY.
19
-
20
- * The static_cache plugin now supports a :frozen=>false option. When
21
- this option is used, instead of returning the frozen cached values,
22
- the model now returns new, unfrozen objects that can be modified.
23
- Note that if you make any database modifications, you are
24
- responsible for updating the cache manually.
25
-
26
- * A pg_static_cache_updater extension has been added. This extension
27
- can automatically update the caches used by the static_cache plugin,
28
- whenever the underlying database table is updated, using PostgreSQL's
29
- notification channels.
30
-
31
- This works by defining triggers on the underlying model tables that
32
- use NOTIFY, and spinning up a thread in your application processes
33
- that uses LISTEN, and refreshes the cache for the related model
34
- whenever it receives a notification that the underlying table has
35
- been modified.
36
-
37
- This extension should make it possible to use the static_cache plugin
38
- with the :frozen=>false option for any table that is small and not
39
- frequently updated.
40
-
41
- * A from_block extension has been added that makes Database#from operate
42
- like Dataset#from in regards to a passed block, allowing you to write
43
- code like:
44
-
45
- DB.from{table_returning_function(arg1, arg2)}
46
-
47
- * Database#supports_partial_indexes? has been added for checking for
48
- partial index support. Partial indexes are now supported on SQLite
49
- 3.8.0+.
50
-
51
- * A pg_loose_count extension has been added for fast approximate counts
52
- of PostgreSQL tables. This uses the system tables and should be
53
- fairly accurate if the table statistics are up to date:
54
-
55
- DB.loose_count(:table)
56
-
57
- * The Dataset#use_cursor method in the postgres adapter now supports
58
- a :cursor_name option. You can set this option if you want to
59
- use nested cursors.
60
-
61
- * The mysql2 adapter now supports a :flags Database option allowing to
62
- set custom mysql2 flags (e.g. ::Mysql2::Client::MULTI_STATEMENTS).
63
-
64
- = Other Improvements
65
-
66
- * Dataset#freeze has been implemented. Previously, it was not
67
- implemented, so Object#freeze was used, which resulted in a dataset
68
- that wasn't cloneable. Dataset#freeze now works as expected,
69
- resulting in a cloneable dataset, but it doesn't allow methods to
70
- be called that mutate the receiver.
71
-
72
- * Dataset#dup has been implemented. Previously, it was not
73
- implemented, so Object#dup was used, which resulted in a dataset
74
- that shared an options hash with the receiver, so modifying the
75
- dup's opts could also change the original dataset. Now dup works
76
- similarly to clone, except that the returned object will not be
77
- frozen.
78
-
79
- * Model#dup has been implemented. Previously, it was not implemented,
80
- so Object#dup was used, which resulted in a model instance that
81
- shared the values hash with the receiver, so modifying the dup's
82
- values also changed the original's values. Now, dup does a shallow
83
- copy of some of the internal data structures as well, so the copy
84
- is more independent.
85
-
86
- Note that you still need to be careful if you mutate objects:
87
-
88
- m = Model.new(:a=>'a')
89
- m2 = m.dup
90
- m.a.gsub!('a', 'b') # also changes m2
91
-
92
- * Model#clone has been implemented. Previously, it had the same
93
- issues as dup. Now, it calls the new Model#dup, but also
94
- freezes the returned object if the receiver is frozen.
95
-
96
- * Placeholder literal strings with an empty parameter hash are now
97
- handled correctly.
98
-
99
- = Backwards Compatibility
100
-
101
- * The static_cache plugin now disallows saving/destroying instances
102
- unless the :frozen=>false option is used. As the cached objects
103
- returned by the model were frozen anyway, this affects creating
104
- new instances or saving/destroying instances returned from the
105
- underlying dataset.
106
-
107
- * Model#set_values has been removed (it was deprecated starting in
108
- Sequel 4.0).
109
-
110
- * The following Model class methods are no longer defined:
111
- insert_multiple, set, to_csv, paginate, query, set_overrides,
112
- set_defaults. By default, these methods used call the
113
- dataset method of the same name, but as those methods are no
114
- longer defined on datasets by default, they also resulted in a
115
- NoMethodError.
116
-
117
- * Dataset#query!, #set_defaults!, and #set_overrides! are no longer
118
- defined on all datasets. They are now only defined on datasets
119
- that use the query or set_overrides extensions.
120
-
121
- * Partial indexes are no longer returned by Database#indexes on MSSQL,
122
- for consistency with PostgreSQL. Note that the same change was
123
- desired for SQLite, but SQLite currently does not offer reflection
124
- support for determining which indexes are partial.
125
-
126
- * Database#foreign_key_list on MSSQL now will return a
127
- SQL::QualifiedIdentifier instead of a symbol for the :table entry if
128
- the schema of the referenced table does not match the schema of the
129
- referencing table.
@@ -1,79 +0,0 @@
1
- = New Features
2
-
3
- * A :before_retry option has been added to Database#transaction, which
4
- specifies a proc to call when retrying if the :retry_on option
5
- is used. This can be used to implement additional logging, sleeping
6
- between retries, or other things.
7
-
8
- * The to_json method :root option in the json_serializer plugin can now
9
- be a string value to specify the name for the object key, instead of
10
- using the underscored model name.
11
-
12
- * Dataset#paged_each now returns an enumerator if not passed a block.
13
-
14
- * You can now set the :instance_specific association option to false.
15
- Previously, it was automatically set to true in some cases. If you
16
- know the association does not depend on anything instance-specific
17
- other than the foreign/primary key, setting this option can allow
18
- Sequel to perform some additional optimizations.
19
-
20
- = Other Improvements
21
-
22
- * Eager loading queries are now skipped if there are no matching keys.
23
- There was code to check this previously, but it was accidently
24
- removed in an earlier refactoring.
25
-
26
- * Eager loading an association with a limit and an eager block and
27
- cascaded associations now works correctly when the window_function
28
- limit strategy is used (the default on databases that support
29
- window functions).
30
-
31
- * Eager loading an association with a limit with an eager block now
32
- works correctly on databases do not support window functions but do
33
- support correlated subqueries.
34
-
35
- * The parent association is now set on associated objects when loading
36
- descendants in the rcte_tree plugin. This allows the parent method
37
- on any of the descendants to work without issuing a database query.
38
-
39
- * The prepared_statements_associations plugin now only uses prepared
40
- statements if association metadata is being cached. Previously, it
41
- would use prepared statements even if association metadata was not
42
- cached, which could leak the prepared statements.
43
-
44
- * Model#dup now duplicates the associations hash for the object.
45
-
46
- * Model#freeze no longer validates an object if the the errors for the
47
- object are already frozen. The static_cache plugin now freezes the
48
- errors before freezing the object, so that it doesn't validate the
49
- object. This can skip many database queries when the
50
- auto_validations plugin is used and there is a unique constraint or
51
- index on the related table.
52
-
53
- * AUTOINCREMENT is now used again on SQLite by default for primary
54
- keys. It was removed when :auto_increment was added to the schema
55
- hashes, but the removal changed SQLite's behavior. This restores
56
- the previous behavior.
57
-
58
- * Microsoft SQL Server's bit type is now recognized as a boolean type
59
- by the schema dumper.
60
-
61
- * The pg_enum extension's create_enum method can now be used in
62
- reversible migrations.
63
-
64
- * set_column_type with the :auto_increment=>true option once again
65
- works on MySQL. It had been broken since Sequel started adding
66
- :auto_increment to the schema hashes.
67
-
68
- * The mysql2 adapter now recognizes the :charset option as a synonym
69
- for :encoding.
70
-
71
- * The swift adapter now respects database and application timezone
72
- settings.
73
-
74
- = Backwards Compatibility
75
-
76
- * AssociationReflection#apply_ruby_eager_limit_strategy no longer
77
- checks that the strategy is :ruby, callers are now expected to
78
- check the value themselves. This should only matter if you are
79
- using custom association types.
@@ -1,94 +0,0 @@
1
- = New Features
2
-
3
- * SQL::GenericExpression#=~ has been added as an alternative method
4
- of specifying equality/inclusion/identity. Previously, you had to
5
- use a hash. This led to some slightly weird looking syntax when
6
- used inside virtual rows:
7
-
8
- DB[:items].where{{function(:column)=>0}}
9
- # SELECT FROM items WHERE function(column) = 0
10
-
11
- You can now use =~ as an equivalent:
12
-
13
- DB[:items].where{function(:column) =~ 0}
14
- # SELECT FROM items WHERE function(column) = 0
15
-
16
- Like when using a hash, this works also for inclusion:
17
-
18
- DB[:items].where{function(:column) =~ [1,2,3]}
19
- # SELECT FROM items WHERE function(column) IN (1, 2, 3)
20
-
21
- for identity:
22
-
23
- DB[:items].where{function(:column) =~ nil}
24
- # SELECT FROM items WHERE function(column) IS NULL
25
-
26
- and for matching (on MySQL/PostgreSQL):
27
-
28
- DB[:items].where{function(:column) =~ /foo/i}
29
- # SELECT FROM items WHERE function(column) ~* 'foo'
30
-
31
- This new syntax makes more complex conditions simpler to express:
32
-
33
- DB[:items].where{(function(:column) =~ 0) | (column =~ 1)}
34
- # SELECT FROM items WHERE function(column) = 0 OR column = 1
35
-
36
- compared to previous versions of Sequel:
37
-
38
- DB[:items].where{Sequel.|({function(:column) => 0}, {:column => 1})}
39
-
40
- On ruby 1.9+, you can also use SQL::GenericExpression#!~ to invert
41
- the condition:
42
-
43
- DB[:items].where{function(:column) !~ 0}
44
- # SELECT FROM items WHERE function(column) != 0
45
-
46
- DB[:items].where{function(:column) !~ [1,2,3]}
47
- # SELECT FROM items WHERE function(column) NOT IN (1, 2, 3)
48
-
49
- DB[:items].where{function(:column) !~ nil}
50
- # SELECT FROM items WHERE function(column) IS NOT NULL
51
-
52
- DB[:items].where{function(:column) !~ /foo/i}
53
- # SELECT FROM items WHERE function(column) !~* 'foo'
54
-
55
- This makes it simpler to write inverted conditions. Ruby 1.8
56
- doesn't support overriding the !~ method, but you can still use the
57
- unary ~ method to invert:
58
-
59
- DB[:items].where{~(function(:column) =~ 0)}
60
-
61
- * Database#add_named_conversion_proc has been added on PostgreSQL to
62
- make it easier to add conversion procs by name instead of by OID:
63
-
64
- DB.add_named_conversion_proc(:citext){|s| s}
65
-
66
- * Database#full_text_search on PostgreSQL now supports :tsquery and
67
- :tsvector options for using existing tsquery and/or tsvector
68
- arguments, instead of assuming the arguments are query terms or
69
- the text to be search.
70
-
71
- = Other Improvements
72
-
73
- * Database#transaction now works inside after_commit and
74
- after_rollback hooks. Previously, it didn't work correctly as it
75
- thought it was already inside the previously committed/rolled back
76
- transaction.
77
-
78
- * Sequel.pg_jsonb now returns JSONBOp instances instead of JSONOp
79
- instances when passed other than Array or Hash.
80
-
81
- * The tinytds adapter no longer tries to cancel a query on a closed
82
- connection, which was causing an exception to be raised.
83
-
84
- = Backwards Compatibility
85
-
86
- * The default root name used in the JSON serializer is now demodulized
87
- before being underscored. This changes the behavior when the model
88
- is namespaced. For example, if the model class name is Mod::Model,
89
- the previous default root name would be "mod/model", the new default
90
- root name is "model".
91
-
92
- * If you were calling =~ or !~ on SQL::GenericExpression objects and
93
- expecting the default ruby behavior of returning nil for =~ and
94
- true for !~, you'll have to update your code.
@@ -1,72 +0,0 @@
1
- = New Features
2
-
3
- * A csv_serializer plugin has been added, for serializing model
4
- objects and datasets to CSV, or parsing CSV into a model
5
- object or array of model objects. Behavior and API is similar to
6
- the existing xml_serializer and json_serializer plugins.
7
-
8
- * Sequel::MassAssignmentRestriction is now raised for mass assignment
9
- errors in strict mode (the default). Previously the generic
10
- Sequel::Error was used.
11
-
12
- = Other Improvements
13
-
14
- * On Ruby 1.9+, Sequel now uses condition variables instead of busy
15
- waiting for connections in the threaded conection pools. This
16
- can significantly decrease overhead when waiting for connections,
17
- which can improve performance on machines that are compute
18
- bottlenecked. This also makes the connection pool checkouts more
19
- fair, reducing the chance that a request for a connection will
20
- fail with a PoolTimeout when under heavy resource contention.
21
-
22
- * Sequel now attempts to avoid hash allocations and rehashing in
23
- performance sensitive code. This can speed up Dataset#clone,
24
- Model#clone, and #Model#dup by about 60%, and speed up method
25
- chains such as:
26
-
27
- ds.select(:a).where(:a=>1).order(1)
28
-
29
- by almost 20%.
30
-
31
- * Symbol#to_proc is used instead of explicit blocks across the
32
- the library, which should improve performance slightly on Ruby 1.9+.
33
-
34
- * When Model#cancel_action is used in association before hooks,
35
- Sequel will now return false if raise_on_save_failure = false,
36
- instead of raising an exception. This mirrors the behavior
37
- when Model#cancel_action is used inside model save hooks when
38
- raise_on_save_failure = false.
39
-
40
- * Dataset#to_hash and #to_hash_groups now work correctly on model
41
- datasets when given a single array argument.
42
-
43
- * The auto_validations plugin now works correctly on columns that
44
- have a default value, but where the default value is not parseable
45
- into a ruby object by the adapter.
46
-
47
- * The tree plugin now correctly sets the reciprocal association
48
- in the children association it creates.
49
-
50
- * In the pg_array extension, if the :default value when creating a
51
- column is set to a ruby array, Sequel will now convert it to a
52
- PostgreSQL array.
53
-
54
- * Sequel no longer adds a :max_length entry to the schema for
55
- varchar(max) columns on Microsoft SQL Server.
56
-
57
- * Adapters now are specified to set the :default schema entry for
58
- columns to nil if the adapter can determine the :default is nil.
59
- Adapters that ship with Sequel already did this, but previously
60
- it was unspecified behavior.
61
-
62
- * Sequel no longer silently ignores the :jdbc_properties Database
63
- option in the jdbc adapter. Previously, it only used the
64
- :jdbc_properties option if it was not able to connect without it.
65
-
66
- * Bit types are now converted to boolean values in the ODBC adapter.
67
-
68
- = Backwards Compatibility
69
-
70
- * The db2, dbi, fdbsql, firebird, jdbc/fdbsql, informix, and openbase
71
- adapters are now deprecated and will be removed in a future version
72
- of Sequel.
@@ -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.