sequel 5.8.0 → 5.38.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 +409 -1795
- data/MIT-LICENSE +1 -1
- data/README.rdoc +4 -4
- data/bin/sequel +4 -0
- data/doc/advanced_associations.rdoc +136 -18
- data/doc/association_basics.rdoc +10 -5
- data/doc/cheat_sheet.rdoc +1 -0
- data/doc/code_order.rdoc +12 -2
- data/doc/dataset_filtering.rdoc +17 -2
- data/doc/mass_assignment.rdoc +3 -3
- data/doc/model_dataset_method_design.rdoc +1 -1
- data/doc/model_plugins.rdoc +1 -1
- data/doc/opening_databases.rdoc +30 -8
- data/doc/postgresql.rdoc +107 -2
- data/doc/release_notes/5.10.0.txt +84 -0
- data/doc/release_notes/5.11.0.txt +83 -0
- data/doc/release_notes/5.12.0.txt +141 -0
- data/doc/release_notes/5.13.0.txt +27 -0
- data/doc/release_notes/5.14.0.txt +63 -0
- data/doc/release_notes/5.15.0.txt +39 -0
- data/doc/release_notes/5.16.0.txt +110 -0
- data/doc/release_notes/5.17.0.txt +31 -0
- data/doc/release_notes/5.18.0.txt +69 -0
- data/doc/release_notes/5.19.0.txt +28 -0
- data/doc/release_notes/5.20.0.txt +89 -0
- data/doc/release_notes/5.21.0.txt +87 -0
- data/doc/release_notes/5.22.0.txt +48 -0
- data/doc/release_notes/5.23.0.txt +56 -0
- data/doc/release_notes/5.24.0.txt +56 -0
- data/doc/release_notes/5.25.0.txt +32 -0
- data/doc/release_notes/5.26.0.txt +35 -0
- data/doc/release_notes/5.27.0.txt +21 -0
- data/doc/release_notes/5.28.0.txt +16 -0
- data/doc/release_notes/5.29.0.txt +22 -0
- data/doc/release_notes/5.30.0.txt +20 -0
- data/doc/release_notes/5.31.0.txt +148 -0
- data/doc/release_notes/5.32.0.txt +46 -0
- data/doc/release_notes/5.33.0.txt +24 -0
- data/doc/release_notes/5.34.0.txt +40 -0
- data/doc/release_notes/5.35.0.txt +56 -0
- data/doc/release_notes/5.36.0.txt +60 -0
- data/doc/release_notes/5.37.0.txt +30 -0
- data/doc/release_notes/5.38.0.txt +28 -0
- data/doc/release_notes/5.9.0.txt +99 -0
- data/doc/security.rdoc +10 -0
- data/doc/sharding.rdoc +42 -28
- data/doc/sql.rdoc +12 -0
- data/doc/testing.rdoc +24 -17
- data/doc/transactions.rdoc +78 -0
- data/doc/validations.rdoc +2 -2
- data/lib/sequel/adapters/ado.rb +26 -18
- data/lib/sequel/adapters/ado/access.rb +2 -2
- data/lib/sequel/adapters/ado/mssql.rb +5 -8
- data/lib/sequel/adapters/amalgalite.rb +1 -1
- data/lib/sequel/adapters/jdbc.rb +71 -27
- data/lib/sequel/adapters/jdbc/mysql.rb +6 -6
- data/lib/sequel/adapters/jdbc/oracle.rb +7 -6
- data/lib/sequel/adapters/jdbc/postgresql.rb +17 -28
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +5 -6
- data/lib/sequel/adapters/jdbc/sqlite.rb +33 -2
- data/lib/sequel/adapters/jdbc/sqlserver.rb +4 -3
- data/lib/sequel/adapters/jdbc/transactions.rb +14 -28
- data/lib/sequel/adapters/mysql.rb +14 -15
- data/lib/sequel/adapters/mysql2.rb +5 -3
- data/lib/sequel/adapters/odbc.rb +4 -6
- data/lib/sequel/adapters/oracle.rb +7 -7
- data/lib/sequel/adapters/postgres.rb +52 -16
- data/lib/sequel/adapters/shared/access.rb +16 -12
- data/lib/sequel/adapters/shared/db2.rb +5 -0
- data/lib/sequel/adapters/shared/mssql.rb +41 -18
- data/lib/sequel/adapters/shared/mysql.rb +66 -19
- data/lib/sequel/adapters/shared/oracle.rb +29 -23
- data/lib/sequel/adapters/shared/postgres.rb +341 -95
- data/lib/sequel/adapters/shared/sqlanywhere.rb +23 -10
- data/lib/sequel/adapters/shared/sqlite.rb +174 -21
- data/lib/sequel/adapters/sqlanywhere.rb +33 -17
- data/lib/sequel/adapters/sqlite.rb +78 -68
- data/lib/sequel/adapters/tinytds.rb +14 -6
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +2 -5
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +5 -1
- data/lib/sequel/connection_pool.rb +2 -6
- data/lib/sequel/connection_pool/sharded_single.rb +7 -4
- data/lib/sequel/connection_pool/sharded_threaded.rb +32 -21
- data/lib/sequel/connection_pool/single.rb +1 -1
- data/lib/sequel/connection_pool/threaded.rb +26 -11
- data/lib/sequel/core.rb +327 -319
- data/lib/sequel/database/connecting.rb +7 -8
- data/lib/sequel/database/logging.rb +7 -1
- data/lib/sequel/database/misc.rb +68 -34
- data/lib/sequel/database/query.rb +6 -4
- data/lib/sequel/database/schema_generator.rb +31 -11
- data/lib/sequel/database/schema_methods.rb +32 -22
- data/lib/sequel/database/transactions.rb +129 -25
- data/lib/sequel/dataset.rb +4 -2
- data/lib/sequel/dataset/actions.rb +34 -23
- data/lib/sequel/dataset/features.rb +34 -0
- data/lib/sequel/dataset/graph.rb +27 -11
- data/lib/sequel/dataset/misc.rb +17 -3
- data/lib/sequel/dataset/placeholder_literalizer.rb +50 -21
- data/lib/sequel/dataset/prepared_statements.rb +96 -26
- data/lib/sequel/dataset/query.rb +43 -8
- data/lib/sequel/dataset/sql.rb +189 -41
- data/lib/sequel/deprecated.rb +3 -1
- data/lib/sequel/exceptions.rb +2 -0
- data/lib/sequel/extensions/_pretty_table.rb +1 -2
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +1 -2
- data/lib/sequel/extensions/connection_expiration.rb +6 -6
- data/lib/sequel/extensions/connection_validator.rb +7 -6
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +53 -28
- data/lib/sequel/extensions/core_refinements.rb +2 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +2 -0
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +3 -1
- data/lib/sequel/extensions/exclude_or_null.rb +68 -0
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/index_caching.rb +9 -7
- data/lib/sequel/extensions/integer64.rb +3 -1
- data/lib/sequel/extensions/looser_typecasting.rb +3 -3
- data/lib/sequel/extensions/migration.rb +13 -6
- data/lib/sequel/extensions/named_timezones.rb +84 -23
- data/lib/sequel/extensions/pg_array.rb +87 -79
- data/lib/sequel/extensions/pg_array_ops.rb +14 -6
- data/lib/sequel/extensions/pg_enum.rb +34 -18
- data/lib/sequel/extensions/pg_extended_date_support.rb +34 -14
- data/lib/sequel/extensions/pg_hstore.rb +6 -0
- data/lib/sequel/extensions/pg_hstore_ops.rb +2 -0
- data/lib/sequel/extensions/pg_inet.rb +15 -5
- data/lib/sequel/extensions/pg_interval.rb +2 -0
- data/lib/sequel/extensions/pg_json.rb +387 -123
- data/lib/sequel/extensions/pg_json_ops.rb +168 -0
- data/lib/sequel/extensions/pg_range.rb +20 -10
- data/lib/sequel/extensions/pg_range_ops.rb +2 -0
- data/lib/sequel/extensions/pg_row.rb +3 -2
- data/lib/sequel/extensions/pg_row_ops.rb +24 -0
- data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
- data/lib/sequel/extensions/query.rb +1 -0
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +2 -0
- data/lib/sequel/extensions/schema_dumper.rb +13 -7
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +4 -2
- data/lib/sequel/extensions/server_block.rb +18 -7
- data/lib/sequel/extensions/sql_comments.rb +2 -2
- data/lib/sequel/extensions/symbol_aref_refinement.rb +2 -0
- data/lib/sequel/extensions/symbol_as_refinement.rb +2 -0
- data/lib/sequel/extensions/to_dot.rb +9 -3
- data/lib/sequel/model.rb +3 -1
- data/lib/sequel/model/associations.rb +403 -69
- data/lib/sequel/model/base.rb +170 -90
- data/lib/sequel/model/plugins.rb +105 -0
- data/lib/sequel/plugins/after_initialize.rb +1 -1
- data/lib/sequel/plugins/association_dependencies.rb +3 -3
- data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
- data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
- data/lib/sequel/plugins/association_pks.rb +74 -22
- data/lib/sequel/plugins/association_proxies.rb +6 -2
- data/lib/sequel/plugins/auto_validations.rb +36 -17
- data/lib/sequel/plugins/blacklist_security.rb +1 -2
- data/lib/sequel/plugins/boolean_subsets.rb +4 -1
- data/lib/sequel/plugins/caching.rb +3 -0
- data/lib/sequel/plugins/class_table_inheritance.rb +62 -34
- data/lib/sequel/plugins/composition.rb +13 -9
- data/lib/sequel/plugins/csv_serializer.rb +28 -9
- data/lib/sequel/plugins/defaults_setter.rb +2 -2
- data/lib/sequel/plugins/dirty.rb +60 -22
- data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/finder.rb +2 -2
- data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
- data/lib/sequel/plugins/hook_class_methods.rb +17 -5
- data/lib/sequel/plugins/insert_conflict.rb +72 -0
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +2 -2
- data/lib/sequel/plugins/json_serializer.rb +21 -14
- data/lib/sequel/plugins/lazy_attributes.rb +1 -1
- data/lib/sequel/plugins/list.rb +22 -10
- data/lib/sequel/plugins/many_through_many.rb +1 -1
- data/lib/sequel/plugins/nested_attributes.rb +27 -5
- data/lib/sequel/plugins/pg_array_associations.rb +12 -9
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +149 -61
- data/lib/sequel/plugins/prepared_statements.rb +6 -12
- data/lib/sequel/plugins/prepared_statements_safe.rb +1 -3
- data/lib/sequel/plugins/rcte_tree.rb +20 -22
- data/lib/sequel/plugins/sharding.rb +13 -7
- data/lib/sequel/plugins/single_table_inheritance.rb +20 -15
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/static_cache.rb +36 -17
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +1 -1
- data/lib/sequel/plugins/subclasses.rb +2 -0
- data/lib/sequel/plugins/subset_conditions.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +73 -2
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/tree.rb +49 -31
- data/lib/sequel/plugins/typecast_on_load.rb +3 -2
- data/lib/sequel/plugins/validation_class_methods.rb +11 -5
- data/lib/sequel/plugins/validation_helpers.rb +2 -2
- data/lib/sequel/sql.rb +120 -30
- data/lib/sequel/timezones.rb +55 -14
- data/lib/sequel/version.rb +6 -1
- metadata +101 -361
- 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 -804
- data/spec/adapters/mysql_spec.rb +0 -1041
- data/spec/adapters/oracle_spec.rb +0 -327
- data/spec/adapters/postgres_spec.rb +0 -4000
- data/spec/adapters/spec_helper.rb +0 -43
- data/spec/adapters/sqlanywhere_spec.rb +0 -97
- data/spec/adapters/sqlite_spec.rb +0 -600
- data/spec/bin_spec.rb +0 -269
- data/spec/core/connection_pool_spec.rb +0 -1228
- data/spec/core/database_spec.rb +0 -2673
- data/spec/core/dataset_spec.rb +0 -5419
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1344
- data/spec/core/mock_adapter_spec.rb +0 -722
- data/spec/core/object_graph_spec.rb +0 -306
- 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 -1820
- data/spec/core/spec_helper.rb +0 -23
- data/spec/core/version_spec.rb +0 -7
- data/spec/core_extensions_spec.rb +0 -762
- 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 -24
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -125
- 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 -202
- 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/class_table_inheritance_spec.rb +0 -568
- 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 -133
- data/spec/extensions/connection_validator_spec.rb +0 -127
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
- data/spec/extensions/constraint_validations_spec.rb +0 -395
- 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 -141
- data/spec/extensions/delay_add_association_spec.rb +0 -73
- data/spec/extensions/dirty_spec.rb +0 -189
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
- data/spec/extensions/eager_each_spec.rb +0 -62
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/eval_inspect_spec.rb +0 -74
- 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 -380
- 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_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 -336
- data/spec/extensions/lazy_attributes_spec.rb +0 -183
- data/spec/extensions/list_spec.rb +0 -275
- 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 -840
- 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 -109
- data/spec/extensions/nested_attributes_spec.rb +0 -703
- 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 -165
- data/spec/extensions/pg_enum_spec.rb +0 -113
- 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 -289
- data/spec/extensions/pg_json_spec.rb +0 -262
- 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 -487
- 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 -182
- 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 -381
- 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 -868
- 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 -97
- data/spec/extensions/server_logging_spec.rb +0 -45
- data/spec/extensions/sharding_spec.rb +0 -189
- 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 -61
- 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_spec.rb +0 -410
- 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 -141
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- 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 -284
- 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 -58
- data/spec/integration/associations_test.rb +0 -2513
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1880
- 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 -2302
- data/spec/integration/prepared_statement_test.rb +0 -398
- data/spec/integration/schema_test.rb +0 -869
- data/spec/integration/spec_helper.rb +0 -64
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -354
- data/spec/integration/type_test.rb +0 -127
- data/spec/model/association_reflection_spec.rb +0 -803
- data/spec/model/associations_spec.rb +0 -4538
- data/spec/model/base_spec.rb +0 -817
- 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 -2262
- data/spec/model/hooks_spec.rb +0 -370
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -953
- data/spec/model/plugins_spec.rb +0 -318
- data/spec/model/record_spec.rb +0 -2107
- data/spec/model/spec_helper.rb +0 -45
- data/spec/model/validations_spec.rb +0 -193
- 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 -4
- data/spec/spec_config.rb +0 -12
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* A constant_sql_override Database extension has been added, allowing
|
|
4
|
+
for overriding the SQL used by constants such as
|
|
5
|
+
Sequel::CURRENT_TIMESTAMP. This can be used to force
|
|
6
|
+
CURRENT_TIMESTAMP to be literalized at a particular time zone:
|
|
7
|
+
|
|
8
|
+
DB.extension :constant_sql_override
|
|
9
|
+
DB.set_constant_sql(Sequel::CURRENT_TIMESTAMP,
|
|
10
|
+
"CURRENT_TIMESTAMP AT TIME ZONE 'UTC'")
|
|
11
|
+
|
|
12
|
+
* Prepared statements now support the :single_value type, which
|
|
13
|
+
returns the first column value in the dataset.
|
|
14
|
+
|
|
15
|
+
prep_stmt = DB[:table].select(:column).prepare(:single_value, :ps)
|
|
16
|
+
prep_stmt.call
|
|
17
|
+
# PREPARE ps AS SELECT column FROM table LIMIT 1;
|
|
18
|
+
# EXECUTE ps;
|
|
19
|
+
# => 42
|
|
20
|
+
|
|
21
|
+
= Other Improvements
|
|
22
|
+
|
|
23
|
+
* Dataset#from_self will no longer use a cached dataset if any options
|
|
24
|
+
are given, as that can result in incorrect behavior.
|
|
25
|
+
|
|
26
|
+
* Model.all in the static_cache plugin now accepts a block, mirroring
|
|
27
|
+
the API when the static_cache plugin is not used.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* The :nulls option when creating ordered expressions is now supported
|
|
4
|
+
on all databases that Sequel ships support for. For databases that
|
|
5
|
+
do not support NULLS FIRST/NULLS LAST, support is emulated.
|
|
6
|
+
|
|
7
|
+
ds.order(Sequel.asc(:name, :nulls=>:last))
|
|
8
|
+
# When emulated:
|
|
9
|
+
# ORDER BY (CASE WHEN (name IS NULL) THEN 2 ELSE 1 END), name ASC
|
|
10
|
+
|
|
11
|
+
* Model#pk_equal? has been added as a more descriptive name for
|
|
12
|
+
Model#===. Model#=== is now an alias of Model#pk_equal?.
|
|
13
|
+
|
|
14
|
+
* The roots and roots_dataset class methods in the tree plugin are now
|
|
15
|
+
also available as dataset methods.
|
|
16
|
+
|
|
17
|
+
= Other Improvements
|
|
18
|
+
|
|
19
|
+
* Inverting expressions using the ANY/SOME/ALL SQL operators now works
|
|
20
|
+
correctly:
|
|
21
|
+
|
|
22
|
+
# Sequel <5.14.0
|
|
23
|
+
Sequel.~(:a=>Sequel.function(:any, :x))
|
|
24
|
+
# "(a != any(x))"
|
|
25
|
+
|
|
26
|
+
# Sequel >=5.14.0
|
|
27
|
+
Sequel.~(:a=>Sequel.function(:any, :x))
|
|
28
|
+
# "NOT (a = any(x))"
|
|
29
|
+
|
|
30
|
+
Sequel has always tried to push inversion down to create SQL that is
|
|
31
|
+
easier to reason about. However, inversion cannot be pushed down if
|
|
32
|
+
an ANY/SOME/ALL SQL operator is used, because that is a different
|
|
33
|
+
type of operation that just happens to use the same syntax. Sequel
|
|
34
|
+
now avoids inversion push down for boolean operators where the
|
|
35
|
+
right hand side is an SQL::Function, LiteralString, or
|
|
36
|
+
SQL::PlaceholderLiteralString.
|
|
37
|
+
|
|
38
|
+
* When creating a boolean expression from a hash or array of pairs, if
|
|
39
|
+
the right hand side is an unfrozen array and string, use a frozen
|
|
40
|
+
copy in the expression, so that mutating the array or string
|
|
41
|
+
argument later does not affect the expression.
|
|
42
|
+
|
|
43
|
+
* When using the defaults_setter plugin with the :cache option, do not
|
|
44
|
+
cache values for columns without parseable defaults. If the default
|
|
45
|
+
value exists but is not parseable, caching such values could result
|
|
46
|
+
in incorrect behavior if the model instance is saved later.
|
|
47
|
+
|
|
48
|
+
* For models with composite primary keys, Model#=== now returns false
|
|
49
|
+
if any primary key value is nil, mirroring the behavior for the
|
|
50
|
+
scalar primary key case.
|
|
51
|
+
|
|
52
|
+
* Model datasets no longer cache SQL if they include a subquery that
|
|
53
|
+
cannot cache SQL.
|
|
54
|
+
|
|
55
|
+
* The SQL used for constraints in the constraint_validations
|
|
56
|
+
extension when the :allow_nil option is used is now clearer and
|
|
57
|
+
easier to understand.
|
|
58
|
+
|
|
59
|
+
* The postgres adapter no longer specifies a default port when using
|
|
60
|
+
the pg driver, in order to work with configurations where the
|
|
61
|
+
:service option is used in the :driver_options hash. The pg driver
|
|
62
|
+
defaults to port 5432 if no port is given, so this should not affect
|
|
63
|
+
backwards compatibility.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* A :qualify_tables option has been added to the
|
|
4
|
+
class_table_inheritance plugin, which will automatically qualify
|
|
5
|
+
subclass tables with the same qualifier as the superclass table
|
|
6
|
+
if the superclass table is qualified.
|
|
7
|
+
|
|
8
|
+
* Model#save_validation_on_next_save! has been added, which skips all
|
|
9
|
+
validation on the next save to the object, including the running
|
|
10
|
+
of validation related hooks. This method is designed for use only
|
|
11
|
+
when Model#valid? is called on the object before saving, to avoid
|
|
12
|
+
running validations on the object twice. This method takes
|
|
13
|
+
precedence even over an explicit validate: true option passed to
|
|
14
|
+
Model#save, and as such should be used with care.
|
|
15
|
+
|
|
16
|
+
* The postgres adapter now supports a :conn_str Database option to
|
|
17
|
+
use a PostgreSQL connection string (e.g. "host=foo port=2442") when
|
|
18
|
+
connecting. This option has preference over other connection
|
|
19
|
+
related options if it is present.
|
|
20
|
+
|
|
21
|
+
= Other Improvements
|
|
22
|
+
|
|
23
|
+
* If a foreign key for a model object is changed from a nil value to
|
|
24
|
+
a non-nil value, any cached associated objects related to the
|
|
25
|
+
foreign key are no longer removed. Such associated objects could
|
|
26
|
+
only be set manually, and if they have been set manually, it is
|
|
27
|
+
probably not a good idea to remove them automatically.
|
|
28
|
+
|
|
29
|
+
* When using the nested_attributes plugin, new *_to_many associated
|
|
30
|
+
objects are not validated twice when saving.
|
|
31
|
+
|
|
32
|
+
* The default table alias when using the class_table_inheritance
|
|
33
|
+
plugin now correctly handles qualified tables.
|
|
34
|
+
|
|
35
|
+
* A theoretical thread safety issue when assigning connections
|
|
36
|
+
in the threaded connection pools has been fixed.
|
|
37
|
+
|
|
38
|
+
* Renaming columns is now supported without emulation when using
|
|
39
|
+
SQLite 3.25+.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* Database#rollback_on_exit has been added, which allows you to
|
|
4
|
+
rollback transactions instead of committing them when exiting
|
|
5
|
+
the transaction block. Previously, the only way to rollback
|
|
6
|
+
a transaction from inside a transaction block was to raise
|
|
7
|
+
an exception. This allows you to tell Sequel to roll the
|
|
8
|
+
transaction back on exit, and then use return or throw to exit
|
|
9
|
+
the transaction block.
|
|
10
|
+
|
|
11
|
+
Database#rollback_on_exit supports savepoints, including
|
|
12
|
+
multiple savepoint levels, as well as canceling rollbacks:
|
|
13
|
+
|
|
14
|
+
DB.transaction do # BEGIN
|
|
15
|
+
DB.rollback_on_exit
|
|
16
|
+
end # ROLLBACK
|
|
17
|
+
|
|
18
|
+
DB.transaction do # BEGIN
|
|
19
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
20
|
+
DB.rollback_on_exit(savepoint: true)
|
|
21
|
+
end # ROLLBACK TO SAVEPOINT
|
|
22
|
+
end # COMMIT
|
|
23
|
+
|
|
24
|
+
DB.transaction do # BEGIN
|
|
25
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
26
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
27
|
+
DB.rollback_on_exit(savepoint: true)
|
|
28
|
+
end # ROLLBACK TO SAVEPOINT
|
|
29
|
+
end # RELEASE SAVEPOINT
|
|
30
|
+
end # COMMIT
|
|
31
|
+
|
|
32
|
+
DB.transaction do # BEGIN
|
|
33
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
34
|
+
DB.rollback_on_exit(savepoint: true)
|
|
35
|
+
end # ROLLBACK TO SAVEPOINT
|
|
36
|
+
end # COMMIT
|
|
37
|
+
|
|
38
|
+
DB.transaction do # BEGIN
|
|
39
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
40
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
41
|
+
DB.rollback_on_exit(savepoint: 2)
|
|
42
|
+
end # ROLLBACK TO SAVEPOINT
|
|
43
|
+
end # ROLLBACK TO SAVEPOINT
|
|
44
|
+
end # COMMIT
|
|
45
|
+
|
|
46
|
+
DB.transaction do # BEGIN
|
|
47
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
48
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
49
|
+
DB.rollback_on_exit(savepoint: 3)
|
|
50
|
+
end # ROLLBACK TO SAVEPOINT
|
|
51
|
+
end # ROLLBACK TO SAVEPOINT
|
|
52
|
+
end # ROLLBACK
|
|
53
|
+
|
|
54
|
+
DB.transaction do # BEGIN
|
|
55
|
+
DB.rollback_on_exit
|
|
56
|
+
DB.rollback_on_exit(cancel: true)
|
|
57
|
+
end # COMMIT
|
|
58
|
+
|
|
59
|
+
* Sequel now supports window functions on SQLite 3.26.0+. SQLite
|
|
60
|
+
technically supports window functions on 3.25.0+, but enabling
|
|
61
|
+
window function support in Sequel opens up a code path that
|
|
62
|
+
generates queries that cause older versions of SQLite to produce a
|
|
63
|
+
segmentation fault. This bug in SQLite has been fixed in 3.26.0.
|
|
64
|
+
|
|
65
|
+
= Other Improvements
|
|
66
|
+
|
|
67
|
+
* Sequel::Model no longer overrides existing methods when defining
|
|
68
|
+
getters and setters. Historically, it only checked for existing
|
|
69
|
+
method definitions for methods that could be directly expressed
|
|
70
|
+
(e.g. not requiring send). Sequel 5 broke the check for setter
|
|
71
|
+
methods that could be directly expressed. This fixes cases where
|
|
72
|
+
model inheritance is used and the setter methods are overridden
|
|
73
|
+
in a parent class.
|
|
74
|
+
|
|
75
|
+
* Alter table emulation now works correctly on SQLite 3.26.0+.
|
|
76
|
+
|
|
77
|
+
* The one_to_one association setter does not modify reciprocal
|
|
78
|
+
associations in cases where doing so is not necessary. This can
|
|
79
|
+
fix some cases where the nested_attributes plugin is used.
|
|
80
|
+
|
|
81
|
+
* The class_table_inheritance plugin can now take advantage of the
|
|
82
|
+
schema_caching extension to prevent database queries to determine
|
|
83
|
+
column information when the class is created.
|
|
84
|
+
|
|
85
|
+
* The nested_attributes plugin no longer validates one_to_one
|
|
86
|
+
associations twice when saving.
|
|
87
|
+
|
|
88
|
+
* The class_table_inheritance plugin :qualify_tables option now
|
|
89
|
+
correctly qualifies subclasses of subclasses.
|
|
90
|
+
|
|
91
|
+
* SQL expressions that are subscripted are now wrapped in parentheses.
|
|
92
|
+
This fixes at least subscripting a function expression on
|
|
93
|
+
PostgreSQL:
|
|
94
|
+
|
|
95
|
+
DB[:t].select{array_agg(column).sql_subscript(1)}
|
|
96
|
+
# SELECT (array_agg(column))[1] FROM t
|
|
97
|
+
|
|
98
|
+
* Sequel::Migrator now uses more descriptive error messages if a
|
|
99
|
+
missing or empty migration directory is given.
|
|
100
|
+
|
|
101
|
+
* bin/sequel -C when converting from SQLite to another database
|
|
102
|
+
type will now use 64-bit integer columns in the other database when
|
|
103
|
+
the SQLite column type is integer, as SQLite supports storing
|
|
104
|
+
64-bit values in integer columns, and most other databases only
|
|
105
|
+
support 32-bit values in integer columns.
|
|
106
|
+
|
|
107
|
+
= Backwards Compatibility
|
|
108
|
+
|
|
109
|
+
* The mysql adapter no longer attempts to load the mysqlplus driver,
|
|
110
|
+
it now only attempts to load the mysql driver.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* An instance-level skip_auto_validations method has been added to
|
|
4
|
+
the auto_validations plugin, allowing you to skip all or specific
|
|
5
|
+
types of auto validations inside the block:
|
|
6
|
+
|
|
7
|
+
model_instance.skip_auto_validations(:unique) do
|
|
8
|
+
puts model_instance.valid?
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
* A Database :preconnect_extensions option has been added. This
|
|
12
|
+
option is similar to :extensions, but the extensions are loaded
|
|
13
|
+
before the :preconnect option is processed. This allows you to
|
|
14
|
+
use the server_logging extension with the :preconnect option.
|
|
15
|
+
|
|
16
|
+
* For specifying custom table aliases when using eager_graph and
|
|
17
|
+
association_join, you can now use:
|
|
18
|
+
|
|
19
|
+
Sequel[:association].as(:table_alias)
|
|
20
|
+
|
|
21
|
+
in addition to:
|
|
22
|
+
|
|
23
|
+
Sequel.as(:association, :table_alias)
|
|
24
|
+
|
|
25
|
+
= Other Improvements
|
|
26
|
+
|
|
27
|
+
* The ado/mssql adapter now retrieves the number of deleted or
|
|
28
|
+
updated rows for a query without issuing a separate query.
|
|
29
|
+
|
|
30
|
+
* Sequel now avoids the use of Proc.new with an implicit block, as
|
|
31
|
+
that feature will be deprecated starting in Ruby 2.7.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* A throw_failures plugin has been added for throwing ValidationFailed
|
|
4
|
+
and HookFailed exceptions instead of raising them. This can improve
|
|
5
|
+
performance by up to 10x on JRuby and 10-15% on CRuby. However,
|
|
6
|
+
you would need to modify your exception handling from:
|
|
7
|
+
|
|
8
|
+
begin
|
|
9
|
+
# model.save
|
|
10
|
+
rescue Sequel::ValidationFailed => e
|
|
11
|
+
# handle failure
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
to:
|
|
15
|
+
|
|
16
|
+
e = catch(Sequel::ValidationFailed) do
|
|
17
|
+
# model.save
|
|
18
|
+
end
|
|
19
|
+
if e.is_a?(Sequel::ValidationFailed)
|
|
20
|
+
# handle failure
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
The throw_failures plugin will still work if you are not catching
|
|
24
|
+
the exception, falling back to the default behavior of raising
|
|
25
|
+
the exception.
|
|
26
|
+
|
|
27
|
+
* SQL::Blob.call has been added, so that SQL::Blob can be used
|
|
28
|
+
directly as a callable to create a new instance, resulting in
|
|
29
|
+
better performance in cases where a callable is needed.
|
|
30
|
+
|
|
31
|
+
= Other Improvements
|
|
32
|
+
|
|
33
|
+
* Type conversion is many adapters is now faster by switching from
|
|
34
|
+
Proc/Method instances to using singleton call methods on plain
|
|
35
|
+
objects. This can improve performance of row fetching by up to
|
|
36
|
+
10% in some cases.
|
|
37
|
+
|
|
38
|
+
* Row fetching is slightly faster in the jdbc and sqlite adapters,
|
|
39
|
+
by switching from each to while.
|
|
40
|
+
|
|
41
|
+
* tzinfo 2 is now supported when using the named_timezones extension.
|
|
42
|
+
tzinfo 1 remains supported.
|
|
43
|
+
|
|
44
|
+
* The optimized Dataset#paged_each methods in the postgres and mysql2
|
|
45
|
+
adapters now support being called without a block, returning an
|
|
46
|
+
Enumerator in that case, to mirror the behavior of the default
|
|
47
|
+
Dataset#paged_each method.
|
|
48
|
+
|
|
49
|
+
* Sequel no longer uses flow-control exceptions in the
|
|
50
|
+
connection_expiration and connection_validator extensions,
|
|
51
|
+
significantly improving performance on JRuby.
|
|
52
|
+
|
|
53
|
+
* The after_initialize plugin no longer makes the argument to
|
|
54
|
+
Model.call optional.
|
|
55
|
+
|
|
56
|
+
= Backwards Compatibility
|
|
57
|
+
|
|
58
|
+
* Some internal by not private constants and methods previously used
|
|
59
|
+
for type conversion in adapters have been removed:
|
|
60
|
+
|
|
61
|
+
* JDBC::Oracle.OracleDecimal
|
|
62
|
+
* JDBC::Oracle.OracleClob
|
|
63
|
+
* JDBC::Postgres.RubyPGArray
|
|
64
|
+
* JDBC::Postgres.RubyPGHstore
|
|
65
|
+
* JDBC::SqlAnywhere.SqlAnywhereBoolean
|
|
66
|
+
* JDBC::SQLServer.MSSQLRubyTime
|
|
67
|
+
* MySQL::TYPE_TRANSLATOR
|
|
68
|
+
* Postgres::TYPE_TRANSLATOR
|
|
69
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* A Database#rename_enum_value method has been added to the pg_enum
|
|
4
|
+
extension. It is supported on PostgreSQL 10+:
|
|
5
|
+
|
|
6
|
+
DB.rename_enum_value(:enum_type, 'old_name', 'new_name')
|
|
7
|
+
|
|
8
|
+
= Other Improvements
|
|
9
|
+
|
|
10
|
+
* The performance of row fetching and type conversion in the
|
|
11
|
+
sqlanywhere adapter has been improved.
|
|
12
|
+
|
|
13
|
+
* The performance of row fetching in the sqlite adapter has been
|
|
14
|
+
improved.
|
|
15
|
+
|
|
16
|
+
* Calling Database#drop_table now drops any constraint validations
|
|
17
|
+
metadata for the table if using the constraint_validations
|
|
18
|
+
extension. However, modifying the table using Database#alter_table
|
|
19
|
+
does not affect the constraint validations metadata.
|
|
20
|
+
|
|
21
|
+
* The sqlite adapter when used with ruby-sqlite3 1.4.0+ now uses
|
|
22
|
+
SQLite extended result codes for a more accurate determination of
|
|
23
|
+
specific database errors types.
|
|
24
|
+
|
|
25
|
+
* Performance for typecasting to decimal and floats has been improved
|
|
26
|
+
slightly.
|
|
27
|
+
|
|
28
|
+
* Performance when merging hashes has been improved slightly.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* Database#after_commit and #after_rollback transaction hook methods
|
|
4
|
+
now support a :savepoint option. Using the :savepoint option makes
|
|
5
|
+
the hooks savepoint-aware, so after_commit will only be called if
|
|
6
|
+
all enclosing savepoints and the transaction are committed, and
|
|
7
|
+
after_rollback will be called when any of the enclosing savepoints
|
|
8
|
+
are rolled back (which may be before transaction commit/rollback).
|
|
9
|
+
Examples:
|
|
10
|
+
|
|
11
|
+
x = nil
|
|
12
|
+
DB.transaction do # BEGIN
|
|
13
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
14
|
+
DB.after_commit(savepoint: true){x = 1}
|
|
15
|
+
DB.after_rollback(savepoint: true){x = 2}
|
|
16
|
+
x # nil
|
|
17
|
+
end # RELEASE SAVEPOINT
|
|
18
|
+
x # nil
|
|
19
|
+
end # COMMIT
|
|
20
|
+
x # 1
|
|
21
|
+
|
|
22
|
+
x = nil
|
|
23
|
+
DB.transaction do # BEGIN
|
|
24
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
25
|
+
DB.after_commit(savepoint: true){x = 1}
|
|
26
|
+
DB.after_rollback(savepoint: true){x = 2}
|
|
27
|
+
x # nil
|
|
28
|
+
raise Sequel::Rollback
|
|
29
|
+
end # ROLLBACK TO SAVEPOINT
|
|
30
|
+
x # 2
|
|
31
|
+
end # COMMIT
|
|
32
|
+
x # 2
|
|
33
|
+
|
|
34
|
+
x = nil
|
|
35
|
+
DB.transaction do # BEGIN
|
|
36
|
+
DB.transaction(savepoint: true) do # SAVEPOINT
|
|
37
|
+
DB.after_commit(savepoint: true){x = 1}
|
|
38
|
+
DB.after_rollback(savepoint: true){x = 2}
|
|
39
|
+
end # RELEASE SAVEPOINT
|
|
40
|
+
x # nil
|
|
41
|
+
raise Sequel::Rollback
|
|
42
|
+
end
|
|
43
|
+
x # 2
|
|
44
|
+
|
|
45
|
+
* The pg_auto_constraint_validations plugin now supports a
|
|
46
|
+
pg_auto_constraint_validation_override method for overriding
|
|
47
|
+
the columns and message for a specific constraint. This is
|
|
48
|
+
useful if the database cannot determine the columns (due
|
|
49
|
+
to the constraint containing a database function call), or
|
|
50
|
+
if you would like to customize the message per constraint.
|
|
51
|
+
|
|
52
|
+
= Other Improvements
|
|
53
|
+
|
|
54
|
+
* The one_to_one association setter now works with models that use
|
|
55
|
+
joined datasets, such as child models when using the
|
|
56
|
+
class_table_inheritance plugin.
|
|
57
|
+
|
|
58
|
+
* Database#check_constraints on PostgreSQL now also includes CHECK
|
|
59
|
+
constraints where the related columns are not known. The :columns
|
|
60
|
+
entry in the hash will be an empty array in such cases. The
|
|
61
|
+
exclusion of such constraints in previous versions was not
|
|
62
|
+
intentional, and the documentation implied that all CHECK
|
|
63
|
+
constraints were returned.
|
|
64
|
+
|
|
65
|
+
* Many cases where instance_exec was previously used on model
|
|
66
|
+
instances have been changed so that instance methods are defined
|
|
67
|
+
and called instead. This avoids the creation of singleton classes
|
|
68
|
+
for model instances, and can significantly improve performance in
|
|
69
|
+
some cases. This affects all associations as well as the
|
|
70
|
+
following plugins:
|
|
71
|
+
|
|
72
|
+
* composition
|
|
73
|
+
* hook_class_methods
|
|
74
|
+
* validation_class_methods
|
|
75
|
+
|
|
76
|
+
Other cases where instance_exec is now avoided and a different
|
|
77
|
+
approach is used:
|
|
78
|
+
|
|
79
|
+
* association_dependencies plugin
|
|
80
|
+
* PlaceholderLiteralString#with_dataset
|
|
81
|
+
|
|
82
|
+
* The auto_validations plugin now works with child models when using
|
|
83
|
+
the class_table_inheritance plugin.
|
|
84
|
+
|
|
85
|
+
* Database#server_version now works correctly in the mysql2 adapter
|
|
86
|
+
when using the MySQL driver with MariaDB 10+.
|
|
87
|
+
|
|
88
|
+
* The float unsigned type is now recognized and supported in the
|
|
89
|
+
schema parser and schema_dumper extension.
|