sequel 5.20.0 → 5.49.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 +398 -1922
- data/MIT-LICENSE +1 -1
- data/README.rdoc +7 -7
- data/doc/advanced_associations.rdoc +4 -4
- data/doc/association_basics.rdoc +80 -16
- data/doc/cheat_sheet.rdoc +6 -5
- data/doc/code_order.rdoc +10 -12
- data/doc/dataset_filtering.rdoc +17 -2
- data/doc/fork_safety.rdoc +84 -0
- data/doc/migration.rdoc +11 -5
- data/doc/model_dataset_method_design.rdoc +1 -1
- data/doc/model_plugins.rdoc +1 -1
- data/doc/opening_databases.rdoc +10 -2
- data/doc/postgresql.rdoc +82 -3
- data/doc/querying.rdoc +4 -4
- 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.39.0.txt +19 -0
- data/doc/release_notes/5.40.0.txt +40 -0
- data/doc/release_notes/5.41.0.txt +25 -0
- data/doc/release_notes/5.42.0.txt +136 -0
- data/doc/release_notes/5.43.0.txt +98 -0
- data/doc/release_notes/5.44.0.txt +32 -0
- data/doc/release_notes/5.45.0.txt +34 -0
- data/doc/release_notes/5.46.0.txt +87 -0
- data/doc/release_notes/5.47.0.txt +59 -0
- data/doc/release_notes/5.48.0.txt +14 -0
- data/doc/release_notes/5.49.0.txt +59 -0
- data/doc/sharding.rdoc +2 -0
- data/doc/sql.rdoc +13 -1
- data/doc/testing.rdoc +20 -7
- data/doc/transactions.rdoc +0 -8
- data/doc/validations.rdoc +1 -1
- data/doc/virtual_rows.rdoc +1 -1
- data/lib/sequel/adapters/ado/access.rb +1 -1
- data/lib/sequel/adapters/ado.rb +43 -35
- data/lib/sequel/adapters/ibmdb.rb +2 -2
- data/lib/sequel/adapters/jdbc/mysql.rb +6 -6
- data/lib/sequel/adapters/jdbc/postgresql.rb +11 -17
- data/lib/sequel/adapters/jdbc/sqlite.rb +29 -0
- data/lib/sequel/adapters/jdbc.rb +24 -6
- data/lib/sequel/adapters/mysql.rb +1 -1
- data/lib/sequel/adapters/mysql2.rb +2 -3
- data/lib/sequel/adapters/odbc.rb +8 -6
- data/lib/sequel/adapters/oracle.rb +5 -4
- data/lib/sequel/adapters/postgres.rb +15 -9
- data/lib/sequel/adapters/shared/access.rb +6 -6
- data/lib/sequel/adapters/shared/mssql.rb +66 -21
- data/lib/sequel/adapters/shared/mysql.rb +27 -10
- data/lib/sequel/adapters/shared/oracle.rb +29 -23
- data/lib/sequel/adapters/shared/postgres.rb +271 -32
- data/lib/sequel/adapters/shared/sqlanywhere.rb +9 -9
- data/lib/sequel/adapters/shared/sqlite.rb +161 -19
- data/lib/sequel/adapters/sqlanywhere.rb +1 -1
- data/lib/sequel/adapters/sqlite.rb +1 -1
- data/lib/sequel/adapters/tinytds.rb +15 -2
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +4 -1
- data/lib/sequel/ast_transformer.rb +6 -0
- data/lib/sequel/connection_pool/sharded_single.rb +4 -1
- data/lib/sequel/connection_pool/sharded_threaded.rb +12 -12
- data/lib/sequel/connection_pool/single.rb +1 -1
- data/lib/sequel/connection_pool/threaded.rb +2 -2
- data/lib/sequel/core.rb +333 -319
- data/lib/sequel/database/connecting.rb +3 -4
- data/lib/sequel/database/logging.rb +7 -1
- data/lib/sequel/database/misc.rb +31 -12
- data/lib/sequel/database/query.rb +3 -1
- data/lib/sequel/database/schema_generator.rb +53 -51
- data/lib/sequel/database/schema_methods.rb +38 -23
- data/lib/sequel/database/transactions.rb +17 -18
- data/lib/sequel/dataset/actions.rb +14 -9
- data/lib/sequel/dataset/features.rb +16 -0
- data/lib/sequel/dataset/misc.rb +2 -2
- data/lib/sequel/dataset/placeholder_literalizer.rb +3 -7
- data/lib/sequel/dataset/prepared_statements.rb +2 -0
- data/lib/sequel/dataset/query.rb +26 -9
- data/lib/sequel/dataset/sql.rb +76 -25
- data/lib/sequel/dataset.rb +4 -2
- 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/async_thread_pool.rb +438 -0
- data/lib/sequel/extensions/blank.rb +8 -0
- data/lib/sequel/extensions/columns_introspection.rb +1 -2
- data/lib/sequel/extensions/connection_expiration.rb +2 -2
- data/lib/sequel/extensions/connection_validator.rb +2 -2
- data/lib/sequel/extensions/core_refinements.rb +2 -0
- data/lib/sequel/extensions/date_arithmetic.rb +36 -24
- data/lib/sequel/extensions/duplicate_columns_handler.rb +3 -1
- data/lib/sequel/extensions/eval_inspect.rb +2 -0
- 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/inflector.rb +9 -1
- data/lib/sequel/extensions/integer64.rb +2 -0
- data/lib/sequel/extensions/migration.rb +11 -3
- data/lib/sequel/extensions/named_timezones.rb +56 -8
- data/lib/sequel/extensions/pagination.rb +1 -1
- data/lib/sequel/extensions/pg_array.rb +5 -0
- data/lib/sequel/extensions/pg_array_ops.rb +14 -6
- data/lib/sequel/extensions/pg_enum.rb +11 -3
- data/lib/sequel/extensions/pg_extended_date_support.rb +2 -2
- data/lib/sequel/extensions/pg_hstore.rb +6 -0
- data/lib/sequel/extensions/pg_hstore_ops.rb +54 -2
- data/lib/sequel/extensions/pg_inet.rb +15 -5
- data/lib/sequel/extensions/pg_interval.rb +36 -8
- data/lib/sequel/extensions/pg_json.rb +387 -123
- data/lib/sequel/extensions/pg_json_ops.rb +238 -0
- data/lib/sequel/extensions/pg_loose_count.rb +3 -1
- data/lib/sequel/extensions/pg_range.rb +17 -9
- data/lib/sequel/extensions/pg_range_ops.rb +2 -0
- data/lib/sequel/extensions/pg_row.rb +4 -2
- data/lib/sequel/extensions/pg_row_ops.rb +24 -0
- data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
- data/lib/sequel/extensions/query.rb +3 -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 +24 -7
- data/lib/sequel/extensions/server_block.rb +18 -7
- data/lib/sequel/extensions/sql_comments.rb +2 -2
- data/lib/sequel/extensions/string_agg.rb +1 -1
- 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/associations.rb +356 -117
- data/lib/sequel/model/base.rb +107 -68
- data/lib/sequel/model/errors.rb +10 -1
- data/lib/sequel/model/inflections.rb +1 -1
- data/lib/sequel/model/plugins.rb +9 -3
- data/lib/sequel/model.rb +3 -1
- 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 +60 -18
- data/lib/sequel/plugins/association_proxies.rb +8 -2
- data/lib/sequel/plugins/async_thread_pool.rb +39 -0
- data/lib/sequel/plugins/auto_validations.rb +39 -5
- data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
- 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 +33 -28
- data/lib/sequel/plugins/column_encryption.rb +728 -0
- data/lib/sequel/plugins/composition.rb +7 -2
- data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
- data/lib/sequel/plugins/constraint_validations.rb +2 -1
- data/lib/sequel/plugins/csv_serializer.rb +28 -9
- data/lib/sequel/plugins/dataset_associations.rb +4 -1
- data/lib/sequel/plugins/dirty.rb +60 -22
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
- data/lib/sequel/plugins/insert_conflict.rb +72 -0
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/json_serializer.rb +57 -35
- data/lib/sequel/plugins/lazy_attributes.rb +1 -1
- data/lib/sequel/plugins/many_through_many.rb +108 -9
- data/lib/sequel/plugins/nested_attributes.rb +15 -3
- data/lib/sequel/plugins/pg_array_associations.rb +58 -41
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +91 -30
- data/lib/sequel/plugins/prepared_statements.rb +15 -12
- data/lib/sequel/plugins/prepared_statements_safe.rb +1 -3
- data/lib/sequel/plugins/rcte_tree.rb +43 -35
- data/lib/sequel/plugins/serialization.rb +8 -3
- data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
- data/lib/sequel/plugins/sharding.rb +11 -5
- data/lib/sequel/plugins/single_table_inheritance.rb +22 -15
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/static_cache.rb +9 -4
- 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/throw_failures.rb +1 -1
- data/lib/sequel/plugins/timestamps.rb +1 -1
- data/lib/sequel/plugins/tree.rb +9 -4
- data/lib/sequel/plugins/typecast_on_load.rb +3 -2
- data/lib/sequel/plugins/unused_associations.rb +521 -0
- data/lib/sequel/plugins/update_or_create.rb +1 -1
- data/lib/sequel/plugins/validation_class_methods.rb +5 -1
- data/lib/sequel/plugins/validation_helpers.rb +18 -11
- data/lib/sequel/plugins/xml_serializer.rb +1 -1
- data/lib/sequel/sql.rb +20 -5
- data/lib/sequel/timezones.rb +63 -17
- data/lib/sequel/version.rb +1 -1
- metadata +113 -381
- 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 -1065
- data/spec/adapters/oracle_spec.rb +0 -371
- data/spec/adapters/postgres_spec.rb +0 -4125
- 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 -2865
- data/spec/core/dataset_spec.rb +0 -5515
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1455
- 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 -1826
- 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/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 -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 -189
- 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/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/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_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 -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 -111
- data/spec/extensions/nested_attributes_spec.rb +0 -767
- 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 -172
- 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 -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 -519
- 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 -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 -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 -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 -63
- 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 -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 -1981
- 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 -2396
- data/spec/integration/prepared_statement_test.rb +0 -405
- data/spec/integration/schema_test.rb +0 -889
- data/spec/integration/spec_helper.rb +0 -65
- 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 -4
- data/spec/spec_config.rb +0 -12
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* There have been numerous improvements this release related to
|
|
4
|
-
frozen datasets. Frozen datasets now work in almost all cases,
|
|
5
|
-
except when calling a dataset mutation method.
|
|
6
|
-
|
|
7
|
-
When using ruby 2.4, Sequel uses the new support for
|
|
8
|
-
clone(:freeze=>false) to actually freeze datasets while allowing
|
|
9
|
-
them to copy singleton classes/extended modules from the dataset
|
|
10
|
-
calling clone. On earlier versions of ruby, the dataset opts
|
|
11
|
-
are now frozen, preventing more types of accidental modification.
|
|
12
|
-
|
|
13
|
-
The dataset internals were refactored to reduce the number of
|
|
14
|
-
instance variables. Now, datasets store all of their state
|
|
15
|
-
in opts. Additionally, all datasets now use a thread-safe
|
|
16
|
-
cache for storing cached state such as the dataset's columns.
|
|
17
|
-
Previously, accessing/setting the columns was not thread-safe,
|
|
18
|
-
unless the ruby interpreter used thread-safe methods for
|
|
19
|
-
instance variable getting/setting.
|
|
20
|
-
|
|
21
|
-
Frozen datasets use this new cache to optimize repeated method
|
|
22
|
-
calls, resulting in substantial performance speedups. This can
|
|
23
|
-
include caching returned and/or intermediate datasets, SELECT and
|
|
24
|
-
DELETE SQL generated, as well as internal objects designed to
|
|
25
|
-
optimize the building of SQL strings with different arguments.
|
|
26
|
-
|
|
27
|
-
Even for fairly simple datasets, this can result in up to 10x
|
|
28
|
-
performance improvements for dataset methods that don't require
|
|
29
|
-
database access, and up to 3x performance improvements for dataset
|
|
30
|
-
methods that do require database access.
|
|
31
|
-
|
|
32
|
-
* A freeze_datasets Database extension has been added which
|
|
33
|
-
automatically freezes all datasets for the Database instance.
|
|
34
|
-
This also enables dataset caching when creating datasets using
|
|
35
|
-
Database#[] and #from using a single symbol, such as
|
|
36
|
-
DB[:table_name]. In addition to speeding up the methods
|
|
37
|
-
themselves, this also allows code such as:
|
|
38
|
-
|
|
39
|
-
DB[:foo].for_update.first
|
|
40
|
-
|
|
41
|
-
To run much faster by avoiding any dataset creation or SQL
|
|
42
|
-
string building after the first call.
|
|
43
|
-
|
|
44
|
-
The freeze_datasets extension makes #dup an alias of #clone,
|
|
45
|
-
ensuring that all cloned datasets that were originally created
|
|
46
|
-
by the Database instance are frozen.
|
|
47
|
-
|
|
48
|
-
It is highly recommended that you start using the
|
|
49
|
-
freeze_datasets extension in your applications using Sequel,
|
|
50
|
-
as this extension will become the default and only behavior
|
|
51
|
-
in Sequel 5. Unfrozen datasets and dataset mutation will
|
|
52
|
-
not be supported in Sequel 5.
|
|
53
|
-
|
|
54
|
-
* The dataset methods created by Model#subset and
|
|
55
|
-
Model::DatasetModule#subset now cache the returned dataset if the
|
|
56
|
-
current dataset is frozen, none of the arguments are Procs, and a
|
|
57
|
-
block is not provided. This can result in up to a 3x performance
|
|
58
|
-
improvement for method chains that use subsets, such as:
|
|
59
|
-
|
|
60
|
-
ModelClass.subset1.subset2.subset3.first
|
|
61
|
-
|
|
62
|
-
* Model::DatasetModule has had the following methods added to it:
|
|
63
|
-
distinct, exclude, exclude_having, grep, group, group_and_count,
|
|
64
|
-
group_append, having, limit, offset, order, order_append,
|
|
65
|
-
order_prepend, select, select_all, select_append, select_group,
|
|
66
|
-
where, and server. These methods create dataset methods that
|
|
67
|
-
when called call the dataset method with the same name on the
|
|
68
|
-
receiver. Example:
|
|
69
|
-
|
|
70
|
-
class ModelClass < Sequel::Model
|
|
71
|
-
dataset_module do
|
|
72
|
-
select :with_id_and_name, :id, :name
|
|
73
|
-
where :active, :active
|
|
74
|
-
order :by_name, :name
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
ModelClass.active.by_name.with_id_and_name.all
|
|
79
|
-
# SELECT id, name FROM model_classes WHERE active ORDER BY name
|
|
80
|
-
# Equivalent to:
|
|
81
|
-
ModelClass.
|
|
82
|
-
where(:active).
|
|
83
|
-
order(:name).
|
|
84
|
-
select(:id, :name).
|
|
85
|
-
all
|
|
86
|
-
|
|
87
|
-
In addition to being easier than defining the methods manually, this
|
|
88
|
-
also enables caching of the datasets in most cases, so that the
|
|
89
|
-
above method chain does not create any additional datasets after the
|
|
90
|
-
first call.
|
|
91
|
-
|
|
92
|
-
* Dataset#with_extend now accepts a block and will create a module
|
|
93
|
-
with that block that will be used to extend the object, after any
|
|
94
|
-
modules given as arguments have been applied:
|
|
95
|
-
|
|
96
|
-
DB[:table].with_extend{def foo; 1 end}.foo => 1
|
|
97
|
-
|
|
98
|
-
* The identifier mangling support for datasets
|
|
99
|
-
(identifier_input_method and identifier_output_method) has been
|
|
100
|
-
moved to a identifier_mangling database extension, but it is still
|
|
101
|
-
loaded by default. You can disable the loading of this extension
|
|
102
|
-
by using the :identifier_mangling=>false Database option. Sequel
|
|
103
|
-
5 will stop loading of this extension by default, requiring you to
|
|
104
|
-
load it manually via Database#extension if you need it.
|
|
105
|
-
|
|
106
|
-
Sequel's default remains the same as before, to convert identifiers
|
|
107
|
-
to uppercase on input and lowercase on output on databases that
|
|
108
|
-
fold unquoted identifiers to uppercase (per the SQL standard), and
|
|
109
|
-
to not mangle identifiers at all on databases that fold unquoted
|
|
110
|
-
identifiers to lowercase (MySQL, PostgreSQL, SQLite). The
|
|
111
|
-
identifier_mangling extension just allows you to change the default
|
|
112
|
-
behavior.
|
|
113
|
-
|
|
114
|
-
* On DB2, Dataset#with_convert_smallint_to_bool has been added,
|
|
115
|
-
which returns a modified dataset with the
|
|
116
|
-
convert_smallint_to_bool setting changed. Previously,
|
|
117
|
-
chaging the smallint_to_bool setting required mutating a
|
|
118
|
-
dataset.
|
|
119
|
-
|
|
120
|
-
* The mock adapter now supports Dataset#with_{autoid,fetch,numrows},
|
|
121
|
-
allowing mocking of results when using frozen datasets.
|
|
122
|
-
|
|
123
|
-
= Other Improvements
|
|
124
|
-
|
|
125
|
-
* Using an eager load callback when eager loading a one_to_one
|
|
126
|
-
association that uses an order or offset now works correctly
|
|
127
|
-
on databases that do not support window functions.
|
|
128
|
-
|
|
129
|
-
* Dataset#== and Dataset#hash are now faster as they don't need
|
|
130
|
-
to generate SQL. As all internal state is now stored in the
|
|
131
|
-
opts, it just considers the class, db, and opts.
|
|
132
|
-
|
|
133
|
-
* The prepared statement/bound variable internals were heavily
|
|
134
|
-
refactored to be simpler and more robust, to more easily
|
|
135
|
-
support native prepared statements, and to work with frozen
|
|
136
|
-
datasets.
|
|
137
|
-
|
|
138
|
-
* When emulating alter table operations on SQLite, integer
|
|
139
|
-
primary keys now use AUTOINCREMENT, since that is Sequel's
|
|
140
|
-
default when creating tables on SQLite.
|
|
141
|
-
|
|
142
|
-
* On SQLite, Database#schema no longer uses :auto_increment entries
|
|
143
|
-
when the table has a composite primary key.
|
|
144
|
-
|
|
145
|
-
* Most dataset opts values are now frozen to prevent accidental
|
|
146
|
-
modification and allow for thread-safe access.
|
|
147
|
-
|
|
148
|
-
* SQL::Expression subclass instances are now always frozen.
|
|
149
|
-
|
|
150
|
-
* Dataset::PlaceholderLiteralizer and
|
|
151
|
-
Dataset::PlaceholderLiteralizer::Argument instances are now
|
|
152
|
-
always frozen.
|
|
153
|
-
|
|
154
|
-
* Dataset#ungraphed now works on a frozen model dataset.
|
|
155
|
-
|
|
156
|
-
* Model#set_server now works when the model uses a frozen dataset.
|
|
157
|
-
|
|
158
|
-
* The pagination and null_dataset extensions now work on frozen
|
|
159
|
-
datasets.
|
|
160
|
-
|
|
161
|
-
* Dataset#server now works for frozen model datasets when the
|
|
162
|
-
model uses the sharding plugin.
|
|
163
|
-
|
|
164
|
-
* Calling eager_graph or association_join on a model dataset
|
|
165
|
-
is now deprecated if it would ignore the association's
|
|
166
|
-
:conditions option and the :graph_conditions, :graph_block,
|
|
167
|
-
or :graph_only_conditions association option is not used.
|
|
168
|
-
|
|
169
|
-
* Using the :eager_limit dataset option in an eager_load
|
|
170
|
-
callback with a singular association now raises an Error.
|
|
171
|
-
Previously, the behavior was undefined.
|
|
172
|
-
|
|
173
|
-
* Calling Dataset#prepare without a name argument is now
|
|
174
|
-
deprecated. Previously, it raised an Error in the mysql, mysql2,
|
|
175
|
-
and postgres adapters, but was allowed on other adapters.
|
|
176
|
-
|
|
177
|
-
* The looser_typecasting extension now handles the strict
|
|
178
|
-
BigDecimal parsing introduced in ruby 2.4.
|
|
179
|
-
|
|
180
|
-
* When using the duplicate_columns_handler extension with
|
|
181
|
-
:on_duplicate_columns=>:warn, the warning message is now
|
|
182
|
-
prepend with the file and line.
|
|
183
|
-
|
|
184
|
-
* Internally, Sequel uses Dataset#where instead of #filter,
|
|
185
|
-
reverse instead of reverse_order, and select_append instead
|
|
186
|
-
of select_more to save a method call and array creation.
|
|
187
|
-
|
|
188
|
-
* Dataset#db= and #opts= in the sequel_3_dataset_methods
|
|
189
|
-
extension now raise a RuntimeError if the dataset is frozen.
|
|
190
|
-
|
|
191
|
-
* Sequel's tests now run without warnings when using Minitest
|
|
192
|
-
5.10.
|
|
193
|
-
|
|
194
|
-
* Sequel now issues a deprecation message instead of a warning
|
|
195
|
-
when used with PostgreSQL <8.2.
|
|
196
|
-
|
|
197
|
-
= Backwards Compatibility
|
|
198
|
-
|
|
199
|
-
* Any external dataset extensions or adapters that modified or
|
|
200
|
-
directly accessed dataset instance variables other than @db and
|
|
201
|
-
@opts (such as @columns) needs to be updated to work with the
|
|
202
|
-
new dataset internals.
|
|
203
|
-
|
|
204
|
-
* Any external adapters that implemented native prepared statements/
|
|
205
|
-
bound variables need to be updated to work with the new internal
|
|
206
|
-
prepared statement API.
|
|
207
|
-
|
|
208
|
-
* Model.set_dataset and .dataset= now operate on a clone of the
|
|
209
|
-
dataset given, instead of mutating the dataset that is passed in.
|
|
210
|
-
This allows them to work with frozen datasets, but can change
|
|
211
|
-
the behavior if you mutate a dataset after passing it to one
|
|
212
|
-
of these methods. Anyone doing that needs to change their code
|
|
213
|
-
to get the current copy of the model's dataset, and mutate that,
|
|
214
|
-
or better yet, avoid mutating datasets at all.
|
|
215
|
-
|
|
216
|
-
* Dataset#columns now calls #columns! instead of the other way around,
|
|
217
|
-
which may require external plugins/extensions that override #columns
|
|
218
|
-
to switch to overriding #columns!.
|
|
219
|
-
|
|
220
|
-
* External adapters that want to disable identifier mangling by
|
|
221
|
-
default need to be updated.
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* Database#freeze has now been implemented. It is now recommended
|
|
4
|
-
to use it in production and during testing, after loading
|
|
5
|
-
extensions and making other changes to Database state. Once frozen,
|
|
6
|
-
the Database settings cannot be modified, but the Database can
|
|
7
|
-
execute queries and return results. By freezing the Database, you
|
|
8
|
-
gain greater thread-safety assurance and will be alerted via an
|
|
9
|
-
exception if runtime code attempts to modify Database state.
|
|
10
|
-
|
|
11
|
-
= Other Improvements
|
|
12
|
-
|
|
13
|
-
* Model#refresh now uses the same optimization that Model.with_pk
|
|
14
|
-
uses, resulting in faster refreshing for most models.
|
|
15
|
-
|
|
16
|
-
* The prepared_statements plugin no longer automatically uses
|
|
17
|
-
prepared statements in cases where it is likely to be slower.
|
|
18
|
-
Now, prepared statements are only used by default for INSERT
|
|
19
|
-
and UPDATE statements (and DELETE on Oracle and DB2). This
|
|
20
|
-
change was made after benchmarking showed that using prepared
|
|
21
|
-
statements for primary key lookups, refreshes, and deletes is
|
|
22
|
-
significantly slower than non-prepared statements across almost
|
|
23
|
-
all adapters.
|
|
24
|
-
|
|
25
|
-
* Database#extension no longer attempts to load the same extension
|
|
26
|
-
more than once.
|
|
27
|
-
|
|
28
|
-
* The timestamp migrator now handles key length limitations when
|
|
29
|
-
using MySQL with InnoDB engine and utf8mb4 charset default.
|
|
30
|
-
|
|
31
|
-
* The jdbc/sqlite adapter will now use SQLite result codes for
|
|
32
|
-
more accurate exception types, if the jdbc-sqlite driver
|
|
33
|
-
supports them.
|
|
34
|
-
|
|
35
|
-
* dataset_module is now inherited correctly if using the
|
|
36
|
-
single_table_inheritance plugin. This was broken in 4.42.0,
|
|
37
|
-
and fixed in 4.42.1.
|
|
38
|
-
|
|
39
|
-
* The prepared_statements plugin now respects a server specified
|
|
40
|
-
for the model instance, instead of always using the default
|
|
41
|
-
server.
|
|
42
|
-
|
|
43
|
-
* The prepared_statements_associations plugin now respects a
|
|
44
|
-
server specified for the model instance if using the sharding
|
|
45
|
-
plugin, instead of always using the default server.
|
|
46
|
-
|
|
47
|
-
* The prepared_statements_associations plugin now works correctly
|
|
48
|
-
when using some instance-specific associations, such as
|
|
49
|
-
many_to_one associations using a nil :key option.
|
|
50
|
-
|
|
51
|
-
* The prepared_statements_with_pk plugin now respects a server
|
|
52
|
-
specified for the dataset, instead of always using the default
|
|
53
|
-
server.
|
|
54
|
-
|
|
55
|
-
* Model#freeze now freezes the associations hash after validating
|
|
56
|
-
the model instance, instead of before, fixing cases where
|
|
57
|
-
validation calls association methods.
|
|
58
|
-
|
|
59
|
-
* Sequel no longer continually tries to determine the server
|
|
60
|
-
version on HSQLDB, if the first attempt fails.
|
|
61
|
-
|
|
62
|
-
* The mock adapter now uses a thread-safe incrementor for autoid.
|
|
63
|
-
|
|
64
|
-
* Mysql2 native prepared statement support now better handles
|
|
65
|
-
sharding where connection options differ per shard.
|
|
66
|
-
|
|
67
|
-
* On Oracle, Database#sequence_for_table is now thread-safe.
|
|
68
|
-
|
|
69
|
-
* On PostgreSQL, Database#type_supported? is now thread-safe.
|
|
70
|
-
|
|
71
|
-
* On MySQL, Database#supports_timestamp_usecs? now correctly
|
|
72
|
-
memoizes false values.
|
|
73
|
-
|
|
74
|
-
* The jdbc/postgresql adapter now works correctly if the
|
|
75
|
-
pg_hstore extension is loaded first.
|
|
76
|
-
|
|
77
|
-
= Backwards Compatibility
|
|
78
|
-
|
|
79
|
-
* Maintainers of external adapters and Database extensions
|
|
80
|
-
should update their code to support Database#freeze.
|
|
81
|
-
|
|
82
|
-
* Code that relies on Database extensions being loaded multiple
|
|
83
|
-
times if called multiple times needs to be updated, because
|
|
84
|
-
now the extension only gets loaded the first time
|
|
85
|
-
Database#extension is called.
|
|
86
|
-
|
|
87
|
-
* @enum_labels in the pg_enum extension is now frozen by default.
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* Model.freeze is now supported and recommended in production and
|
|
4
|
-
during testing. It freezes all class-level metadata, preventing
|
|
5
|
-
possible thread-safety issues at runtime.
|
|
6
|
-
|
|
7
|
-
* Model.finalize_associations has been added, speeding up some
|
|
8
|
-
association reflection methods by about 10x. This method
|
|
9
|
-
should be called after all associated models have been loaded.
|
|
10
|
-
This can speed up the retrieval of associated objects for small
|
|
11
|
-
datasets by 5-10%.
|
|
12
|
-
|
|
13
|
-
One advantage of using this is it will raise an exception if it
|
|
14
|
-
recognizes that any of your associations are not defined
|
|
15
|
-
correctly, such as referencing an associated class that doesn't
|
|
16
|
-
exist.
|
|
17
|
-
|
|
18
|
-
* Model.freeze_descendents has been added to the subclasses plugin.
|
|
19
|
-
This method finalizes associations for all descendent classes,
|
|
20
|
-
then freezes the descendent class. It's designed to make it
|
|
21
|
-
easy to freeze all model classes in use:
|
|
22
|
-
|
|
23
|
-
Sequel::Model.plugin :subclasses
|
|
24
|
-
Dir['./models/*.rb'].each{|f| require f}
|
|
25
|
-
Sequel::Model.freeze_descendents
|
|
26
|
-
|
|
27
|
-
* An implicit_subquery dataset extension has been added, which
|
|
28
|
-
implicitly uses a subquery if you have a dataset with raw SQL and
|
|
29
|
-
you call a method that would modify the SQL used:
|
|
30
|
-
|
|
31
|
-
DB['SELECT * FROM foo'].where(:bar=>1)
|
|
32
|
-
# SELECT * FROM foo
|
|
33
|
-
|
|
34
|
-
DB.extension :implicit_subquery
|
|
35
|
-
DB['SELECT * FROM foo'].where(:bar=>1)
|
|
36
|
-
# SELECT * FROM (SELECT * FROM foo) AS t1 WHERE (bar = 1)
|
|
37
|
-
|
|
38
|
-
* Model datasets now have where_all, where_each, and
|
|
39
|
-
where_single_value methods for returning data:
|
|
40
|
-
|
|
41
|
-
class Album < Sequel::Model; end
|
|
42
|
-
Album.where_all(:id=>[1,2,3])
|
|
43
|
-
# => [Album[1], Album[3], Album[2]]
|
|
44
|
-
|
|
45
|
-
Album.where_each(:id=>[1,2,3]) do |album|
|
|
46
|
-
# ...
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
Album.select(:name).where_single_value(:id=>1)
|
|
50
|
-
# "Album's Name"
|
|
51
|
-
|
|
52
|
-
These methods are designed for use by other dataset methods you
|
|
53
|
-
define, and are optimized for frozen datasets if the methods will
|
|
54
|
-
be called multiple times on the same dataset. where_all and
|
|
55
|
-
where_each can increase performance by up to 40% for small datasets
|
|
56
|
-
compared to where.all and where.each. where_single_value can be up
|
|
57
|
-
to twice as fast as where.single_value.
|
|
58
|
-
|
|
59
|
-
* Model.dataset_module now supports an eager method for eager loading:
|
|
60
|
-
|
|
61
|
-
class Album < Sequel::Model
|
|
62
|
-
many_to_one :artist
|
|
63
|
-
|
|
64
|
-
dataset_module do
|
|
65
|
-
eager :with_artist, :artist
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
Album.with_artist.all # eagerly loads artist association
|
|
70
|
-
|
|
71
|
-
= Other Improvements
|
|
72
|
-
|
|
73
|
-
* The jdbc adapter now supports Database#freeze. Possible
|
|
74
|
-
thread-safety issues when initializing multiple jdbc Database
|
|
75
|
-
instances in separate threads at the same time have been fixed.
|
|
76
|
-
|
|
77
|
-
* The postgres adapter now raises an exception if it recognizes that
|
|
78
|
-
the loaded version of sequel_pg is incompatible.
|
|
79
|
-
|
|
80
|
-
* Sequel classes that are subclasses of core classes now define
|
|
81
|
-
custom #inspect methods so instances can easily be differentiated from
|
|
82
|
-
core class instances. For example:
|
|
83
|
-
|
|
84
|
-
Sequel::SQL::Blob.new('a')
|
|
85
|
-
# => #<Sequel::SQL::Blob:0xa6f3a3c3710 bytes=1 content="a">
|
|
86
|
-
Sequel::SQLTime.now
|
|
87
|
-
# => #<Sequel::SQLTime 10:03:06>
|
|
88
|
-
Sequel::LiteralString.new("foo")
|
|
89
|
-
# => #<Sequel::LiteralString "foo">
|
|
90
|
-
class Album < Sequel::Model; end
|
|
91
|
-
Album.many_to_one :artist
|
|
92
|
-
# => #<Sequel::Model::Associations::ManyToOneAssociationReflection Album.many_to_one :artist>
|
|
93
|
-
Sequel::SQL::ValueList.new([[1,2]])
|
|
94
|
-
# => #<Sequel::SQL::ValueList [[1, 2]]>
|
|
95
|
-
|
|
96
|
-
* Dataset#from_self now copies the columns from the current dataset
|
|
97
|
-
if they are present, since wrapping a dataset in a subquery should
|
|
98
|
-
not change the columns returned.
|
|
99
|
-
|
|
100
|
-
* On PostgreSQL, array type conversion now correctly handles false
|
|
101
|
-
values.
|
|
102
|
-
|
|
103
|
-
* Another disconnect error is now recognized by the jdbc/as400
|
|
104
|
-
adapter.
|
|
105
|
-
|
|
106
|
-
* Modifications to Sequel::Model::Associations::ASSOCIATION_TYPES
|
|
107
|
-
are now thread safe, fixing issues if separate threads attempt
|
|
108
|
-
to load separate model plugins that modify this hash.
|
|
109
|
-
|
|
110
|
-
* The force_encoding plugin no longer modifies the encoding of
|
|
111
|
-
Sequel::SQL::Blob instances.
|
|
112
|
-
|
|
113
|
-
* Many plugins were updated so they no longer add constants to the
|
|
114
|
-
namespace of the model that loads them.
|
|
115
|
-
|
|
116
|
-
= Backwards Compatibility
|
|
117
|
-
|
|
118
|
-
* Maintainers of external model plugins should update their
|
|
119
|
-
code to support Model.freeze.
|
|
120
|
-
|
|
121
|
-
= Upcoming Deprecation
|
|
122
|
-
|
|
123
|
-
* Starting in Sequel 4.45.0, Sequel will be adding deprecation
|
|
124
|
-
warnings for features that will be removed or where behavior will
|
|
125
|
-
change in Sequel 5.
|