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,57 +0,0 @@
1
- = Improvements
2
-
3
- * Sequel now works with ruby 2.3's --enable-frozen-string-literal,
4
- and all of the library files are set to use frozen string
5
- literals by default.
6
-
7
- A couple adapters and extensions depend on libraries that have
8
- issues with frozen string literals. Pull requests have been sent
9
- to each of those dependencies.
10
-
11
- * The migrators will now raise an exception if a migration file
12
- contains no migrations or more than one migration.
13
-
14
- * The jdbc/postgresql adapter now supports using PostgreSQL specific
15
- types in bound variables. Note that the current version of
16
- jdbc-postgres (9.4.1204) has regressions that affect this, users
17
- who need this support should stick with jdbc-postgres 9.4.1200 or
18
- below.
19
-
20
- * The jdbc/postgresql adapter now works around a regression in Java
21
- method lookup in JRuby 9.0.5.0
22
-
23
- * The setter methods added by the association_pks plugin now do type
24
- casting immediately, instead of right before the data will be used.
25
- This makes them more similar to column setter methods, and ensures
26
- that future calls to the getters that use cached values will
27
- return correctly typecast data.
28
-
29
- * The PostgreSQL array parser in the pg_array extension now handles
30
- arrays with explicit bounds. The explicit bounds are ignored, so
31
- such values do not round trip, and there is currently no support for
32
- creating arrays with explicit bounds.
33
-
34
- * Creating a table with a simple non-incrementing primary key and a
35
- self-referential foreign key now works correctly on MySQL:
36
-
37
- DB.create_table!(:table) do
38
- Integer :id, :primary_key=>true
39
- foreign_key :fk, :table
40
- end
41
-
42
- * Database#disconnect in the oracle adapter now works correctly on
43
- more recent versions of oci8 where #logoff can raise OCIException
44
- instead of OCIInvalidHandle.
45
-
46
- = Backwards Compatibility
47
-
48
- * The pg_array extension no longer defines
49
- Sequel::Postgres::PGArray::JSONCreator. This should only affect
50
- backwards compatibility if you were accessing the constant directly.
51
- The :parser option to Sequel::Postgres::PGArray.register is also no
52
- longer respected, but that should not affect backwards compatibility.
53
-
54
- * The Sequel::Model#convert_cpk_array private method that was added by
55
- the association_pks plugin has been removed.
56
- Sequel::Model#convert_pk_array handles both simple and composite
57
- primary keys now.
@@ -1,132 +0,0 @@
1
- = New Features
2
-
3
- * A no_auto_literal_strings extension has been added, which removes the
4
- automatic usage of strings in filter arguments as literal SQL code.
5
- By default, if you do:
6
-
7
- DB[:albums].where("name > 'N'")
8
-
9
- By default Sequel will treat "name > 'N'" as SQL code. However,
10
- this makes it much easier to introduce SQL injection:
11
-
12
- # SQL Injection vulnerability in default Sequel
13
- DB[:albums].where("name > 'params[:letter]'")
14
-
15
- Sequel does support using placeholders when using literal strings:
16
-
17
- # Safe in default Sequel
18
- DB[:albums].where("name > ?", params[:letter])
19
-
20
- However, if you forget to use placeholders, you can end up with SQL
21
- injection. Accidental usage of filter strings derived from user
22
- input as literal SQL code is probably the most common SQL injection
23
- vector in applications using Sequel.
24
-
25
- With the no_auto_literal_strings extension, passing a plain string
26
- as the first or only argument to a filter method raises an
27
- exception. If you want to use literal SQL code, you have to do so
28
- explicitly:
29
-
30
- DB[:albums].where(Sequel.lit("name > 'N'"))
31
-
32
- You can also specify placeholders when using Sequel.lit:
33
-
34
- DB[:albums].where(Sequel.lit("name > ?", params[:letter]))
35
-
36
- Note that in many cases, you can avoid using literal SQL strings
37
- completely:
38
-
39
- DB[:albums].where{|v| v.name > params[:letter]}
40
-
41
- * one_through_one associations now support a setter method:
42
-
43
- Foo.one_through_one :bar
44
-
45
- foo = Foo[1]
46
- foo.bar = Bar[2]
47
- foo.bar = nil
48
-
49
- This will check the current entry in the join table, and based on
50
- the argument and the current entry, run a DELETE, INSERT, or UPDATE
51
- query, or take no action if the join table is already in the
52
- correct state.
53
-
54
- * Model.default_association_options has been added, which supports
55
- default options for all future associations. You can use this to
56
- do:
57
-
58
- Model.default_association_options = {:read_only=>true}
59
-
60
- Which makes associations not create modification methods by default.
61
- You could still create the modification methods by passing
62
- :read_only=>true when creating association.
63
-
64
- * The tactical_eager_loading plugin now supports two additional
65
- options when calling an association method: :eager and
66
- :eager_reload. Example:
67
-
68
- artist = Artist.all.first
69
-
70
- # Loads all albums for all of the artists,
71
- # and all tracks for all of those albums
72
- artist.albums(:eager=>:tracks)
73
-
74
- # Reload the artists association for all artists
75
- artist.albums(:eager_reload=>true)
76
-
77
- You can also use the :eager option for an eager loading callback:
78
-
79
- # Eagerly load the albums with names starting with A-M
80
- artist.albums(:eager=>proc{|ds| ds.where(:name > 'N')})
81
-
82
- * The association_pks plugin now supports an :association_pks_nil
83
- association option in the association_pks setter, for determining
84
- how nil values should be handled.
85
-
86
- In Sequel <4.31.0, if you provided nil, it would either raise an
87
- exception immediately if :delay_pks was not set, or on saving if
88
- :delay_pks was set.
89
-
90
- In Sequel 4.31.0, if :delay_pks was not set, it would remove all
91
- associated rows. If :delay_pks was set, it would do nothing.
92
-
93
- You can now set :association_pks_nil=>:remove to remove all
94
- associated values on nil, or :association_pks_nil=>:ignore to ignore
95
- a nil value passed to the method. Without :association_pks_nil set,
96
- an exception will be raised.
97
-
98
- * Dataset#delete_from has been added on MySQL, allowing deletions from
99
- multiple tables in a single query:
100
-
101
- DB[:a].join(:b, :a_id=>:id).delete_from(:a, :b).delete
102
- # DELETE a, b FROM a INNER JOIN b ON (b.a_id = a.id)
103
-
104
- * The JDBC schema parser now includes a :remarks entry for each
105
- column, which contains comments on the column.
106
-
107
- = Other Improvements
108
-
109
- * The setter method added by the association_pks plugin now handles
110
- the empty array correctly when :delay_pks is set. Previously, if
111
- the empty array was passed, Sequel made no modifications in this
112
- case. Sequel now correctly removes all associated values if an
113
- empty array is passed.
114
-
115
- * The eager_each plugin now handles eager loading when using
116
- Dataset#first and related methods. Previously, the behavior was
117
- unspecified. In Sequel <4.27.0 Dataset#first did eager loading
118
- correctly in the eager case, but incorrectly in the eager_graph
119
- case. In Sequel 4.27.0-4.31.0, it did not do eager loading in
120
- either case.
121
-
122
- * The tactical_eager_loading plugin will not automatically eager load
123
- if passing a proc or block to an association method, since the proc
124
- or block could be specific to the receiver.
125
-
126
- * Sequel now uses a mutex to synchronize access to the association
127
- cache on MRI, as it does on other ruby implementations.
128
-
129
- = Backwards Compatibility
130
-
131
- * See above for changes in eager_each and association_pks plugin
132
- behavior.
@@ -1,88 +0,0 @@
1
- = New Features
2
-
3
- * A Sequel::Model.require_valid_table accessor has been added. This
4
- setting is false for backwards compatibility, but if set to true,
5
- will raise an error you try to create a model class where an
6
- invalid table name is used or the schema or columns cannot be
7
- determined. This makes it easier to catch bugs, as things will
8
- fail fast, but it means that you must change code like:
9
-
10
- class Foo < Sequel::Model
11
- set_dataset :my_foos
12
- end
13
-
14
- to:
15
-
16
- class Foo < Sequel::Model(:my_foos)
17
- end
18
-
19
- as otherwise Foo will attempt to use the foos table by default
20
- when creating the class, which will raise an error as it is not
21
- the correct table name.
22
-
23
- * Sequel::Database#transaction now supports a :savepoint=>:only
24
- option, which will create a savepoint if already inside a
25
- transaction, but will yield without creating a transaction if
26
- not inside a transaction. The use case for this is when you
27
- are running code that may raise an exception, and you don't
28
- want to invalidate the current transaction state.
29
-
30
- = Other Improvements
31
-
32
- * The graph_each extension now splits results into subhashes when
33
- using Sequel::Dataset#first, as it did before Sequel 4.27.0.
34
-
35
- * On PostgreSQL, Dataset#insert_conflict now accepts an array of
36
- columns as the value for the :target option.
37
-
38
- * You can now pass a Sequel::SQL::Identifier or a
39
- Sequel::SQL::QualifiedIdentifer as the table argument when creating
40
- a foreign key. Previously, only symbols were supported, and using
41
- other values required specifying the :table option. So this will
42
- now work to reference a table that includes a double underscore:
43
-
44
- foreign_key :foo_id, Sequel.identifier(:fo__oo)
45
-
46
- * Creating model classes inside a transaction on PostgreSQL where
47
- the implicit table name isn't correct no longer causes the
48
- transaction to fail.
49
-
50
- Similar issues were also fixed in the boolean_readers,
51
- boolean_subsets, and class_table_inheritance plugins.
52
-
53
- * On PostgreSQL, You can now use the :qualify=>true option in the
54
- schema dumper, to dump using schema-qualified table names.
55
-
56
- * On Microsoft SQL Server, the set_column_allow_null and
57
- set_column_not_null alter table methods now work on varchar(max),
58
- text, and similar columns.
59
-
60
- * On Oracle, Sequel::Database#sequence_for_table now returns nil if
61
- given a table that doesn't exist or that the user does not have
62
- access to.
63
-
64
- * Passing arbitrary objects to a model association method now
65
- indicates that the association should be reloaded, which was
66
- used to work but was broken in Sequel 4.32.0.
67
-
68
- * It is now possible to raise Sequel::ValidationFailed and
69
- Sequel::HookFailed without an argument.
70
-
71
- = Backwards Compatibility
72
-
73
- * Sequel::Model no longer swallows many errors when subclassing or
74
- setting datasets. While this should hopefully not affect backwards
75
- compatibility, it may break things where the methods were raising
76
- exceptions. If this does break backwards compatibility, it is
77
- most likely because it is no longer hiding another bug that should
78
- be fixed. Specific changes include:
79
-
80
- * Model.inherited no longer rescues exceptions raised by set_dataset
81
- * When subclassing a model that has a dataset, the columns and
82
- schema are just copied from the superclass
83
- * Only Sequel::Error is rescued in calls to columns and schema,
84
- before it would rescue StandardError.
85
-
86
- * The Sequel.firebird and Sequel.informix adapter methods have been
87
- removed, they are no longer needed as the firebird and informix
88
- adapters were removed a few versions back.
@@ -1,86 +0,0 @@
1
- = New Features
2
-
3
- * A duplicate_columns_handler extension has been added, for printing a
4
- warning or raising an exception if a dataset returns multiple
5
- columns with the same name. You can set this globally for the
6
- Database:
7
-
8
- DB.extension :duplicate_columns_handler
9
- DB.opts[:on_duplicate_columns] = :warn
10
- DB.opts[:on_duplicate_columns] = proc do |columns|
11
- columns.include?(:foo) ? :raise : :ignore
12
- end
13
-
14
- or for specific datasets:
15
-
16
- ds = DB[:table].extension(:duplicate_columns_handler)
17
- ds = ds.on_duplicate_columns(:raise)
18
- ds = ds.on_duplicate_columns do |columns|
19
- columns.include?(:foo) ? :raise : :ignore
20
- end
21
-
22
- This makes it easier to detect when duplicate columns are returned,
23
- which in some cases can cause undesired behavior, such as the values
24
- for later columns of the same name overwriting values for earlier
25
- columns.
26
-
27
- * The Dataset#to_hash, #to_hash_groups, #select_hash, and
28
- #select_hash_groups methods now take an options hash as a third
29
- argument. This options hash can now contain a :hash option, which
30
- specifies the object in which the resulting values should be
31
- placed. You can use this to have the values inserted into a
32
- custom hash, or another object responding to #[] and #[]=.
33
-
34
- * A validators_operator validation has been added to the
35
- validation_helpers plugin:
36
-
37
- class Example < Sequel::Model
38
- def validate
39
- super
40
- validates_operator(:>, 3, :column1)
41
- validates_operator(:<=, 4, [:column2, :column3])
42
- end
43
- end
44
-
45
- * The pg_range extension now adds a #register_range_type Database
46
- method, supporting per-Database custom range types:
47
-
48
- DB.register_range_type('timerange')
49
-
50
- * The dataset_associations plugin now supports a
51
- :dataset_associations_join association option on associations that
52
- use joined datasets. This option will have the datasets returned
53
- by the dataset association methods join to the same tables that
54
- would be joined when retriving the associated objects, allowing
55
- selected columns, orders, and filters that reference columns in
56
- the joined tables to work correctly.
57
-
58
- * The Database :preconnect option can now be set to :concurrently,
59
- which will create the connections in separate threads. This can
60
- significantly speed up preconnection in high-latency environments.
61
-
62
- * The Database :name option is now supported, holding an arbitrary
63
- name for the database. Currently, it is only used in PoolTimeout
64
- exception messages, but it may be used in other places in the
65
- future.
66
-
67
- = Other Improvements
68
-
69
- * The prepared_statements_safe plugin now works correctly when using
70
- CURRENT_DATE and CURRENT_TIMESTAMP default values for columns.
71
-
72
- * Sequel now recognizes an addition unique constraint violation on
73
- Microsoft SQL Server.
74
-
75
- * PoolTimeout exception messages now include the server/shard to which
76
- the connection was attempted when using the sharded threaded
77
- connection pool.
78
-
79
- = Backwards Compatibility
80
-
81
- * Users of sequel_pg should upgrade to 1.6.17, as older versions of
82
- sequel_pg may not work with Sequel 4.34.0+.
83
-
84
- * Any custom extensions that override Dataset#to_hash,
85
- #to_hash_groups, #select_hash, and #select_hash_groups need to
86
- be modified to add support for accepting the options hash.
@@ -1,130 +0,0 @@
1
- = Forwards Compatibility
2
-
3
- * Ruby 2.4 will unify the Fixnum and Bignum classes into the Integer
4
- class, making both Fixnum and Bignum references to Integer. This
5
- will have the affect of changing the behavior of Sequel migrations
6
- that use a reference to the Bignum class.
7
-
8
- For example, code like this will change behavior in ruby 2.4:
9
-
10
- DB.create_table(:table) do
11
- add_column :column, Bignum
12
- end
13
- # or:
14
- DB.get(Sequel.cast('1', Bignum))
15
-
16
- as this references the Bignum class. On ruby <2.4, this will create
17
- a 64-bit integer column, on ruby 2.4+, it will create a 32-bit
18
- integer column.
19
-
20
- Code like this will be fine and does not need changing:
21
-
22
- DB.create_table(:table) do
23
- Bignum :column
24
- end
25
-
26
- as this calls the Bignum method.
27
-
28
- Sequel now supports the :Bignum symbol as a generic type, so you
29
- can now switch references to the Bignum class to the :Bignum
30
- symbol whenever you want a generic 64-bit integer type:
31
-
32
- DB.create_table(:table) do
33
- add_column :column, :Bignum
34
- end
35
- # or:
36
- DB.get(Sequel.cast('1', :Bignum))
37
-
38
- Note that you should only do this if you are using Sequel 4.35.0+,
39
- as previous versions of Sequel will treat the :Bignum symbol as
40
- a database-specific type named Bignum.
41
-
42
- = New Features
43
-
44
- * A Sequel::Database#log_connection_info accessor has been added. If
45
- set to true, this includes connection information in Sequel's query
46
- log. In threaded connection pools (the default), this makes it
47
- simple to see which connection is executing which queries.
48
-
49
- DB.log_connection_info = true
50
- DB.get(1)
51
- # Logged: (0.000004s) (conn: 9713390226040) SELECT 1 AS v LIMIT
52
-
53
- * Sequel::Model#lock! now supports an optional lock style, instead
54
- of always using FOR UPDATE (which is still the default):
55
-
56
- Example.first.lock!('FOR NO KEY UPDATE')
57
- #=> SELECT * FROM examples WHERE id = 1 FOR NO KEY UPDATE LIMIT 1
58
-
59
- * Sequel::Dataset#skip_locked has been added, which skips locked rows
60
- when returning query results. This is useful whenever you are
61
- implementing a queue or similar data structure. Currently, this is
62
- supported on PostgreSQL 9.5+, Oracle, and Microsoft SQL Server.
63
-
64
- * An sql_comments extension has been added for setting SQL comments
65
- on queries:
66
-
67
- ds = DB[:table].comment("Some Comment").all
68
- # SELECT * FROM table -- Some Comment
69
- #
70
-
71
- All consecutive whitespace in the comment is replaced by a
72
- single space, and the comment ends in a newline so that it works
73
- correctly in subqueries.
74
-
75
- This extension is mostly useful if you are doing analysis of your
76
- database server query log and want to include higher level
77
- information about the query in the comment.
78
-
79
- * A server_logging extension has been added, which includes
80
- server/shard information in the query log, if connection info
81
- is being logged.
82
-
83
- DB.extension :server_logging
84
- DB.log_connection_info = true
85
- DB.get(1)
86
- # Logged: (0.000004s) (conn: 9712828677240, server: read_only)
87
- # SELECT 1 AS v LIMIT 1
88
- DB[:a].insert(:b=>1)
89
- # Logged: (0.000003s) (conn: 9712534040260, server: default)
90
- # INSERT INTO a (b) VALUES (1)
91
-
92
- * On PostgreSQL, Database#full_text_search now supports a
93
- :headline option for adding an extract of the matched text to
94
- the SELECT list.
95
-
96
- * Sequel::Postgres::PGRange#cover? has been added to the pg_range
97
- extension, which works with empty, unbounded, and exclusive
98
- beginning ranges. Previously, using #cover? with these ranges
99
- would raise an exception. Note that cover? is now always
100
- defined, where previously it was only defined on ruby 1.9+.
101
-
102
- = Other Improvements
103
-
104
- * The jdbc adapters now work correctly on JRuby 9.1. Previously,
105
- some parts were broken on JRuby 9.1 due to frozen string literal
106
- issues.
107
-
108
- * Sequel::Dataset#to_hash and #to_hash_groups now work correctly for
109
- model datasets doing eager loading.
110
-
111
- * Using Sequel::Database#transaction with the :rollback=>:always
112
- option now automatically uses a savepoint if supported when run
113
- inside another transaction. If savepoints are not supported,
114
- using :rollback=>:always inside a transaction will now raise an
115
- exception.
116
-
117
- * The delay_add_association plugin now handles hashes and primary keys
118
- passed to the add_* association methods.
119
-
120
- * The json_serializer :include option now works correctly when using
121
- *_to_many associations with the association_proxies plugin.
122
-
123
- * The schema_dumper extension now recognizes bool as a boolean type,
124
- for consistency with the Database schema parser.
125
-
126
- = Backwards Compatibility
127
-
128
- * Custom adapters should switch from using log_yield to
129
- log_connection_yield so that they work correctly when using
130
- log_connection_info.