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