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
data/doc/release_notes/4.2.0.txt
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* LATERAL subqueries are now supported on PostgreSQL 9.3+, HSQLDB,
|
|
4
|
-
and DB2 via Dataset#lateral:
|
|
5
|
-
|
|
6
|
-
DB.from(:a, DB[:b].where(:c=>:a__d).lateral)
|
|
7
|
-
# SELECT * FROM a,
|
|
8
|
-
# LATERAL (SELECT * FROM b WHERE (c = a.d)) AS t1
|
|
9
|
-
|
|
10
|
-
You can use a similar syntax when joining tables:
|
|
11
|
-
|
|
12
|
-
DB[:a].cross_join(DB[:b].where(:c=>:a__d).lateral)
|
|
13
|
-
# SELECT * FROM a
|
|
14
|
-
# CROSS JOIN LATERAL (SELECT * FROM b WHERE (c = a.d)) AS t1
|
|
15
|
-
|
|
16
|
-
If you are using Microsoft SQL Server, you can use the new
|
|
17
|
-
mssql_emulate_lateral_with_apply extension to emulate LATERAL
|
|
18
|
-
subqueries via CROSS/OUTER APPLY.
|
|
19
|
-
|
|
20
|
-
* The static_cache plugin now supports a :frozen=>false option. When
|
|
21
|
-
this option is used, instead of returning the frozen cached values,
|
|
22
|
-
the model now returns new, unfrozen objects that can be modified.
|
|
23
|
-
Note that if you make any database modifications, you are
|
|
24
|
-
responsible for updating the cache manually.
|
|
25
|
-
|
|
26
|
-
* A pg_static_cache_updater extension has been added. This extension
|
|
27
|
-
can automatically update the caches used by the static_cache plugin,
|
|
28
|
-
whenever the underlying database table is updated, using PostgreSQL's
|
|
29
|
-
notification channels.
|
|
30
|
-
|
|
31
|
-
This works by defining triggers on the underlying model tables that
|
|
32
|
-
use NOTIFY, and spinning up a thread in your application processes
|
|
33
|
-
that uses LISTEN, and refreshes the cache for the related model
|
|
34
|
-
whenever it receives a notification that the underlying table has
|
|
35
|
-
been modified.
|
|
36
|
-
|
|
37
|
-
This extension should make it possible to use the static_cache plugin
|
|
38
|
-
with the :frozen=>false option for any table that is small and not
|
|
39
|
-
frequently updated.
|
|
40
|
-
|
|
41
|
-
* A from_block extension has been added that makes Database#from operate
|
|
42
|
-
like Dataset#from in regards to a passed block, allowing you to write
|
|
43
|
-
code like:
|
|
44
|
-
|
|
45
|
-
DB.from{table_returning_function(arg1, arg2)}
|
|
46
|
-
|
|
47
|
-
* Database#supports_partial_indexes? has been added for checking for
|
|
48
|
-
partial index support. Partial indexes are now supported on SQLite
|
|
49
|
-
3.8.0+.
|
|
50
|
-
|
|
51
|
-
* A pg_loose_count extension has been added for fast approximate counts
|
|
52
|
-
of PostgreSQL tables. This uses the system tables and should be
|
|
53
|
-
fairly accurate if the table statistics are up to date:
|
|
54
|
-
|
|
55
|
-
DB.loose_count(:table)
|
|
56
|
-
|
|
57
|
-
* The Dataset#use_cursor method in the postgres adapter now supports
|
|
58
|
-
a :cursor_name option. You can set this option if you want to
|
|
59
|
-
use nested cursors.
|
|
60
|
-
|
|
61
|
-
* The mysql2 adapter now supports a :flags Database option allowing to
|
|
62
|
-
set custom mysql2 flags (e.g. ::Mysql2::Client::MULTI_STATEMENTS).
|
|
63
|
-
|
|
64
|
-
= Other Improvements
|
|
65
|
-
|
|
66
|
-
* Dataset#freeze has been implemented. Previously, it was not
|
|
67
|
-
implemented, so Object#freeze was used, which resulted in a dataset
|
|
68
|
-
that wasn't cloneable. Dataset#freeze now works as expected,
|
|
69
|
-
resulting in a cloneable dataset, but it doesn't allow methods to
|
|
70
|
-
be called that mutate the receiver.
|
|
71
|
-
|
|
72
|
-
* Dataset#dup has been implemented. Previously, it was not
|
|
73
|
-
implemented, so Object#dup was used, which resulted in a dataset
|
|
74
|
-
that shared an options hash with the receiver, so modifying the
|
|
75
|
-
dup's opts could also change the original dataset. Now dup works
|
|
76
|
-
similarly to clone, except that the returned object will not be
|
|
77
|
-
frozen.
|
|
78
|
-
|
|
79
|
-
* Model#dup has been implemented. Previously, it was not implemented,
|
|
80
|
-
so Object#dup was used, which resulted in a model instance that
|
|
81
|
-
shared the values hash with the receiver, so modifying the dup's
|
|
82
|
-
values also changed the original's values. Now, dup does a shallow
|
|
83
|
-
copy of some of the internal data structures as well, so the copy
|
|
84
|
-
is more independent.
|
|
85
|
-
|
|
86
|
-
Note that you still need to be careful if you mutate objects:
|
|
87
|
-
|
|
88
|
-
m = Model.new(:a=>'a')
|
|
89
|
-
m2 = m.dup
|
|
90
|
-
m.a.gsub!('a', 'b') # also changes m2
|
|
91
|
-
|
|
92
|
-
* Model#clone has been implemented. Previously, it had the same
|
|
93
|
-
issues as dup. Now, it calls the new Model#dup, but also
|
|
94
|
-
freezes the returned object if the receiver is frozen.
|
|
95
|
-
|
|
96
|
-
* Placeholder literal strings with an empty parameter hash are now
|
|
97
|
-
handled correctly.
|
|
98
|
-
|
|
99
|
-
= Backwards Compatibility
|
|
100
|
-
|
|
101
|
-
* The static_cache plugin now disallows saving/destroying instances
|
|
102
|
-
unless the :frozen=>false option is used. As the cached objects
|
|
103
|
-
returned by the model were frozen anyway, this affects creating
|
|
104
|
-
new instances or saving/destroying instances returned from the
|
|
105
|
-
underlying dataset.
|
|
106
|
-
|
|
107
|
-
* Model#set_values has been removed (it was deprecated starting in
|
|
108
|
-
Sequel 4.0).
|
|
109
|
-
|
|
110
|
-
* The following Model class methods are no longer defined:
|
|
111
|
-
insert_multiple, set, to_csv, paginate, query, set_overrides,
|
|
112
|
-
set_defaults. By default, these methods used call the
|
|
113
|
-
dataset method of the same name, but as those methods are no
|
|
114
|
-
longer defined on datasets by default, they also resulted in a
|
|
115
|
-
NoMethodError.
|
|
116
|
-
|
|
117
|
-
* Dataset#query!, #set_defaults!, and #set_overrides! are no longer
|
|
118
|
-
defined on all datasets. They are now only defined on datasets
|
|
119
|
-
that use the query or set_overrides extensions.
|
|
120
|
-
|
|
121
|
-
* Partial indexes are no longer returned by Database#indexes on MSSQL,
|
|
122
|
-
for consistency with PostgreSQL. Note that the same change was
|
|
123
|
-
desired for SQLite, but SQLite currently does not offer reflection
|
|
124
|
-
support for determining which indexes are partial.
|
|
125
|
-
|
|
126
|
-
* Database#foreign_key_list on MSSQL now will return a
|
|
127
|
-
SQL::QualifiedIdentifier instead of a symbol for the :table entry if
|
|
128
|
-
the schema of the referenced table does not match the schema of the
|
|
129
|
-
referencing table.
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* A :before_retry option has been added to Database#transaction, which
|
|
4
|
-
specifies a proc to call when retrying if the :retry_on option
|
|
5
|
-
is used. This can be used to implement additional logging, sleeping
|
|
6
|
-
between retries, or other things.
|
|
7
|
-
|
|
8
|
-
* The to_json method :root option in the json_serializer plugin can now
|
|
9
|
-
be a string value to specify the name for the object key, instead of
|
|
10
|
-
using the underscored model name.
|
|
11
|
-
|
|
12
|
-
* Dataset#paged_each now returns an enumerator if not passed a block.
|
|
13
|
-
|
|
14
|
-
* You can now set the :instance_specific association option to false.
|
|
15
|
-
Previously, it was automatically set to true in some cases. If you
|
|
16
|
-
know the association does not depend on anything instance-specific
|
|
17
|
-
other than the foreign/primary key, setting this option can allow
|
|
18
|
-
Sequel to perform some additional optimizations.
|
|
19
|
-
|
|
20
|
-
= Other Improvements
|
|
21
|
-
|
|
22
|
-
* Eager loading queries are now skipped if there are no matching keys.
|
|
23
|
-
There was code to check this previously, but it was accidently
|
|
24
|
-
removed in an earlier refactoring.
|
|
25
|
-
|
|
26
|
-
* Eager loading an association with a limit and an eager block and
|
|
27
|
-
cascaded associations now works correctly when the window_function
|
|
28
|
-
limit strategy is used (the default on databases that support
|
|
29
|
-
window functions).
|
|
30
|
-
|
|
31
|
-
* Eager loading an association with a limit with an eager block now
|
|
32
|
-
works correctly on databases do not support window functions but do
|
|
33
|
-
support correlated subqueries.
|
|
34
|
-
|
|
35
|
-
* The parent association is now set on associated objects when loading
|
|
36
|
-
descendants in the rcte_tree plugin. This allows the parent method
|
|
37
|
-
on any of the descendants to work without issuing a database query.
|
|
38
|
-
|
|
39
|
-
* The prepared_statements_associations plugin now only uses prepared
|
|
40
|
-
statements if association metadata is being cached. Previously, it
|
|
41
|
-
would use prepared statements even if association metadata was not
|
|
42
|
-
cached, which could leak the prepared statements.
|
|
43
|
-
|
|
44
|
-
* Model#dup now duplicates the associations hash for the object.
|
|
45
|
-
|
|
46
|
-
* Model#freeze no longer validates an object if the the errors for the
|
|
47
|
-
object are already frozen. The static_cache plugin now freezes the
|
|
48
|
-
errors before freezing the object, so that it doesn't validate the
|
|
49
|
-
object. This can skip many database queries when the
|
|
50
|
-
auto_validations plugin is used and there is a unique constraint or
|
|
51
|
-
index on the related table.
|
|
52
|
-
|
|
53
|
-
* AUTOINCREMENT is now used again on SQLite by default for primary
|
|
54
|
-
keys. It was removed when :auto_increment was added to the schema
|
|
55
|
-
hashes, but the removal changed SQLite's behavior. This restores
|
|
56
|
-
the previous behavior.
|
|
57
|
-
|
|
58
|
-
* Microsoft SQL Server's bit type is now recognized as a boolean type
|
|
59
|
-
by the schema dumper.
|
|
60
|
-
|
|
61
|
-
* The pg_enum extension's create_enum method can now be used in
|
|
62
|
-
reversible migrations.
|
|
63
|
-
|
|
64
|
-
* set_column_type with the :auto_increment=>true option once again
|
|
65
|
-
works on MySQL. It had been broken since Sequel started adding
|
|
66
|
-
:auto_increment to the schema hashes.
|
|
67
|
-
|
|
68
|
-
* The mysql2 adapter now recognizes the :charset option as a synonym
|
|
69
|
-
for :encoding.
|
|
70
|
-
|
|
71
|
-
* The swift adapter now respects database and application timezone
|
|
72
|
-
settings.
|
|
73
|
-
|
|
74
|
-
= Backwards Compatibility
|
|
75
|
-
|
|
76
|
-
* AssociationReflection#apply_ruby_eager_limit_strategy no longer
|
|
77
|
-
checks that the strategy is :ruby, callers are now expected to
|
|
78
|
-
check the value themselves. This should only matter if you are
|
|
79
|
-
using custom association types.
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* SQL::GenericExpression#=~ has been added as an alternative method
|
|
4
|
-
of specifying equality/inclusion/identity. Previously, you had to
|
|
5
|
-
use a hash. This led to some slightly weird looking syntax when
|
|
6
|
-
used inside virtual rows:
|
|
7
|
-
|
|
8
|
-
DB[:items].where{{function(:column)=>0}}
|
|
9
|
-
# SELECT FROM items WHERE function(column) = 0
|
|
10
|
-
|
|
11
|
-
You can now use =~ as an equivalent:
|
|
12
|
-
|
|
13
|
-
DB[:items].where{function(:column) =~ 0}
|
|
14
|
-
# SELECT FROM items WHERE function(column) = 0
|
|
15
|
-
|
|
16
|
-
Like when using a hash, this works also for inclusion:
|
|
17
|
-
|
|
18
|
-
DB[:items].where{function(:column) =~ [1,2,3]}
|
|
19
|
-
# SELECT FROM items WHERE function(column) IN (1, 2, 3)
|
|
20
|
-
|
|
21
|
-
for identity:
|
|
22
|
-
|
|
23
|
-
DB[:items].where{function(:column) =~ nil}
|
|
24
|
-
# SELECT FROM items WHERE function(column) IS NULL
|
|
25
|
-
|
|
26
|
-
and for matching (on MySQL/PostgreSQL):
|
|
27
|
-
|
|
28
|
-
DB[:items].where{function(:column) =~ /foo/i}
|
|
29
|
-
# SELECT FROM items WHERE function(column) ~* 'foo'
|
|
30
|
-
|
|
31
|
-
This new syntax makes more complex conditions simpler to express:
|
|
32
|
-
|
|
33
|
-
DB[:items].where{(function(:column) =~ 0) | (column =~ 1)}
|
|
34
|
-
# SELECT FROM items WHERE function(column) = 0 OR column = 1
|
|
35
|
-
|
|
36
|
-
compared to previous versions of Sequel:
|
|
37
|
-
|
|
38
|
-
DB[:items].where{Sequel.|({function(:column) => 0}, {:column => 1})}
|
|
39
|
-
|
|
40
|
-
On ruby 1.9+, you can also use SQL::GenericExpression#!~ to invert
|
|
41
|
-
the condition:
|
|
42
|
-
|
|
43
|
-
DB[:items].where{function(:column) !~ 0}
|
|
44
|
-
# SELECT FROM items WHERE function(column) != 0
|
|
45
|
-
|
|
46
|
-
DB[:items].where{function(:column) !~ [1,2,3]}
|
|
47
|
-
# SELECT FROM items WHERE function(column) NOT IN (1, 2, 3)
|
|
48
|
-
|
|
49
|
-
DB[:items].where{function(:column) !~ nil}
|
|
50
|
-
# SELECT FROM items WHERE function(column) IS NOT NULL
|
|
51
|
-
|
|
52
|
-
DB[:items].where{function(:column) !~ /foo/i}
|
|
53
|
-
# SELECT FROM items WHERE function(column) !~* 'foo'
|
|
54
|
-
|
|
55
|
-
This makes it simpler to write inverted conditions. Ruby 1.8
|
|
56
|
-
doesn't support overriding the !~ method, but you can still use the
|
|
57
|
-
unary ~ method to invert:
|
|
58
|
-
|
|
59
|
-
DB[:items].where{~(function(:column) =~ 0)}
|
|
60
|
-
|
|
61
|
-
* Database#add_named_conversion_proc has been added on PostgreSQL to
|
|
62
|
-
make it easier to add conversion procs by name instead of by OID:
|
|
63
|
-
|
|
64
|
-
DB.add_named_conversion_proc(:citext){|s| s}
|
|
65
|
-
|
|
66
|
-
* Database#full_text_search on PostgreSQL now supports :tsquery and
|
|
67
|
-
:tsvector options for using existing tsquery and/or tsvector
|
|
68
|
-
arguments, instead of assuming the arguments are query terms or
|
|
69
|
-
the text to be search.
|
|
70
|
-
|
|
71
|
-
= Other Improvements
|
|
72
|
-
|
|
73
|
-
* Database#transaction now works inside after_commit and
|
|
74
|
-
after_rollback hooks. Previously, it didn't work correctly as it
|
|
75
|
-
thought it was already inside the previously committed/rolled back
|
|
76
|
-
transaction.
|
|
77
|
-
|
|
78
|
-
* Sequel.pg_jsonb now returns JSONBOp instances instead of JSONOp
|
|
79
|
-
instances when passed other than Array or Hash.
|
|
80
|
-
|
|
81
|
-
* The tinytds adapter no longer tries to cancel a query on a closed
|
|
82
|
-
connection, which was causing an exception to be raised.
|
|
83
|
-
|
|
84
|
-
= Backwards Compatibility
|
|
85
|
-
|
|
86
|
-
* The default root name used in the JSON serializer is now demodulized
|
|
87
|
-
before being underscored. This changes the behavior when the model
|
|
88
|
-
is namespaced. For example, if the model class name is Mod::Model,
|
|
89
|
-
the previous default root name would be "mod/model", the new default
|
|
90
|
-
root name is "model".
|
|
91
|
-
|
|
92
|
-
* If you were calling =~ or !~ on SQL::GenericExpression objects and
|
|
93
|
-
expecting the default ruby behavior of returning nil for =~ and
|
|
94
|
-
true for !~, you'll have to update your code.
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* A csv_serializer plugin has been added, for serializing model
|
|
4
|
-
objects and datasets to CSV, or parsing CSV into a model
|
|
5
|
-
object or array of model objects. Behavior and API is similar to
|
|
6
|
-
the existing xml_serializer and json_serializer plugins.
|
|
7
|
-
|
|
8
|
-
* Sequel::MassAssignmentRestriction is now raised for mass assignment
|
|
9
|
-
errors in strict mode (the default). Previously the generic
|
|
10
|
-
Sequel::Error was used.
|
|
11
|
-
|
|
12
|
-
= Other Improvements
|
|
13
|
-
|
|
14
|
-
* On Ruby 1.9+, Sequel now uses condition variables instead of busy
|
|
15
|
-
waiting for connections in the threaded conection pools. This
|
|
16
|
-
can significantly decrease overhead when waiting for connections,
|
|
17
|
-
which can improve performance on machines that are compute
|
|
18
|
-
bottlenecked. This also makes the connection pool checkouts more
|
|
19
|
-
fair, reducing the chance that a request for a connection will
|
|
20
|
-
fail with a PoolTimeout when under heavy resource contention.
|
|
21
|
-
|
|
22
|
-
* Sequel now attempts to avoid hash allocations and rehashing in
|
|
23
|
-
performance sensitive code. This can speed up Dataset#clone,
|
|
24
|
-
Model#clone, and #Model#dup by about 60%, and speed up method
|
|
25
|
-
chains such as:
|
|
26
|
-
|
|
27
|
-
ds.select(:a).where(:a=>1).order(1)
|
|
28
|
-
|
|
29
|
-
by almost 20%.
|
|
30
|
-
|
|
31
|
-
* Symbol#to_proc is used instead of explicit blocks across the
|
|
32
|
-
the library, which should improve performance slightly on Ruby 1.9+.
|
|
33
|
-
|
|
34
|
-
* When Model#cancel_action is used in association before hooks,
|
|
35
|
-
Sequel will now return false if raise_on_save_failure = false,
|
|
36
|
-
instead of raising an exception. This mirrors the behavior
|
|
37
|
-
when Model#cancel_action is used inside model save hooks when
|
|
38
|
-
raise_on_save_failure = false.
|
|
39
|
-
|
|
40
|
-
* Dataset#to_hash and #to_hash_groups now work correctly on model
|
|
41
|
-
datasets when given a single array argument.
|
|
42
|
-
|
|
43
|
-
* The auto_validations plugin now works correctly on columns that
|
|
44
|
-
have a default value, but where the default value is not parseable
|
|
45
|
-
into a ruby object by the adapter.
|
|
46
|
-
|
|
47
|
-
* The tree plugin now correctly sets the reciprocal association
|
|
48
|
-
in the children association it creates.
|
|
49
|
-
|
|
50
|
-
* In the pg_array extension, if the :default value when creating a
|
|
51
|
-
column is set to a ruby array, Sequel will now convert it to a
|
|
52
|
-
PostgreSQL array.
|
|
53
|
-
|
|
54
|
-
* Sequel no longer adds a :max_length entry to the schema for
|
|
55
|
-
varchar(max) columns on Microsoft SQL Server.
|
|
56
|
-
|
|
57
|
-
* Adapters now are specified to set the :default schema entry for
|
|
58
|
-
columns to nil if the adapter can determine the :default is nil.
|
|
59
|
-
Adapters that ship with Sequel already did this, but previously
|
|
60
|
-
it was unspecified behavior.
|
|
61
|
-
|
|
62
|
-
* Sequel no longer silently ignores the :jdbc_properties Database
|
|
63
|
-
option in the jdbc adapter. Previously, it only used the
|
|
64
|
-
:jdbc_properties option if it was not able to connect without it.
|
|
65
|
-
|
|
66
|
-
* Bit types are now converted to boolean values in the ODBC adapter.
|
|
67
|
-
|
|
68
|
-
= Backwards Compatibility
|
|
69
|
-
|
|
70
|
-
* The db2, dbi, fdbsql, firebird, jdbc/fdbsql, informix, and openbase
|
|
71
|
-
adapters are now deprecated and will be removed in a future version
|
|
72
|
-
of Sequel.
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* An update_refresh plugin has been added, for refreshing a model
|
|
4
|
-
instance when updating. The default behavior is to only refresh
|
|
5
|
-
when inserting. However, if you have triggers on the model's table,
|
|
6
|
-
it's a good idea to refresh when updating to pick up the possibly
|
|
7
|
-
changed values. On databases that support UPDATE RETURNING, such as
|
|
8
|
-
PostgreSQL, the update and refresh are done in a single query.
|
|
9
|
-
|
|
10
|
-
* A delay_add_association plugin has been added, for delaying add_*
|
|
11
|
-
method calls for associations until after the receiver has been
|
|
12
|
-
saved, if the receiver is a new object. Example:
|
|
13
|
-
|
|
14
|
-
artist = Artist.new(:name=>'Foo')
|
|
15
|
-
artist.add_album(Album.new(:name=>'Bar'))
|
|
16
|
-
# No database queries yet
|
|
17
|
-
|
|
18
|
-
artist.save # Saves artist, then album
|
|
19
|
-
|
|
20
|
-
* A validate_associated plugin has been added, for validating
|
|
21
|
-
associated objects when validating the current object. This
|
|
22
|
-
was extracted from the nested_attributes plugin, and is also
|
|
23
|
-
used by the delay_add_association plugin. For example,
|
|
24
|
-
if you have an albums association and you want to validate all
|
|
25
|
-
associated objects before saving the current object, you can
|
|
26
|
-
cal validate_associated_object for each object:
|
|
27
|
-
|
|
28
|
-
def validate
|
|
29
|
-
super
|
|
30
|
-
reflection = association_reflection(:albums)
|
|
31
|
-
associations[:albums].each do |obj|
|
|
32
|
-
validate_associated_object(reflection, obj)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
= Other Improvements
|
|
37
|
-
|
|
38
|
-
* Database#transaction now returns the block return value if
|
|
39
|
-
:rollback=>:always is used. Previously, it would return nil in
|
|
40
|
-
that case.
|
|
41
|
-
|
|
42
|
-
* Postgres::JSONBOp#[] and #get_text now return JSONBOp instances
|
|
43
|
-
instead of JSONOp instances.
|
|
44
|
-
|
|
45
|
-
* Model#move_to, #move_up, and #move_down in the list plugin now
|
|
46
|
-
automatically handle out-of-range targets by defaulting to the first
|
|
47
|
-
or last position in the list. Previously, using an out of range
|
|
48
|
-
target would raise an exception.
|
|
49
|
-
|
|
50
|
-
* Database#add_named_conversion_proc on PostgreSQL now works for enum
|
|
51
|
-
types.
|
|
52
|
-
|
|
53
|
-
* dataset.call_sproc(:insert, ...) now works correctly on JDBC.
|
|
54
|
-
|
|
55
|
-
* postgresql:// connection strings are now supported, since that is
|
|
56
|
-
the protocol name supported by libpq.
|
|
57
|
-
|
|
58
|
-
* Sequel has switched from rspec to minitest/spec for testing, and
|
|
59
|
-
now uses random test order when testing. During the conversion
|
|
60
|
-
process, many test order dependency bugs were fixed.
|
|
61
|
-
|
|
62
|
-
= Backwards Compatibility
|
|
63
|
-
|
|
64
|
-
* The deprecated fdbsql, jdbc/fdbsql, and openbase adapters have been
|
|
65
|
-
removed.
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* A pg_inet_ops extension has been added, for DSL support for
|
|
4
|
-
calling PostgreSQL inet functions and operators. Example:
|
|
5
|
-
|
|
6
|
-
r = Sequel.pg_inet_op(:inet)
|
|
7
|
-
|
|
8
|
-
~r # ~inet
|
|
9
|
-
r & :other # inet & other
|
|
10
|
-
r | :other # inet | other
|
|
11
|
-
r << :other # inet << other
|
|
12
|
-
r >> :other # inet >> other
|
|
13
|
-
|
|
14
|
-
r.contained_by(:other) # inet << other
|
|
15
|
-
r.contained_by_or_equals(:other) # inet <<= other
|
|
16
|
-
r.contains(:other) # inet >> other
|
|
17
|
-
r.contains_or_equals(:other) # inet >>= other
|
|
18
|
-
r.contains_or_contained_by(:other) # inet && other
|
|
19
|
-
|
|
20
|
-
r.abbrev # abbrev(inet)
|
|
21
|
-
r.broadcast # broadcast(inet)
|
|
22
|
-
r.family # family(inet)
|
|
23
|
-
r.host # host(inet)
|
|
24
|
-
r.hostmask # hostmask(inet)
|
|
25
|
-
r.masklen # masklen(inet)
|
|
26
|
-
r.netmask # netmask(inet)
|
|
27
|
-
r.network # network(inet)
|
|
28
|
-
r.set_masklen(16) # set_masklen(inet, 16)
|
|
29
|
-
r.text # text(inet)
|
|
30
|
-
|
|
31
|
-
* The association_pks plugin now supports a :delay_pks association
|
|
32
|
-
option. When set to true, this makes the methods created by the
|
|
33
|
-
plugin usable on new objects, by delaying the saving of the
|
|
34
|
-
associated pks until after the new object has been saved. When
|
|
35
|
-
set to :always, this also changes the behavior of the methods
|
|
36
|
-
for existing objects, so that nothing is persisted until the
|
|
37
|
-
object has been saved. Example:
|
|
38
|
-
|
|
39
|
-
Album.plugin :association_pks
|
|
40
|
-
Album.many_to_many :tags, :delay_pks=>true
|
|
41
|
-
|
|
42
|
-
album = Album.new(:tag_pks=>[1,2,3]) # No database query
|
|
43
|
-
album.save # Queries to insert album, and then update albums_tags
|
|
44
|
-
|
|
45
|
-
* The class_table_inheritance plugin now supports subclasses that
|
|
46
|
-
don't require additional columns, and therefore do not need to
|
|
47
|
-
join to additional tables. It now loads the
|
|
48
|
-
single_table_inheritance plugin and supports options that were
|
|
49
|
-
previously only supported by single_table_inheritance, such as the
|
|
50
|
-
:key_map and :key_chooser options.
|
|
51
|
-
|
|
52
|
-
* The validation_helpers plugin now supports a :from=>:values option
|
|
53
|
-
in the validation methods, which will take the value directly from
|
|
54
|
-
the values hash instead of calling the related method. This
|
|
55
|
-
allows validation_helpers to differentiate between validations on
|
|
56
|
-
underlying database column and validations on the model.
|
|
57
|
-
|
|
58
|
-
The auto_validations plugin has been modified to use this feature,
|
|
59
|
-
since all validations it generates are for validations on the
|
|
60
|
-
underlying database columns.
|
|
61
|
-
|
|
62
|
-
* The auto_validations plugin now supports options to pass to each
|
|
63
|
-
of the underlying validation methods:
|
|
64
|
-
|
|
65
|
-
Sequel::Model.plugin :auto_validations,
|
|
66
|
-
:unique_opts=>{:only_if_modified=>true}
|
|
67
|
-
|
|
68
|
-
In addition to :unique_opts, there is support for :not_null_opts
|
|
69
|
-
(for NOT NULL columns without a default), :explicit_not_null_opts
|
|
70
|
-
(for NOT NULL columns with a default), :max_length_opts, and
|
|
71
|
-
:schema_types_opts.
|
|
72
|
-
|
|
73
|
-
* The update_refresh plugin now accepts a :columns option, which
|
|
74
|
-
specifies the columns to refresh. This option is currently only
|
|
75
|
-
respected if the related dataset supports RETURNING.
|
|
76
|
-
|
|
77
|
-
* The :timeout option to Database#listen in the postgres adapter can
|
|
78
|
-
now be a callable object, previously it had to be Numeric. This
|
|
79
|
-
allows you to dynamically change the timeout based on current
|
|
80
|
-
application state.
|
|
81
|
-
|
|
82
|
-
= Other Improvements
|
|
83
|
-
|
|
84
|
-
* The uniqueness validations added by the auto_validations plugin now
|
|
85
|
-
use a symbol key in the related Errors instance if the underlying
|
|
86
|
-
index was on a single column. Previously, the uniqueness
|
|
87
|
-
validations for a single column would use an array key in the
|
|
88
|
-
related Errors instance.
|
|
89
|
-
|
|
90
|
-
* The jdbc subadapters now correctly handle 64-bit autoincrementing
|
|
91
|
-
primary keys.
|
|
92
|
-
|
|
93
|
-
* The jdbc subadapters now work correctly if they issue queries while
|
|
94
|
-
the subadapter is being loaded. This can happen in the
|
|
95
|
-
jdbc/postgresql adapter if the pg_hstore extension is used.
|
|
96
|
-
|
|
97
|
-
= Backwards Compatibility
|
|
98
|
-
|
|
99
|
-
* The deprecated db2 and dbi adapters have been removed.
|