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,226 +0,0 @@
1
- = Performance Enhancements
2
-
3
- * Dataset literalization for simple datasets is now faster by
4
- creating a per-adapter SQL literalization method instead of
5
- having all adapters share a generic method with higher overhead.
6
- Sequel.split_symbol now caches results globally. Symbol
7
- literalization is now cached per Database.
8
-
9
- Combining these three optimizations, here are the performance
10
- increases compared to 4.9.0 for a couple example datasets:
11
-
12
- ds1 = DB[:a]
13
- ds2 = DB[:a].select(:a, :b).where(:c=>1).order(:d, :e)
14
-
15
- .sql .all (1 row)
16
- ds1 140% 11%
17
- ds2 187% 32%
18
-
19
- * Regular association loading now uses a placeholder literalizer
20
- in most cases, for up to an 85% improvement when loading
21
- simple associations.
22
-
23
- * Eager loading associations using Dataset#eager now uses a
24
- placeholder literalizer in most cases, for up to a
25
- 20% improvement when eager loading simple associations.
26
-
27
- * Eager loading associations with limits using Dataset#eager now
28
- uses a UNION-based strategy by default. After extensive
29
- testing, this was found to be the fastest strategy if the
30
- key columns are indexed. Unfortunately, it is a much slower
31
- strategy if the key columns are not indexed. You can override
32
- the default UNION strategy by using the :eager_limit_strategy
33
- association option.
34
-
35
- On some databases, execution time of UNION queries with n subqueries
36
- increases faster than O(n). Also, there are limits on the number of
37
- subqueries supported in a single UNION query. Sequel chooses a
38
- default limit of 40 subqueries per UNION query. You can increase
39
- this via the :subqueries_per_union association option.
40
-
41
- * Dataset#import and #multi_insert can now insert multiple rows
42
- in a single query on H2, HSQLDB, Derby, SQLAnywhere, CUBRID,
43
- SQLite, Oracle, DB2, and Firebird, which should be significantly
44
- faster than previous versions that issued a separate INSERT query
45
- per row.
46
-
47
- * The many_to_many setter method in the association_pks plugin now
48
- uses Dataset#import to insert many rows at once, instead of using
49
- a seperate query per insert.
50
-
51
- * The jdbc adapter's type conversion has been rewritten to be
52
- more similar to the other adapters, setting up the type
53
- conversion procs before iterating over results. This increases
54
- performance up to 20%.
55
-
56
- * The jdbc/oracle adapter now defaults to a fetch_size of 100,
57
- similar to the oci8-based oracle adapter, significantly improving
58
- performance for large datasets.
59
-
60
- = New Features
61
-
62
- * Database#transaction now supports an :auto_savepoint option. This
63
- option makes it so that transactions inside the transaction block
64
- automatically use savepoints unless they use the :savepoint=>false
65
- option. This should make testing transactional behavior easier.
66
-
67
- * Model.prepared_finder has been added. This has an API similar to
68
- Model.finder, but it uses a prepared statement instead of a
69
- placeholder literalizer. It is less flexible than Model.finder
70
- as prepared statements have fixed SQL, but it may perform better.
71
-
72
- * Common table expressions (WITH clauses) are now supported on SQLite
73
- 3.8.3+.
74
-
75
- * :correlated_subquery has been added as an eager_graph and filter by
76
- association limit strategy for one_to_one and one_to_many
77
- associations. In certain cases it was found that this is faster
78
- than the :window_function limit strategy. It is the default
79
- filter by associations limit strategy on databases that do not
80
- support window functions.
81
-
82
- Filtering by limited associations using a correlated subquery
83
- strategy does not work in all cases, but it should handle most
84
- cases correctly.
85
-
86
- * The prepared_statement_associations plugin now handles
87
- one_through_one and one_through_many associations.
88
-
89
- * Sequel now emulates support for offsets without limits on MySQL,
90
- SQLite, H2, SQLAnywhere, and CUBRID.
91
-
92
- * In the jdbc adapter, the Database#fetch_size accessor and
93
- :fetch_size option can be used to automatically set the JDBC
94
- fetch size for JDBC Statement objects created by the database.
95
-
96
- * Dataset#with_fetch_size has been added to jdbc adapter datasets,
97
- setting the fetch size to use on ResultSets generated by the
98
- dataset. This generally has the effect of overriding the
99
- Database fetch_size setting.
100
-
101
- * On MySQL 5.6.5+, Sequel supports a :fractional_seconds Database
102
- option, which will use fractional seconds for timestamp values,
103
- and have the schema modification code create timestamp columns
104
- that accept fractional timestamps by default.
105
-
106
- * Database#call_mssql_sproc on Microsoft SQL Server now handles named
107
- parameters:
108
-
109
- DB.call_mssql_sproc(:sproc_name, :args => {
110
- 'input_arg1_name' => 'input arg1 value',
111
- 'input_arg2_name' => 'input arg2 value',
112
- 'output_arg_name' => [:output, 'int', 'result key name']
113
- })
114
-
115
- * Database#drop_view now supports an :if_exists option on SQLite,
116
- MySQL, H2, and HSQLDB.
117
-
118
- * Database#drop_table now supports an :if_exists option on HSQLDB.
119
-
120
- * A :filter_limit_strategy association option has been added, for
121
- choosing the strategy that will be used when filtering/excluding by
122
- associations with limits. For backwards compatibility, Sequel will
123
- fallback to looking at the :eager_limit_strategy option.
124
-
125
- * A :server_version Database option is now supported on Microsoft SQL
126
- Server, which will use the value given instead of querying for it.
127
-
128
- = Other Improvements
129
-
130
- * Dataset::PlaceholderLiteralizer arguments are how handled
131
- correctly when emulating offsets via the row_number window function
132
- on DB2, MSSQL <=2012, and Oracle.
133
-
134
- * Dataset::PlaceholderLiteralizer now handles DelayedEvaluation
135
- objects correctly.
136
-
137
- * Offset emulation is skipped if static SQL is used on Access,
138
- DB2, and MSSQL <=2008.
139
-
140
- * Additional disconnect errors are now recognized in the postgres
141
- adapter.
142
-
143
- * The :foreign_key_constraint_name option is now respected when
144
- adding a foreign key column to an existing table on MySQL.
145
-
146
- * Sequel now attempts to work around a bug on MySQL 5.6+ when
147
- combining DROP FOREIGN KEY and DROP INDEX in the same ALTER TABLE
148
- statement.
149
-
150
- * Dataset#for_update is now respected on H2.
151
-
152
- * Timestamp with local time zone types are now returned as
153
- Time/DateTime objects on jdbc/oracle.
154
-
155
- * Model.include now has the same API as Module.include.
156
-
157
- * Model#marshallable! now works correctly when using the
158
- tactical_eager_loading plugin.
159
-
160
- * The pg_array_associations plugin now attempts to automatically
161
- determine the correct array type to use, and explicitly casts
162
- to that array type in more places.
163
-
164
- * The auto_validations plugin now handles models that select from
165
- subqueries.
166
-
167
- * The association_pks plugin does no longer creates getter and setter
168
- methods for one_through_one associations.
169
-
170
- * bin/sequel now uses the Sequel code in the related lib directory.
171
- This makes it easier to use from a repository checkout.
172
-
173
- = Backwards Compatibility
174
-
175
- * AssociationReflection#associated_dataset now returns a joined
176
- dataset for associations that require joins (e.g. many_to_many).
177
- Anyone using this directly for associations that require joins
178
- probably needs to update their code.
179
-
180
- * Model.associate now adds the association instance methods instead
181
- of relying on the def_#{association_type} method doing so. Anyone
182
- using custom association types probably needs to update their code.
183
-
184
- * Model.eager_loading_dataset, .apply_association_dataset_opts, and
185
- .def_{add_method,association_dataset_methods,remove_methods}
186
- are now deprecated.
187
-
188
- * Key conditions for associations requiring joins have been moved
189
- from the JOIN ON clause to the WHERE clause. This should be
190
- optimized the same by the database, but it can break tests that
191
- expect specific SQL.
192
-
193
- * Dataset#_insert_sql and #_update_sql are now private instead of
194
- protected.
195
-
196
- * The install/uninstall rake tasks have been removed.
197
-
198
- * Model association and association reflection internals have
199
- changed significantly, if you were relying on them, you'll
200
- probably need to update your code.
201
-
202
- * Database transaction internals have changed significantly, if you
203
- were relying on them, you'll probably need to update your code.
204
-
205
- * Dataset literalization internals have changed significantly, with
206
- the Dataset#*_clause_methods private methods being removed.
207
- Custom adapters that used these methods should switch to using the
208
- new Dataset.def_sql_method method.
209
-
210
- * Common table expressions are no longer enabled by default in
211
- Sequel. External adapters for databases that support common
212
- table expressions should define Dataset#supports_cte?(type) to
213
- return true.
214
-
215
- * Support for RETURNING is no longer determined via introspection.
216
- External adapters for databases that support RETURNING should
217
- define Dataset#supports_returning?(type) to return true.
218
-
219
- * The new jdbc adapter type conversion code may not be completely
220
- compatible with the previous code. The currently known case
221
- where it is different is on jdbc/postgresql, when using an
222
- array type where no conversion proc exists, the returned object
223
- will be a ruby array containing java objects, instead of a ruby
224
- array containing ruby objects. It is recommended that
225
- jdbc/postgresql users using array types use the pg_array extension
226
- to avoid this issue.
@@ -1,147 +0,0 @@
1
- = New SQL Function Features
2
-
3
- * SQL::Function now supports an options hash for functions.
4
- Unfortunately, since SQL::Function#initialize does not support
5
- an options hash, you need to use SQL::Function.new! to create
6
- a function with an options hash. You can also call methods on
7
- the SQL::Function instance, which will return a new SQL::Function
8
- with the appropriate option set.
9
-
10
- * SQL::Function#quoted has been added, which will return a new
11
- SQL::Function instance that will quote the function name (if
12
- the database supports quoting function names).
13
-
14
- * SQL::Function#unquoted has been added, which will return a new
15
- SQL::Function instance that will not quote the function name.
16
-
17
- * SQL::Function#lateral has been added, which will return a new
18
- SQL::Function instance that will be preceded by LATERAL when
19
- literalized, useful for set-returning functions.
20
-
21
- * SQL::Function#within_group has been added, for creating
22
- ordered-set and hypothetical-set functions that use WITHIN GROUP.
23
-
24
- * SQL::Function#filter has been added, for creating filtered
25
- aggregate function calls using FILTER.
26
-
27
- * SQL::Function#with_ordinality has been added, for creating set
28
- returning functions that also include a row number for every
29
- row in the set, using WITH ORDINALITY.
30
-
31
- = New PostgreSQL Features
32
-
33
- * The jsonb type added in 9.4 is now supported in the pg_json
34
- extension. To create a jsonb type manually, you need to call
35
- Sequel.pg_jsonb.
36
-
37
- The new json and jsonb functions and operators added in 9.4 are
38
- now supported in the pg_json_ops extension. You can use the jsonb
39
- functions and operators by creating a Postgres::JSONBOp using
40
- Sequel.pg_jsonb_op.
41
-
42
- * Database#full_text_search now takes a :rank option to order by the
43
- ranking.
44
-
45
- * Database#refresh_view now supports a :concurrently option, to
46
- refresh a materialized view concurrently, supported on 9.4+.
47
-
48
- * Postgres::ArrayOp#cardinality has been added to the pg_array_ops
49
- extension, for easy use of the cardinality method added in 9.4.
50
-
51
- * Postgres::ArrayOp#unnest in the pg_array_ops extension now accepts
52
- arguments. PostgreSQL 9.4+ supports this if unnest is used in the
53
- FROM clause.
54
-
55
- = Other New Features
56
-
57
- * Sequel now supports derived column lists (table aliases that include
58
- column aliases) via Sequel.as and SQL::AliasedMethods#as:
59
-
60
- Sequel.as(:table, :alias, [:c1, :c2])
61
- # table AS alias(c1, c2)
62
-
63
- Not all databases support this, but it is in SQL92 and Sequel now
64
- supports it by default. Derived column lists make it easier to
65
- alias columns when using set-returning functions.
66
-
67
- Dataset#from_self now supports derived column lists via the new
68
- :column_aliases option (which requires the :alias option to take
69
- effect).
70
-
71
- * Database#create_view now supports a :check option, to use
72
- WITH CHECK OPTION. You can also use :check=>:local for
73
- WITH LOCAL CHECK OPTION. These clauses make it so when you are
74
- inserting into/updating the view, you can only modify rows in the
75
- underlying table if the result would be returned by the view.
76
-
77
- * The :after_connect Database option proc now can accept two
78
- arguments. If the arity of the proc is 2, Sequel will pass both
79
- the connection object and the shard symbol.
80
-
81
- * The class_table_inheritance plugin now supports a :model_map
82
- option similar to the single_table_inheritance plugin, allowing
83
- use of the plugin without storing ruby class names in the database.
84
- Note that if you use this option, you must set the correct value
85
- for the kind column manually when creating the row.
86
-
87
- * Support for CUBRID/SQLAnywhere emulation has been added to the
88
- mock adapter.
89
-
90
- = Other Improvements
91
-
92
- * Dataset#import now supports a default slice size, which Sequel
93
- sets to 500 on SQLite as that is the limit that SQLite supports in
94
- a single statement.
95
-
96
- * The serialization plugin now only modifies changed_columns in the
97
- setter method if the deserialized value has changed, similar to
98
- how Sequel's standard column setters work. Note that if you are
99
- mutating the deserialized value (i.e. not calling the setter
100
- method), you still need to use the
101
- serialization_modification_detection plugin.
102
-
103
- * Plugins that set column values for new objects before creation now
104
- use before_validation instead of before_create, which works better
105
- when the auto_validations plugin is used.
106
-
107
- * The :read_only transaction option is now applied per-savepoint on
108
- PostgreSQL. Note that this allows you to have a READ ONLY
109
- savepoint in a READ WRITE transaction, it does not allow you to
110
- have a READ WRITE savepoint in a READ ONLY transaction.
111
-
112
- * In the ibm_db adapter, fix warnings when using certain column names.
113
-
114
- * Support connecting to a DB2 catalog name in the ibm_db adapter, by
115
- providing a :database option without a :host or :port option.
116
-
117
- * The mock adapter now sets an emulated version when using MySQL and
118
- SQLite. Additionally, the emulated version for PostgreSQL and
119
- Microsoft SQL Server has been updated.
120
-
121
- = Backwards Compatibility
122
-
123
- * External adapters that override Dataset#as_sql_append now need to
124
- have the method accept two arguments.
125
-
126
- * Model.eager_loading_dataset, .apply_association_dataset_opts, and
127
- .def_{add_method,association_dataset_methods,remove_methods} have
128
- been removed (they were deprecated in 4.10.0).
129
-
130
- * SQL::WindowFunction and SQL::EmulatedFunction classes are now
131
- deprecated, as well as Dataset methods that literalize instances of
132
- these classes. These classes are replaced by using options on
133
- SQL::Function instances.
134
-
135
- * Passing a table_alias argument when creating an SQL::JoinClause
136
- manually is no longer supported. You now need to pass the table as
137
- an SQL::AliasedExpression if the table needs to be aliased.
138
-
139
- * ASTTransformer no longer transforms the table alias for
140
- SQL::JoinClause. This is for consistency with
141
- SQL::AliasedExpression.
142
-
143
- * SQL standard casts are now used in Database#full_text_search, which
144
- can break tests that expect specific SQL.
145
-
146
- * The to_dot extension now uses slightly different output for
147
- SQL::Function and SQL::JoinClause instances.
@@ -1,105 +0,0 @@
1
- = New Features
2
-
3
- * Database#schema now includes :max_length entries for string
4
- columns, specifying the size of the string field. The
5
- auto_validations plugin now uses this information to
6
- automatically set up max_length validations on those fields.
7
-
8
- * The Dataset join methods now support a :reset_implicit_qualifier
9
- option. If set to false, this makes the join not reset the
10
- implicit qualifier, so that the next join will not consider this
11
- table as the last table joined. Example:
12
-
13
- DB[:a].join(:b, :c=>:d).
14
- join(:e, :f=>:g)
15
- # SELECT * FROM a
16
- # INNER JOIN b ON (b.c = a.d)
17
- # INNER JOIN e ON (e.f = b.g)
18
-
19
- DB[:a].join(:b, {:c=>:d}, :reset_implicit_qualifier=>false).
20
- join(:e, :f=>:g)
21
- # SELECT * FROM a
22
- # INNER JOIN b ON (b.c = a.d)
23
- # INNER JOIN e ON (e.f = a.g)
24
-
25
- * The Dataset cross and natural join methods now accept an options
26
- hash. Example:
27
-
28
- DB[:a].cross_join(:b, :table_alias=>:c)
29
- # SELECT * FROM a CROSS JOIN b AS c
30
-
31
- * Model#set_nested_attributes has been added to the nested_attributes
32
- plugin, which allows you to to set the nested_attributes options to
33
- use per-call. This is very helpful if you have multiple forms that
34
- handle associated objects, but with different input fields used
35
- for the associated objects depending on the form. Example:
36
-
37
- album.set_nested_attributes(:tracks,
38
- params[:track_attributes],
39
- :fields=>[:a, :b, :c])
40
-
41
- * Database#values has been added on PostgreSQL, which creates a
42
- dataset that uses VALUES instead of SELECT. Just as PostgreSQL
43
- allows, you can also use orders, limits, and offsets with this
44
- dataset.
45
-
46
- * A :notice_receiver option is now supported in the postgres adapter
47
- if the pg driver is used. This should be a proc, which will be
48
- passed to the pg connection's set_notice_receiver method.
49
-
50
- * A Database :readonly option is now supported in the sqlite adapter,
51
- which opens the database in a read-only mode, causing an error
52
- if a query is issued that would modify the database.
53
-
54
- * A :before_thread_exit option has been added to
55
- Database#listen_for_static_cache_updates in the
56
- pg_static_cache_updater extension, allowing you to run code before
57
- the created thread exits.
58
-
59
- = Other Improvements
60
-
61
- * Eager loading limited associations using a UNION now works
62
- correctly when an association block is used. This fixes a
63
- regression that first occurred in 4.10.0, when the union
64
- eager loader became the default eager loader.
65
-
66
- * When creating a new associated object in the nested_attributes
67
- plugin, where the reciprocal association is a many_to_one
68
- association, set the cached reciprocal object in the new
69
- associated object before saving it.
70
-
71
- This fixes issues when validations in the associated object
72
- require access to the current object, which may not yet be
73
- saved in the database.
74
-
75
- * The prepared_statements and prepared_statements_associations
76
- plugins now automatically use explicit column references when
77
- preparing statements. This fixes issues on PostgreSQL when a
78
- column is added to a table while a prepared statement exists
79
- that selects * from the table. Previously, all further attempts
80
- to use the prepared statement will fail.
81
-
82
- This allows you to run migrations that add columns to tables
83
- while concurrently running an application that uses the
84
- prepared statements plugins. Note that many other schema
85
- modifications can cause issues when running migrations
86
- while concurrently running an application, but most of those
87
- are not specific to usage of prepared statements.
88
-
89
- * Dataset#insert_select on PostgreSQL now respects an existing
90
- RETURNING clause, and won't override it to use RETURNING *.
91
-
92
- A similar fix was applied to the generalized prepared statements
93
- support as well.
94
-
95
- * The interval parser in the pg_interval extension now supports
96
- intervals with 2-10 digits for hours. Previously, it only
97
- supported using 2 digits for hours.
98
-
99
- = Backwards Compatibility
100
-
101
- * The methods and classes deprecated in 4.11.0 have been removed.
102
-
103
- * The nested_attributes internal API has changed significantly. If
104
- you were calling any private nested_attributes methods, you'll
105
- probably need to update your code.