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.
- checksums.yaml +4 -4
- data/CHANGELOG +8 -1922
- data/doc/release_notes/5.30.0.txt +20 -0
- data/lib/sequel/adapters/shared/sqlite.rb +7 -1
- data/lib/sequel/database/transactions.rb +5 -9
- data/lib/sequel/version.rb +1 -1
- metadata +4 -368
- data/Rakefile +0 -151
- data/doc/release_notes/4.0.0.txt +0 -262
- data/doc/release_notes/4.1.0.txt +0 -85
- data/doc/release_notes/4.10.0.txt +0 -226
- data/doc/release_notes/4.11.0.txt +0 -147
- data/doc/release_notes/4.12.0.txt +0 -105
- data/doc/release_notes/4.13.0.txt +0 -169
- data/doc/release_notes/4.14.0.txt +0 -68
- data/doc/release_notes/4.15.0.txt +0 -56
- data/doc/release_notes/4.16.0.txt +0 -36
- data/doc/release_notes/4.17.0.txt +0 -38
- data/doc/release_notes/4.18.0.txt +0 -36
- data/doc/release_notes/4.19.0.txt +0 -45
- data/doc/release_notes/4.2.0.txt +0 -129
- data/doc/release_notes/4.20.0.txt +0 -79
- data/doc/release_notes/4.21.0.txt +0 -94
- data/doc/release_notes/4.22.0.txt +0 -72
- data/doc/release_notes/4.23.0.txt +0 -65
- data/doc/release_notes/4.24.0.txt +0 -99
- data/doc/release_notes/4.25.0.txt +0 -181
- data/doc/release_notes/4.26.0.txt +0 -44
- data/doc/release_notes/4.27.0.txt +0 -78
- data/doc/release_notes/4.28.0.txt +0 -57
- data/doc/release_notes/4.29.0.txt +0 -41
- data/doc/release_notes/4.3.0.txt +0 -40
- data/doc/release_notes/4.30.0.txt +0 -37
- data/doc/release_notes/4.31.0.txt +0 -57
- data/doc/release_notes/4.32.0.txt +0 -132
- data/doc/release_notes/4.33.0.txt +0 -88
- data/doc/release_notes/4.34.0.txt +0 -86
- data/doc/release_notes/4.35.0.txt +0 -130
- data/doc/release_notes/4.36.0.txt +0 -116
- data/doc/release_notes/4.37.0.txt +0 -50
- data/doc/release_notes/4.38.0.txt +0 -67
- data/doc/release_notes/4.39.0.txt +0 -127
- data/doc/release_notes/4.4.0.txt +0 -92
- data/doc/release_notes/4.40.0.txt +0 -179
- data/doc/release_notes/4.41.0.txt +0 -77
- data/doc/release_notes/4.42.0.txt +0 -221
- data/doc/release_notes/4.43.0.txt +0 -87
- data/doc/release_notes/4.44.0.txt +0 -125
- data/doc/release_notes/4.45.0.txt +0 -370
- data/doc/release_notes/4.46.0.txt +0 -404
- data/doc/release_notes/4.47.0.txt +0 -56
- data/doc/release_notes/4.48.0.txt +0 -293
- data/doc/release_notes/4.49.0.txt +0 -222
- data/doc/release_notes/4.5.0.txt +0 -34
- data/doc/release_notes/4.6.0.txt +0 -30
- data/doc/release_notes/4.7.0.txt +0 -103
- data/doc/release_notes/4.8.0.txt +0 -175
- data/doc/release_notes/4.9.0.txt +0 -190
- data/spec/adapter_spec.rb +0 -4
- data/spec/adapters/db2_spec.rb +0 -170
- data/spec/adapters/mssql_spec.rb +0 -828
- data/spec/adapters/mysql_spec.rb +0 -1060
- data/spec/adapters/oracle_spec.rb +0 -371
- data/spec/adapters/postgres_spec.rb +0 -4476
- data/spec/adapters/spec_helper.rb +0 -44
- data/spec/adapters/sqlanywhere_spec.rb +0 -97
- data/spec/adapters/sqlite_spec.rb +0 -652
- data/spec/bin_spec.rb +0 -278
- data/spec/core/connection_pool_spec.rb +0 -1250
- data/spec/core/database_spec.rb +0 -2915
- data/spec/core/dataset_spec.rb +0 -5544
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1498
- data/spec/core/mock_adapter_spec.rb +0 -722
- data/spec/core/object_graph_spec.rb +0 -336
- data/spec/core/placeholder_literalizer_spec.rb +0 -166
- data/spec/core/schema_generator_spec.rb +0 -214
- data/spec/core/schema_spec.rb +0 -1844
- data/spec/core/spec_helper.rb +0 -24
- data/spec/core/version_spec.rb +0 -14
- data/spec/core_extensions_spec.rb +0 -763
- data/spec/core_model_spec.rb +0 -2
- data/spec/core_spec.rb +0 -1
- data/spec/deprecation_helper.rb +0 -30
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -99
- data/spec/extensions/after_initialize_spec.rb +0 -28
- data/spec/extensions/any_not_empty_spec.rb +0 -23
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -125
- data/spec/extensions/association_multi_add_remove_spec.rb +0 -1041
- data/spec/extensions/association_pks_spec.rb +0 -423
- data/spec/extensions/association_proxies_spec.rb +0 -100
- data/spec/extensions/auto_literal_strings_spec.rb +0 -205
- data/spec/extensions/auto_validations_spec.rb +0 -229
- data/spec/extensions/blacklist_security_spec.rb +0 -95
- data/spec/extensions/blank_spec.rb +0 -69
- data/spec/extensions/boolean_readers_spec.rb +0 -93
- data/spec/extensions/boolean_subsets_spec.rb +0 -47
- data/spec/extensions/caching_spec.rb +0 -273
- data/spec/extensions/caller_logging_spec.rb +0 -52
- data/spec/extensions/class_table_inheritance_spec.rb +0 -750
- data/spec/extensions/column_conflicts_spec.rb +0 -75
- data/spec/extensions/column_select_spec.rb +0 -129
- data/spec/extensions/columns_introspection_spec.rb +0 -90
- data/spec/extensions/columns_updated_spec.rb +0 -35
- data/spec/extensions/composition_spec.rb +0 -248
- data/spec/extensions/connection_expiration_spec.rb +0 -151
- data/spec/extensions/connection_validator_spec.rb +0 -144
- data/spec/extensions/constant_sql_override_spec.rb +0 -24
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
- data/spec/extensions/constraint_validations_spec.rb +0 -439
- data/spec/extensions/core_refinements_spec.rb +0 -528
- data/spec/extensions/csv_serializer_spec.rb +0 -183
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -365
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -181
- data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
- data/spec/extensions/def_dataset_method_spec.rb +0 -100
- data/spec/extensions/defaults_setter_spec.rb +0 -150
- data/spec/extensions/delay_add_association_spec.rb +0 -73
- data/spec/extensions/dirty_spec.rb +0 -222
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
- data/spec/extensions/eager_each_spec.rb +0 -62
- data/spec/extensions/eager_graph_eager_spec.rb +0 -100
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/empty_failure_backtraces_spec.rb +0 -60
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/escaped_like_spec.rb +0 -40
- data/spec/extensions/eval_inspect_spec.rb +0 -81
- data/spec/extensions/exclude_or_null_spec.rb +0 -15
- data/spec/extensions/finder_spec.rb +0 -260
- data/spec/extensions/force_encoding_spec.rb +0 -126
- data/spec/extensions/freeze_datasets_spec.rb +0 -31
- data/spec/extensions/graph_each_spec.rb +0 -113
- data/spec/extensions/hook_class_methods_spec.rb +0 -402
- data/spec/extensions/identifier_mangling_spec.rb +0 -201
- data/spec/extensions/implicit_subquery_spec.rb +0 -58
- data/spec/extensions/index_caching_spec.rb +0 -66
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -69
- data/spec/extensions/insert_conflict_spec.rb +0 -103
- data/spec/extensions/insert_returning_select_spec.rb +0 -72
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -246
- data/spec/extensions/integer64_spec.rb +0 -22
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -346
- data/spec/extensions/lazy_attributes_spec.rb +0 -183
- data/spec/extensions/list_spec.rb +0 -291
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2177
- data/spec/extensions/migration_spec.rb +0 -864
- data/spec/extensions/modification_detection_spec.rb +0 -93
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
- data/spec/extensions/named_timezones_spec.rb +0 -218
- data/spec/extensions/nested_attributes_spec.rb +0 -815
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -127
- data/spec/extensions/pagination_spec.rb +0 -116
- data/spec/extensions/pg_array_associations_spec.rb +0 -802
- data/spec/extensions/pg_array_ops_spec.rb +0 -144
- data/spec/extensions/pg_array_spec.rb +0 -398
- data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -209
- data/spec/extensions/pg_enum_spec.rb +0 -118
- data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
- data/spec/extensions/pg_hstore_spec.rb +0 -219
- data/spec/extensions/pg_inet_ops_spec.rb +0 -102
- data/spec/extensions/pg_inet_spec.rb +0 -72
- data/spec/extensions/pg_interval_spec.rb +0 -103
- data/spec/extensions/pg_json_ops_spec.rb +0 -356
- data/spec/extensions/pg_json_spec.rb +0 -451
- data/spec/extensions/pg_loose_count_spec.rb +0 -23
- data/spec/extensions/pg_range_ops_spec.rb +0 -60
- data/spec/extensions/pg_range_spec.rb +0 -600
- data/spec/extensions/pg_row_ops_spec.rb +0 -61
- data/spec/extensions/pg_row_plugin_spec.rb +0 -60
- data/spec/extensions/pg_row_spec.rb +0 -363
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
- data/spec/extensions/pg_timestamptz_spec.rb +0 -17
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
- data/spec/extensions/prepared_statements_spec.rb +0 -177
- data/spec/extensions/pretty_table_spec.rb +0 -123
- data/spec/extensions/query_spec.rb +0 -94
- data/spec/extensions/rcte_tree_spec.rb +0 -387
- data/spec/extensions/round_timestamps_spec.rb +0 -39
- data/spec/extensions/s_spec.rb +0 -60
- data/spec/extensions/schema_caching_spec.rb +0 -64
- data/spec/extensions/schema_dumper_spec.rb +0 -870
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -365
- data/spec/extensions/server_block_spec.rb +0 -135
- data/spec/extensions/server_logging_spec.rb +0 -45
- data/spec/extensions/sharding_spec.rb +0 -197
- data/spec/extensions/shared_caching_spec.rb +0 -151
- data/spec/extensions/single_table_inheritance_spec.rb +0 -347
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -18
- data/spec/extensions/spec_helper.rb +0 -70
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -57
- data/spec/extensions/sql_comments_spec.rb +0 -33
- data/spec/extensions/sql_expr_spec.rb +0 -59
- data/spec/extensions/static_cache_cache_spec.rb +0 -35
- data/spec/extensions/static_cache_spec.rb +0 -471
- data/spec/extensions/string_agg_spec.rb +0 -90
- data/spec/extensions/string_date_time_spec.rb +0 -95
- data/spec/extensions/string_stripper_spec.rb +0 -68
- data/spec/extensions/subclasses_spec.rb +0 -79
- data/spec/extensions/subset_conditions_spec.rb +0 -38
- data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
- data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
- data/spec/extensions/synchronize_sql_spec.rb +0 -124
- data/spec/extensions/table_select_spec.rb +0 -83
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -402
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/throw_failures_spec.rb +0 -74
- data/spec/extensions/timestamps_spec.rb +0 -209
- data/spec/extensions/to_dot_spec.rb +0 -153
- data/spec/extensions/touch_spec.rb +0 -226
- data/spec/extensions/tree_spec.rb +0 -334
- data/spec/extensions/typecast_on_load_spec.rb +0 -86
- data/spec/extensions/unlimited_update_spec.rb +0 -21
- data/spec/extensions/update_or_create_spec.rb +0 -83
- data/spec/extensions/update_primary_key_spec.rb +0 -105
- data/spec/extensions/update_refresh_spec.rb +0 -59
- data/spec/extensions/uuid_spec.rb +0 -101
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1040
- data/spec/extensions/validation_contexts_spec.rb +0 -31
- data/spec/extensions/validation_helpers_spec.rb +0 -525
- data/spec/extensions/whitelist_security_spec.rb +0 -157
- data/spec/extensions/xml_serializer_spec.rb +0 -213
- data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
- data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
- data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
- data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
- data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/double_migration/001_create_sessions.rb +0 -9
- data/spec/files/double_migration/002_create_nodes.rb +0 -19
- data/spec/files/double_migration/003_3_create_users.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
- data/spec/files/empty_migration/001_create_sessions.rb +0 -9
- data/spec/files/empty_migration/002_create_nodes.rb +0 -0
- data/spec/files/empty_migration/003_3_create_users.rb +0 -4
- data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
- data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
- data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
- data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
- data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/reversible_migrations/001_reversible.rb +0 -5
- data/spec/files/reversible_migrations/002_reversible.rb +0 -5
- data/spec/files/reversible_migrations/003_reversible.rb +0 -5
- data/spec/files/reversible_migrations/004_reversible.rb +0 -5
- data/spec/files/reversible_migrations/005_reversible.rb +0 -10
- data/spec/files/reversible_migrations/006_reversible.rb +0 -10
- data/spec/files/reversible_migrations/007_reversible.rb +0 -10
- data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
- data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
- data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
- data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
- data/spec/guards_helper.rb +0 -59
- data/spec/integration/associations_test.rb +0 -2597
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -2037
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -262
- data/spec/integration/model_test.rb +0 -203
- data/spec/integration/plugin_test.rb +0 -2423
- data/spec/integration/prepared_statement_test.rb +0 -405
- data/spec/integration/schema_test.rb +0 -903
- data/spec/integration/spec_helper.rb +0 -71
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -603
- data/spec/integration/type_test.rb +0 -127
- data/spec/model/association_reflection_spec.rb +0 -803
- data/spec/model/associations_spec.rb +0 -4738
- data/spec/model/base_spec.rb +0 -875
- data/spec/model/class_dataset_methods_spec.rb +0 -146
- data/spec/model/dataset_methods_spec.rb +0 -198
- data/spec/model/eager_loading_spec.rb +0 -2377
- data/spec/model/hooks_spec.rb +0 -370
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -956
- data/spec/model/plugins_spec.rb +0 -429
- data/spec/model/record_spec.rb +0 -2118
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -220
- data/spec/model_no_assoc_spec.rb +0 -1
- data/spec/model_spec.rb +0 -1
- data/spec/plugin_spec.rb +0 -1
- data/spec/sequel_coverage.rb +0 -15
- data/spec/sequel_warning.rb +0 -5
- data/spec/spec_config.rb +0 -12
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* The =~ and !~ methods are now defined on ComplexExpressions in
|
|
4
|
-
addition to GenericExpressions, allowing the following code to
|
|
5
|
-
work:
|
|
6
|
-
|
|
7
|
-
DB[:table].where{(column1 + column2) =~ column3}
|
|
8
|
-
|
|
9
|
-
* Dataset#group_append has been added for appending to an existing
|
|
10
|
-
GROUP BY clause:
|
|
11
|
-
|
|
12
|
-
ds = DB[:table].group(:column1)
|
|
13
|
-
# SELECT * FROM table GROUP BY column1
|
|
14
|
-
|
|
15
|
-
ds = ds.group_append(:column2)
|
|
16
|
-
# SELECT * FROM table GROUP BY column1, column2
|
|
17
|
-
|
|
18
|
-
* An inverted_subsets plugin has been added, for automatic creation of
|
|
19
|
-
methods for the inversion of the subset criteria. For example:
|
|
20
|
-
|
|
21
|
-
Album.plugin :inverted_subsets
|
|
22
|
-
Album.subset :published, :published=>true
|
|
23
|
-
|
|
24
|
-
Album.published
|
|
25
|
-
# SELECT * FROM albums WHERE published IS TRUE
|
|
26
|
-
|
|
27
|
-
Album.not_published
|
|
28
|
-
# SELECT * FROM albums WHERE published IS NOT TRUE
|
|
29
|
-
|
|
30
|
-
By default, the subset method name is prefixed with "not_". You can
|
|
31
|
-
pass a block to override the default behavior:
|
|
32
|
-
|
|
33
|
-
Album.plugin(:inverted_subsets){|name| "exclude_#{name}"}
|
|
34
|
-
Album.subset :published, :published=>true
|
|
35
|
-
|
|
36
|
-
Album.exclude_published
|
|
37
|
-
# SELECT * FROM albums WHERE published IS NOT TRUE
|
|
38
|
-
|
|
39
|
-
* A singular_table_names plugin has been added, which changes Sequel
|
|
40
|
-
to not pluralize table names by default.
|
|
41
|
-
|
|
42
|
-
Sequel::Model.plugin :singular_table_names
|
|
43
|
-
class FooBar < Sequel::Model; end
|
|
44
|
-
FooBar.table_name # => foo_bar
|
|
45
|
-
|
|
46
|
-
* Dataset#insert_conflict and #insert_ignore have been added on
|
|
47
|
-
PostgreSQL. When using PostgreSQL 9.5+, they allow you to ignore
|
|
48
|
-
unique or exclusion constraint violations on inserting, or to do
|
|
49
|
-
an update instead:
|
|
50
|
-
|
|
51
|
-
DB[:table].insert_conflict.insert(:a=>1, :b=>2)
|
|
52
|
-
# INSERT INTO TABLE (a, b) VALUES (1, 2)
|
|
53
|
-
# ON CONFLICT DO NOTHING
|
|
54
|
-
|
|
55
|
-
You can pass a specific constraint name using :constraint, to only
|
|
56
|
-
ignore a specific constraint violation:
|
|
57
|
-
|
|
58
|
-
DB[:table].insert_conflict(:constraint=>:table_a_uidx).
|
|
59
|
-
insert(:a=>1, :b=>2)
|
|
60
|
-
# INSERT INTO TABLE (a, b) VALUES (1, 2)
|
|
61
|
-
# ON CONFLICT ON CONSTRAINT table_a_uidx DO NOTHING
|
|
62
|
-
|
|
63
|
-
If the unique or exclusion constraint covers the whole table (e.g.
|
|
64
|
-
it isn't a partial unique index), then you can just specify the
|
|
65
|
-
column using the :target option:
|
|
66
|
-
|
|
67
|
-
DB[:table].insert_conflict(:target=>:a).insert(:a=>1, :b=>2)
|
|
68
|
-
# INSERT INTO TABLE (a, b) VALUES (1, 2)
|
|
69
|
-
# ON CONFLICT (a) DO NOTHING
|
|
70
|
-
|
|
71
|
-
If you want to update the existing row instead of ignoring the
|
|
72
|
-
constraint violation, you can pass an :update option with a hash of
|
|
73
|
-
values to update. You must pass either the :target or :constraint
|
|
74
|
-
options when passing the :update option:
|
|
75
|
-
|
|
76
|
-
DB[:table].insert_conflict(:target=>:a,
|
|
77
|
-
:update=>{:b=>:excluded__b}).
|
|
78
|
-
insert(:a=>1, :b=>2)
|
|
79
|
-
# INSERT INTO TABLE (a, b) VALUES (1, 2)
|
|
80
|
-
# ON CONFLICT (a) DO UPDATE SET b = excluded.b
|
|
81
|
-
|
|
82
|
-
Additionally, if you only want to do the update in certain cases,
|
|
83
|
-
you can specify an :update_where option, which will be used as a
|
|
84
|
-
filter. If the row doesn't match the conditions, the constraint
|
|
85
|
-
violation will be ignored, but the row will not be updated:
|
|
86
|
-
|
|
87
|
-
DB[:table].insert_conflict(:constraint=>:table_a_uidx,
|
|
88
|
-
:update=>{:b=>:excluded__b},
|
|
89
|
-
:update_where=>{:table__status_id=>1}).
|
|
90
|
-
insert(:a=>1, :b=>2)
|
|
91
|
-
# INSERT INTO TABLE (a, b) VALUES (1, 2)
|
|
92
|
-
# ON CONFLICT ON CONSTRAINT table_a_uidx
|
|
93
|
-
# DO UPDATE SET b = excluded.b WHERE (table.status_id = 1)
|
|
94
|
-
|
|
95
|
-
* Dataset#group_rollup and #group_cube are now supported when using
|
|
96
|
-
PostgreSQL 9.5+.
|
|
97
|
-
|
|
98
|
-
* Sequel now supports Dataset#returning when using prepared statements
|
|
99
|
-
and bound variables:
|
|
100
|
-
|
|
101
|
-
DB[:table].returning.prepare(:insert, :i, :col=>:$col).
|
|
102
|
-
call(:col=>42)
|
|
103
|
-
# => [{:col=>42}]
|
|
104
|
-
|
|
105
|
-
= Other Improvements
|
|
106
|
-
|
|
107
|
-
* The serialization plugin now integrates with the dirty plugin, so
|
|
108
|
-
that column changes are detected correctly. However, column values
|
|
109
|
-
that are changed and then changed back to the original value are
|
|
110
|
-
still detected as changed.
|
|
111
|
-
|
|
112
|
-
* Dataset#for_update and similar locking methods now cause Sequel not
|
|
113
|
-
to use the :read_only shard if sharding is used.
|
|
114
|
-
|
|
115
|
-
* The association_pks plugin now clears cached delayed associated pks
|
|
116
|
-
when the object is refreshed.
|
|
117
|
-
|
|
118
|
-
* The :collate column option when adding columns now literalizes
|
|
119
|
-
non-String values on PostgreSQL. Previously, the :collate option
|
|
120
|
-
value was used verbatim. This is because PostgreSQL's collations
|
|
121
|
-
generally require quoting as they are uppercase or mixed-case.
|
|
122
|
-
|
|
123
|
-
* Sequel's metadata parsing methods now support Microsoft SQL Server
|
|
124
|
-
2012+ when used in case sensitive mode.
|
|
125
|
-
|
|
126
|
-
* Sequel now recognizes an addition check constraint violation
|
|
127
|
-
exception on SQLite.
|
|
128
|
-
|
|
129
|
-
* Sequel now recognizes constraint violations when using the
|
|
130
|
-
swift/sqlite adapter.
|
|
131
|
-
|
|
132
|
-
* Sequel now automatically REORGs tables when altering them in the
|
|
133
|
-
jdbc/db2 adapter.
|
|
134
|
-
|
|
135
|
-
= Backwards Compatibility
|
|
136
|
-
|
|
137
|
-
* Sequel now defaults to ignoring NULL values when using IN/NOT IN
|
|
138
|
-
with an empty array. Previously, code such as:
|
|
139
|
-
|
|
140
|
-
DB[:table].where(:column=>[])
|
|
141
|
-
|
|
142
|
-
would be literalized as:
|
|
143
|
-
|
|
144
|
-
SELECT * FROM table WHERE (column != column)
|
|
145
|
-
|
|
146
|
-
This yields a NULL value when column is NULL, similarly to how most
|
|
147
|
-
other SQL operators work. Unfortunately, most databases do not
|
|
148
|
-
optimize this, and such a query can require a sequential scan of the
|
|
149
|
-
table.
|
|
150
|
-
|
|
151
|
-
Sequel previously shipped with a empty_array_ignore_nulls extension
|
|
152
|
-
that literalized the query to:
|
|
153
|
-
|
|
154
|
-
SELECT * FROM table WHERE (1 = 0)
|
|
155
|
-
|
|
156
|
-
which databases will generally optimize to a constant false value,
|
|
157
|
-
resulting in much faster queries. This behavior is now the default.
|
|
158
|
-
|
|
159
|
-
Users that desire the previous behavior can use the new
|
|
160
|
-
empty_array_consider_nulls extension.
|
|
161
|
-
|
|
162
|
-
* The deprecated firebird and informix adapters have been removed.
|
|
163
|
-
|
|
164
|
-
* Calling prepare on a prepared statement now raises an exception.
|
|
165
|
-
It was supported accidently before, as prepared statements are
|
|
166
|
-
dataset instances.
|
|
167
|
-
|
|
168
|
-
* Model::DatasetModule#subset now calls Model.subset instead of
|
|
169
|
-
the other way around. This makes it possible to modify the
|
|
170
|
-
behavior of subset in a plugin.
|
|
171
|
-
|
|
172
|
-
* The :collate column option change on PostgreSQL can break code
|
|
173
|
-
that used already quoted values in symbols. For example:
|
|
174
|
-
|
|
175
|
-
String :column_name, collate=>:'"C"'
|
|
176
|
-
|
|
177
|
-
would need to change to:
|
|
178
|
-
|
|
179
|
-
String :column_name, collate=>:C
|
|
180
|
-
# or
|
|
181
|
-
String :column_name, collate=>'"C"'
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* Add Dataset#grouping_sets to support GROUP BY GROUPING SETS on
|
|
4
|
-
PostgreSQL 9.5+, MSSQL 2008+, Oracle, DB2, and SQLAnywhere:
|
|
5
|
-
|
|
6
|
-
DB[:test].group([:type_id, :b], :type_id, []).grouping_sets
|
|
7
|
-
# SELECT * FROM test
|
|
8
|
-
# GROUP BY GROUPING SETS((type_id, b), (type_id), ())
|
|
9
|
-
|
|
10
|
-
* Sequel::NoMatchingRow exceptions raised by Sequel now give access
|
|
11
|
-
to the dataset that raised the exception via the dataset method.
|
|
12
|
-
This makes it easier to write generic error handling code.
|
|
13
|
-
|
|
14
|
-
* Support :if_exists option to drop_column on PostgreSQL:
|
|
15
|
-
|
|
16
|
-
DB.drop_column :t, :col, :if_exists=>true
|
|
17
|
-
ALTER TABLE t DROP COLUMN IF EXISTS col
|
|
18
|
-
|
|
19
|
-
= Other Improvements
|
|
20
|
-
|
|
21
|
-
* Make the class_table_inheritance plugin work correctly without an
|
|
22
|
-
sti_key. This was broken in a recent refactoring to make class
|
|
23
|
-
table inheritance support multiple classes for a single table.
|
|
24
|
-
|
|
25
|
-
* Make Class.new(ModelClass){set_dataset :table} work correctly on
|
|
26
|
-
ruby 1.8. This was broken in a refactoring to allow the
|
|
27
|
-
singular_table_names plugin to work.
|
|
28
|
-
|
|
29
|
-
* Make offset emulation via ROW_NUMBER better handle ambiguous column
|
|
30
|
-
names for datasets without an ORDER BY clause, but with an explicit
|
|
31
|
-
SELECT clause.
|
|
32
|
-
|
|
33
|
-
* Make pg_range extension use PostgreSQL range function constructors
|
|
34
|
-
instead of casting string literals to the appropriate range type,
|
|
35
|
-
if the range type is known. This allows arbitrary expressions to
|
|
36
|
-
be used inside ranges, such as CURRENT_TIMESTAMP in timestamp
|
|
37
|
-
ranges.
|
|
38
|
-
|
|
39
|
-
* Make Dataset#== not consider frozen status.
|
|
40
|
-
|
|
41
|
-
* Allow Dataset#prepare on already prepared statements in situations
|
|
42
|
-
where determining the SQL for a prepared statement requires it.
|
|
43
|
-
|
|
44
|
-
* Detect additional disconnect errors when using the tinytds adapter.
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* A before_after_save plugin has been added, which for newly
|
|
4
|
-
created objects refreshes the object before calling after_create,
|
|
5
|
-
and resets the modified flag before calling after_update.
|
|
6
|
-
Previously, these actions were not taken until after after_save
|
|
7
|
-
was called. This will be the default behavior in Sequel 5.
|
|
8
|
-
|
|
9
|
-
* In create_table blocks, primary_key now supports a :keep_order
|
|
10
|
-
option, which will not change the order in which the primary key
|
|
11
|
-
is added. Without this option, Sequel's historical behavior of
|
|
12
|
-
making the primary key column the first column is used.
|
|
13
|
-
|
|
14
|
-
DB.create_table(:foo) do
|
|
15
|
-
Integer :a
|
|
16
|
-
primary_key :b, :keep_order=>true
|
|
17
|
-
end
|
|
18
|
-
# CREATE TABLE foo
|
|
19
|
-
# (a integer, b integer PRIMARY KEY AUTOINCREMENT)
|
|
20
|
-
|
|
21
|
-
The schema dumper now uses this option if necessary, allowing it
|
|
22
|
-
to correctly dump tables where the primary key column is not the
|
|
23
|
-
first column.
|
|
24
|
-
|
|
25
|
-
* Dataset#single_record! and #single_value! have been added. These
|
|
26
|
-
are faster versions of #single_record and #single_value that
|
|
27
|
-
don't require cloning the dataset. If you are sure the dataset
|
|
28
|
-
will only return a single row or a single value, you can use
|
|
29
|
-
these methods for better performance.
|
|
30
|
-
|
|
31
|
-
* The new jsonb and json functions added in PostgreSQL 9.5 are now
|
|
32
|
-
supported by the pg_json_ops extension.
|
|
33
|
-
|
|
34
|
-
Sequel.pg_jsonb_op(:metadata).set(%w'a b', [1,2,3])
|
|
35
|
-
# jsonb_set("metadata", ARRAY['a','b'], '[1,2,3]'::jsonb, true)
|
|
36
|
-
|
|
37
|
-
= Other Improvements
|
|
38
|
-
|
|
39
|
-
* Sequel.synchronize is no longer a stub on MRI. Testing has shown
|
|
40
|
-
that relying on the global interpreter lock to protect
|
|
41
|
-
multi-threaded access to hashes is not safe in all environments,
|
|
42
|
-
so Sequel now uses a mutex on MRI just as it does on other ruby
|
|
43
|
-
interpreters.
|
|
44
|
-
|
|
45
|
-
* Database#schema now sets the :auto_increment option correctly for
|
|
46
|
-
auto incrementing primary keys if they are not the first column
|
|
47
|
-
in the table.
|
|
48
|
-
|
|
49
|
-
* Dataset#single_value and #with_sql_single_value are now slightly
|
|
50
|
-
faster by avoiding an array allocation.
|
|
51
|
-
|
|
52
|
-
* Model datasets can now use #with_sql_single_value and return a
|
|
53
|
-
single value, instead of an array in [:column_name, value] format.
|
|
54
|
-
|
|
55
|
-
* Model#persisted? in the active_model plugin will now return false
|
|
56
|
-
if the transaction that inserts the row for the object is rolled
|
|
57
|
-
back.
|
|
58
|
-
|
|
59
|
-
* bin/sequel now warns if additional arguments are passed that it
|
|
60
|
-
ignores. In Sequel 5, bin/sequel will raise an error in these
|
|
61
|
-
cases.
|
|
62
|
-
|
|
63
|
-
* Database#foreign_key_list on PostgreSQL now returns referenced
|
|
64
|
-
composite keys in the correct order.
|
|
65
|
-
|
|
66
|
-
* The postgres adapter now works with postgres-pr 0.7.0. Note that
|
|
67
|
-
postgres adapter users that want a pure-ruby driver are encouraged
|
|
68
|
-
to use jeremyevans-postgres-pr as that has many additional bugfixes
|
|
69
|
-
and is the version tested with Sequel on a regular basis.
|
|
70
|
-
|
|
71
|
-
* The jdbc/postgresql adapter now recognizes an additional disconnect
|
|
72
|
-
error.
|
|
73
|
-
|
|
74
|
-
= Backwards Compatibility
|
|
75
|
-
|
|
76
|
-
* Users who were relying on #with_sql_single_value returning an array
|
|
77
|
-
instead of a single value for model datasets need to update their
|
|
78
|
-
code.
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* A subset_conditions plugin has been added, which adds a method
|
|
4
|
-
for each subset that returns the filter conditions for the
|
|
5
|
-
subset. This makes it easier to reuse the subset conditions:
|
|
6
|
-
|
|
7
|
-
class Foo < Sequel::Model
|
|
8
|
-
plugin :subset_conditions
|
|
9
|
-
subset :active, :active=>true
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
Foo.exclude(Foo.active_conditions)
|
|
13
|
-
Foo.where(:a=>1).or(Foo.active_conditions)
|
|
14
|
-
|
|
15
|
-
* A boolean_subsets plugin has been added, which adds a subset for each
|
|
16
|
-
boolean column:
|
|
17
|
-
|
|
18
|
-
# Assume boolean column :active
|
|
19
|
-
Foo.plugin :boolean_subsets
|
|
20
|
-
|
|
21
|
-
Foo.active
|
|
22
|
-
# SELECT * FROM foos WHERE (active IS TRUE)
|
|
23
|
-
|
|
24
|
-
You can provide a block to the plugin to change the arguments passed
|
|
25
|
-
to subset:
|
|
26
|
-
|
|
27
|
-
Foo.plugin :boolean_subsets do |column|
|
|
28
|
-
[:"where_#{column}", column]
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
Foo.where_active
|
|
32
|
-
# SELECT * FROM foos WHERE active
|
|
33
|
-
|
|
34
|
-
As with similar plugins, you can add the boolean_subsets plugin to
|
|
35
|
-
Sequel::Model itself, and all subclasses created afterward will have
|
|
36
|
-
the boolean subset methods automatically created.
|
|
37
|
-
|
|
38
|
-
= Other Improvements
|
|
39
|
-
|
|
40
|
-
* If Model#refresh can't find the related row, Sequel now raises a
|
|
41
|
-
Sequel::NoExistingObject exception instead of a generic
|
|
42
|
-
Sequel::Error exception.
|
|
43
|
-
|
|
44
|
-
* In the csv_serializer plugin, when calling #to_csv on a model class
|
|
45
|
-
or dataset, instead of using #[] to access data, #send is used to
|
|
46
|
-
call methods. This is more similar to other plugins as well as
|
|
47
|
-
Model#to_csv.
|
|
48
|
-
|
|
49
|
-
* The list plugin now works better with the auto_validations plugin,
|
|
50
|
-
or any other time there is a validation on the position column.
|
|
51
|
-
|
|
52
|
-
= Backwards Compatibility
|
|
53
|
-
|
|
54
|
-
* The change to the csv_serializer plugin can change results if you
|
|
55
|
-
are overriding any of the column accessor methods. It can also
|
|
56
|
-
break existing code if one of the columns being used isn't defined
|
|
57
|
-
as a method or the method requires more than one argument.
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* A uuid plugin has now been added. This plugin will automatically
|
|
4
|
-
create a uuid for newly created model objects.
|
|
5
|
-
|
|
6
|
-
Model.plugin :uuid
|
|
7
|
-
Model.create.uuid => # some UUID
|
|
8
|
-
|
|
9
|
-
* Model#json_serializer_opts has been added to the json_serializer
|
|
10
|
-
plugin, allowing you to override the JSON serialization options
|
|
11
|
-
on a per instance basis without passing the options directly
|
|
12
|
-
to Model#to_json. This is useful if you are including the model
|
|
13
|
-
instance inside another datastructure that will be serialized
|
|
14
|
-
to JSON.
|
|
15
|
-
|
|
16
|
-
obj.json_serializer_opts(:root => true)
|
|
17
|
-
[obj].to_json
|
|
18
|
-
# => '[{"obj":{"id":1,"name":"Foo"}}]'
|
|
19
|
-
|
|
20
|
-
= Other Improvements
|
|
21
|
-
|
|
22
|
-
* The Database#transaction :retry_on option now works when using
|
|
23
|
-
savepoints.
|
|
24
|
-
|
|
25
|
-
* Calling Database#table_exists? inside a transaction will now use
|
|
26
|
-
a savepoint if the database supports it, so that if the table
|
|
27
|
-
doesn't exist, it will not affect the state of the transaction.
|
|
28
|
-
|
|
29
|
-
* Blobs can now be used as bound variables in the oracle adapter.
|
|
30
|
-
|
|
31
|
-
* The sqlanywhere adapter now works with database sharding.
|
|
32
|
-
|
|
33
|
-
* The Dataset#full_text_search :rank option has been fixed to order
|
|
34
|
-
by rank descending instead of ascending.
|
|
35
|
-
|
|
36
|
-
* External adapters that do not support INSERT with DEFAULT VALUES
|
|
37
|
-
can now override Dataset#insert_empty_columns_values to set
|
|
38
|
-
the columns and values to use for an empty INSERT.
|
|
39
|
-
|
|
40
|
-
* External adapters can now implement Dataset#date_add_sql_append
|
|
41
|
-
to integrate with the date_arithmetic extension.
|
data/doc/release_notes/4.3.0.txt
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* The tree and rcte_tree plugins now support composite keys.
|
|
4
|
-
|
|
5
|
-
* An error_sql Database extension has been added. This extension
|
|
6
|
-
adds the DatabaseError#sql method, which should return the
|
|
7
|
-
database query that caused the error. This is useful for
|
|
8
|
-
drivers that don't include the SQL used as part of the error
|
|
9
|
-
message.
|
|
10
|
-
|
|
11
|
-
= Other Improvements
|
|
12
|
-
|
|
13
|
-
* Empty blobs are now literalized correctly on MySQL.
|
|
14
|
-
|
|
15
|
-
* Empty arrays are now literalized correctly on PostgreSQL <8.4.
|
|
16
|
-
|
|
17
|
-
* In the pagination extension, Dataset#page_count is now 1 even if
|
|
18
|
-
the dataset is empty. This fixes issues with last_page? and
|
|
19
|
-
page_range returning bad values for empty datasets.
|
|
20
|
-
|
|
21
|
-
* In the pagination extension, calling Dataset#each_page without a
|
|
22
|
-
block now returns an Enumerator.
|
|
23
|
-
|
|
24
|
-
* Dataset#qualify and Sequel.delay now work together, qualifying
|
|
25
|
-
the object returned by the delayed evaluation.
|
|
26
|
-
|
|
27
|
-
* Migrator.migrator_class is now a public method.
|
|
28
|
-
|
|
29
|
-
* The PostgreSQL citext type is now recognized as a string.
|
|
30
|
-
|
|
31
|
-
* Another disconnect error is now recognized in the jdbc/as400
|
|
32
|
-
adapter.
|
|
33
|
-
|
|
34
|
-
* Guides about using and creating Sequel extensions and model
|
|
35
|
-
plugins have been added.
|
|
36
|
-
|
|
37
|
-
= Backwards Compatibility
|
|
38
|
-
|
|
39
|
-
* If you were expecting Dataset#page_count on a empty paginated
|
|
40
|
-
dataset to return 0, you need to update your code.
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* Overriding the :limit and :eager_limit_strategy association options
|
|
4
|
-
can now be done on a per-call basis when eager loading, by using an
|
|
5
|
-
eager block callback and setting the :eager_limit or
|
|
6
|
-
:eager_limit_strategy dataset options. Example:
|
|
7
|
-
|
|
8
|
-
Album.eager(:tracks=>proc{|ds| ds.clone(:eager_limit=>5)}).all
|
|
9
|
-
|
|
10
|
-
* Dataset#insert_conflict and #insert_ignore have been added on
|
|
11
|
-
SQLite, adding support for the INSERT OR ... SQL syntax:
|
|
12
|
-
|
|
13
|
-
DB[:table].insert_ignore.insert(:a=>1, :b=>2)
|
|
14
|
-
# INSERT OR IGNORE INTO TABLE (a, b) VALUES (1, 2)
|
|
15
|
-
|
|
16
|
-
DB[:table].insert_conflict(:replace).insert(:a=>1, :b=>2)
|
|
17
|
-
# INSERT OR REPLACE INTO TABLE (a, b) VALUES (1, 2)
|
|
18
|
-
|
|
19
|
-
* An identifier_columns plugin has been added, which allows
|
|
20
|
-
Sequel::Model#save to work when column names contain double
|
|
21
|
-
underscores.
|
|
22
|
-
|
|
23
|
-
= Other Improvements
|
|
24
|
-
|
|
25
|
-
* IPv6 addresses can now be used in connection URLs when using
|
|
26
|
-
ruby 1.9.3+.
|
|
27
|
-
|
|
28
|
-
* The :db_type entries in column schema hashes now include sizes
|
|
29
|
-
for string and decimal types on DB2 and when using the jdbc
|
|
30
|
-
adapter's generic schema parsing.
|
|
31
|
-
|
|
32
|
-
* Database#row_type in the pg_row extension now handles different
|
|
33
|
-
formats of specifying schema qualified types. So a row type
|
|
34
|
-
registered via :schema__type can be found using
|
|
35
|
-
Sequel.qualify(:schema, :type).
|
|
36
|
-
|
|
37
|
-
* Another disconnect error is recognized in the tinytds adapter.
|