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,67 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* Sequel::SQL::NumericMethods#coerce has been added, which adds
|
|
4
|
-
support for ruby's coercion protocol when performing numeric
|
|
5
|
-
operations. Previously, Sequel supported code like:
|
|
6
|
-
|
|
7
|
-
Sequel.expr{a - 1}
|
|
8
|
-
|
|
9
|
-
This is because a in this case returns a Sequel::SQL::Indentifier,
|
|
10
|
-
which defines #- to return a Sequel::SQL::NumericExpression. By
|
|
11
|
-
supporting #coerce, the following code now also works:
|
|
12
|
-
|
|
13
|
-
Sequel.expr{1 - a}
|
|
14
|
-
|
|
15
|
-
This is because Integer#- calls #coerce on the argument if it is
|
|
16
|
-
defined (ruby's coercion protocol). Previously, you had to handle
|
|
17
|
-
this differently, using something like:
|
|
18
|
-
|
|
19
|
-
Sequel.expr(1) - a
|
|
20
|
-
# or
|
|
21
|
-
Sequel.-(1, a)
|
|
22
|
-
|
|
23
|
-
* Sequel now supports the ** operator for exponentiation on
|
|
24
|
-
expressions, similar to the +, -, *, and / operators. Sequel uses
|
|
25
|
-
the database power function to implement this by default on the
|
|
26
|
-
databases that support it (most of them). On Access, it uses the ^
|
|
27
|
-
operator, on Derby it is emulated using a combination of exp/ln
|
|
28
|
-
(with some loss of precision). SQLite doesn't support a power
|
|
29
|
-
function at all, but Sequel emulates it using multiplication for
|
|
30
|
-
known integer exponents.
|
|
31
|
-
|
|
32
|
-
* Sequel::SQLTime.date= has been added, which allows you to set the
|
|
33
|
-
date used for Sequel::SQLTime instances. Sequel::SQLTime is a
|
|
34
|
-
subclass of Time that is literalized using only the time components,
|
|
35
|
-
and is the ruby class used to store values of database time columns
|
|
36
|
-
on most adapters. Sequel::SQLTime defaults to using the current
|
|
37
|
-
date, but you can now set a specific date, for more consistency with
|
|
38
|
-
some drivers (Mysql2 uses 2000-01-01, tiny_tds uses 1900-01-01).
|
|
39
|
-
|
|
40
|
-
* The postgres adapter now supports a :driver_options option when
|
|
41
|
-
using the pg driver, which is passed directly to pg. This can be
|
|
42
|
-
used to specify a client SSL certificate or to specify the
|
|
43
|
-
certificate authority root certificate when using
|
|
44
|
-
:sslmode=>'verify-full'.
|
|
45
|
-
|
|
46
|
-
= Other Improvements
|
|
47
|
-
|
|
48
|
-
* Sequel no longer uses after_commit/rollback database hooks by
|
|
49
|
-
default if the after_commit/after_rollback model methods are not
|
|
50
|
-
overridden. This provides a performance speedup, but the main
|
|
51
|
-
benefit is that it no longer causes memory issues when saving a
|
|
52
|
-
large number of model instances in a single transaction, and it
|
|
53
|
-
also works with prepared transactions/2 phase commit. You can
|
|
54
|
-
still set use_after_commit_rollback= manually to force the
|
|
55
|
-
after_commit/rollback setting.
|
|
56
|
-
|
|
57
|
-
Note that Sequel 5 will move after_commit/rollback model hooks to
|
|
58
|
-
a plugin, and the default and recommended approach will be to use
|
|
59
|
-
the database after_commit/rollback hooks in the after_save or
|
|
60
|
-
similar model hooks.
|
|
61
|
-
|
|
62
|
-
= Backwards Compatibility
|
|
63
|
-
|
|
64
|
-
* The Sequel::Model use_after_commit_rollback class and instance
|
|
65
|
-
methods now return nil by default instead of true. nil now
|
|
66
|
-
indicates the default behavior of checking whether the appropriate
|
|
67
|
-
model hook has been defined, and only adding a database hook if so.
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* Sequel.[] has been added as an alias to Sequel.expr. This makes it
|
|
4
|
-
a little easier to get Sequel-specific objects:
|
|
5
|
-
|
|
6
|
-
Sequel[:table].* # "table".*
|
|
7
|
-
Sequel[:table__column].as(:alias) # "table"."column" AS "alias"
|
|
8
|
-
Sequel[:column] + 1 # ("column" + 1)
|
|
9
|
-
|
|
10
|
-
* The timestamps plugin now supports an :allow_manual_update option.
|
|
11
|
-
If this option is used, the timestamps plugin will not override the
|
|
12
|
-
update timestamp when saving if the user has modified it since
|
|
13
|
-
retrieving the object.
|
|
14
|
-
|
|
15
|
-
* The touch plugin now also touches associations on create in addition
|
|
16
|
-
to update and delete.
|
|
17
|
-
|
|
18
|
-
* The IntegerMigrator now supports a :relative option, which will
|
|
19
|
-
migrate that many migrations up (for positive numbers) or down (for
|
|
20
|
-
negative numbers).
|
|
21
|
-
|
|
22
|
-
* Database#rollback_checker has been added, which returns a callable
|
|
23
|
-
that can be called later to determine whether the transaction ended
|
|
24
|
-
up committing or rolling back. So if you may need to check
|
|
25
|
-
transaction status at some future point, and don't need immediate
|
|
26
|
-
action on rollback/commit, it is better to use a rollback checker
|
|
27
|
-
than to add an after commit/rollback hook.
|
|
28
|
-
|
|
29
|
-
rbc = nil
|
|
30
|
-
DB.transaction do
|
|
31
|
-
rbc = DB.rollback_checker
|
|
32
|
-
rbc.call #=> nil
|
|
33
|
-
end
|
|
34
|
-
rbc.call # => false
|
|
35
|
-
|
|
36
|
-
DB.transaction(:rollback=>:always) do
|
|
37
|
-
rbc = DB.rollback_checker
|
|
38
|
-
end
|
|
39
|
-
rbc.call # => true
|
|
40
|
-
|
|
41
|
-
* The add_column schema method now supports an :if_not_exists option
|
|
42
|
-
on PostgreSQL 9.6+, which will only add the column if it does not
|
|
43
|
-
already exist:
|
|
44
|
-
|
|
45
|
-
DB.add_column :t, :c, Integer, :if_not_exists=>true
|
|
46
|
-
# ALTER TABLE "t" ADD COLUMN IF NOT EXISTS "c" integer
|
|
47
|
-
|
|
48
|
-
* The add_column schema method now supports an :after and :first
|
|
49
|
-
option on MySQL to add the column after an existing column or as
|
|
50
|
-
the first column:
|
|
51
|
-
|
|
52
|
-
DB.add_column :t, :c, Integer, :first=>true
|
|
53
|
-
# ALTER TABLE `t` ADD COLUMN `c` integer FIRST
|
|
54
|
-
DB.add_column :t, :c1, Integer, :after=>:c2
|
|
55
|
-
# ALTER TABLE `t` ADD COLUMN `c1` integer AFTER `c2`
|
|
56
|
-
|
|
57
|
-
* JSONBOp#insert has been added to the pg_json_ops extension, which
|
|
58
|
-
supports the new jsonb_insert function added in PostgreSQL 9.6+:
|
|
59
|
-
|
|
60
|
-
Sequel.pg_jsonb_op(:c).insert(%w'0 a', 'a'=>1)
|
|
61
|
-
# jsonb_insert("c", ARRAY['0','a'], '{"a":1}'::jsonb, false)
|
|
62
|
-
|
|
63
|
-
* Dataset#full_text_search on PostgreSQL now supports a
|
|
64
|
-
:to_tsquery=>:phrase option, to enable the native phrase searching
|
|
65
|
-
added in PostgreSQL 9.6+:
|
|
66
|
-
|
|
67
|
-
DB[:t].full_text_search(:c, 'foo bar', :to_tsquery=>:phrase)
|
|
68
|
-
# SELECT * FROM "t"
|
|
69
|
-
# WHERE
|
|
70
|
-
# (to_tsvector(CAST('simple' AS regconfig), (COALESCE("c", '')))
|
|
71
|
-
# @@ phraseto_tsquery(CAST('simple' AS regconfig), 'foo bar'))
|
|
72
|
-
|
|
73
|
-
* Sequel::Database.set_shared_adapter_scheme has been added, allowing
|
|
74
|
-
external adapters to add support for Sequel's mock adapter.
|
|
75
|
-
External adapters should have a shared adapter requirable at
|
|
76
|
-
sequel/adapters/shared/adapter_name, that uses the following
|
|
77
|
-
format:
|
|
78
|
-
|
|
79
|
-
# in sequel/adapters/shared/mydb
|
|
80
|
-
module Sequel::MyDB
|
|
81
|
-
Sequel::Database.set_shared_adapter_scheme :mydb, self
|
|
82
|
-
|
|
83
|
-
def self.mock_adapter_setup(db)
|
|
84
|
-
# Any mock-adapter specific setup to perform on the
|
|
85
|
-
# given Database instance
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
module DatabaseMethods
|
|
89
|
-
# methods for all Database objects using this adapter
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
module DatasetMethods
|
|
93
|
-
# methods for all Dataset objects using this adapter
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
= Other Improvements
|
|
99
|
-
|
|
100
|
-
* The hook_class_methods plugin only adds a Database transaction
|
|
101
|
-
hook if one of the after commit/rollback hook class methods is
|
|
102
|
-
actually used. This means that loading the plugin no longer
|
|
103
|
-
keeps all saved/deleted objects in memory until transaction
|
|
104
|
-
commit.
|
|
105
|
-
|
|
106
|
-
* The active_model plugin now uses a rollback checker instead of
|
|
107
|
-
an after_rollback hook, so models that use the active_model plugin
|
|
108
|
-
no longer store all saved model instances in memory until
|
|
109
|
-
transaction commit.
|
|
110
|
-
|
|
111
|
-
* When using the IntegerMigrator, attempting to migrate to a
|
|
112
|
-
migration number above the maximum will now migrate to the lastest
|
|
113
|
-
version, and attempting to migrate to a migration number below 0
|
|
114
|
-
will now migrate all the way down.
|
|
115
|
-
|
|
116
|
-
* The pg_interval extension now supports ActiveSupport::Duration
|
|
117
|
-
objects that use week and hour parts (new in ActiveSupport 5).
|
|
118
|
-
|
|
119
|
-
= Backwards Compatibility
|
|
120
|
-
|
|
121
|
-
* The change to the touch plugin to touch associations on create could
|
|
122
|
-
possibly affect existing behavior, so if you are using this plugin,
|
|
123
|
-
you should test that this does not cause any problems.
|
|
124
|
-
|
|
125
|
-
* External adapters that tried to add support for the mock adapter
|
|
126
|
-
now need to update their code to use the new
|
|
127
|
-
Sequel::Database.set_shared_adapter_scheme method.
|
data/doc/release_notes/4.4.0.txt
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* Sequel now supports Sybase SQLAnywhere, via the sqlanywhere and
|
|
4
|
-
jdbc/sqlanywhere adapters.
|
|
5
|
-
|
|
6
|
-
* The filter by associations support now handles cases where the
|
|
7
|
-
association has :conditions or a block (as long as the block
|
|
8
|
-
does not rely on instance-specific behavior). This allows
|
|
9
|
-
you to handle the following:
|
|
10
|
-
|
|
11
|
-
Album.many_to_many :popular_tags, :class=>:Tag do |ds|
|
|
12
|
-
ds.where{tags__popularity > 9000}
|
|
13
|
-
end
|
|
14
|
-
Album.where(:popular_tags=>[Tag[1], Tag[2]])
|
|
15
|
-
|
|
16
|
-
This will return all albums whose popular_tags would include
|
|
17
|
-
at least one of those two tags. Previously, the block would
|
|
18
|
-
be ignored, returning albums containing one those tags even if
|
|
19
|
-
the tags weren't popular.
|
|
20
|
-
|
|
21
|
-
* A table_select plugin has been added that changes the default
|
|
22
|
-
selection for models from * to table.*. This is useful for
|
|
23
|
-
people who want ActiveRecord-like behavior instead of SQL-like
|
|
24
|
-
behavior, where joining tables doesn't automatically include
|
|
25
|
-
columns in the other table.
|
|
26
|
-
|
|
27
|
-
This can fix issues where joining another table that has columns
|
|
28
|
-
with the same name as columns in the model table without
|
|
29
|
-
specifying an explicit selection results in model objects being
|
|
30
|
-
returned where the values in the model object are the values
|
|
31
|
-
from the joined table instead of the model table.
|
|
32
|
-
|
|
33
|
-
* Dataset#offset has been added, for specifying offset separately
|
|
34
|
-
from limit. Previous this was possible via:
|
|
35
|
-
|
|
36
|
-
ds.limit(nil, offset)
|
|
37
|
-
|
|
38
|
-
but this is a friendlier API.
|
|
39
|
-
|
|
40
|
-
* The jdbc adapter now has support for foreign key parsing. This
|
|
41
|
-
is used if there is no specific support for the underlying
|
|
42
|
-
database.
|
|
43
|
-
|
|
44
|
-
* Foreign key parsing is now supported on Oracle.
|
|
45
|
-
|
|
46
|
-
= Other Improvements
|
|
47
|
-
|
|
48
|
-
* Association add_*/remove_*/remove_all_* methods for
|
|
49
|
-
pg_array_to_many associations now work on unsaved model objects.
|
|
50
|
-
|
|
51
|
-
* In the constraint_validations extension, deletes from the
|
|
52
|
-
metadata table are now processed before inserts, so that dropping
|
|
53
|
-
an existing constraint and readding a constraint with the same
|
|
54
|
-
name now works correctly.
|
|
55
|
-
|
|
56
|
-
* Cloning an association now copies the :eager_block option
|
|
57
|
-
correctly from the source association if it was passed as
|
|
58
|
-
the block to the source association method.
|
|
59
|
-
|
|
60
|
-
* Cloning a cloned association now copies the block for the
|
|
61
|
-
association.
|
|
62
|
-
|
|
63
|
-
* The descendants method in the tree plugin no longer modifies an
|
|
64
|
-
array it is iterating over.
|
|
65
|
-
|
|
66
|
-
* The jdbc/postgresql adapter now supports PostgreSQL-specific types,
|
|
67
|
-
with pretty much the same support as the postgres adapter. When
|
|
68
|
-
using the pg_* extensions, the dataset will now handle the
|
|
69
|
-
PostgreSQL types correctly and return instances of the correct
|
|
70
|
-
Ruby classes (e.g. hstore is returned as Sequel::Postgres::HStore).
|
|
71
|
-
|
|
72
|
-
You should no longer need to use the typecast_on_load or
|
|
73
|
-
pg_typecast_on_load plugins when using model objects that use these
|
|
74
|
-
types when using the jdbc/postgresql adapter.
|
|
75
|
-
|
|
76
|
-
* Offset emulation on Oracle now handles cases where selected
|
|
77
|
-
columns can't be ordered.
|
|
78
|
-
|
|
79
|
-
* Offset emulation on DB2 no longer automatically orders on all
|
|
80
|
-
columns if the dataset itself is unordered.
|
|
81
|
-
|
|
82
|
-
* Types containing spaces are now returning correctly when
|
|
83
|
-
parsing the schema in the oracle adapter.
|
|
84
|
-
|
|
85
|
-
* Database#tables no longer returns tables in the recycle bin on
|
|
86
|
-
Oracle.
|
|
87
|
-
|
|
88
|
-
* add_foreign_key now works correctly on HSQLDB, by splitting the
|
|
89
|
-
column addition and constraint addition into two separate
|
|
90
|
-
statements.
|
|
91
|
-
|
|
92
|
-
* add_primary_key now works correctly on H2.
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* A Sequel.split_symbols setting has been added. This setting is
|
|
4
|
-
true by default, so there is no change to backwards compatibility
|
|
5
|
-
by default. However, users can now do:
|
|
6
|
-
|
|
7
|
-
Sequel.split_symbols = false
|
|
8
|
-
|
|
9
|
-
to disable the splitting of symbols. This will make Sequel no
|
|
10
|
-
longer treat symbols with double or triple underscores as qualified
|
|
11
|
-
or aliased identifiers, instead treating them as plain identifiers.
|
|
12
|
-
It will also make Sequel no longer treat virtual row methods with
|
|
13
|
-
double underscores as qualified identifiers. Examples:
|
|
14
|
-
|
|
15
|
-
# Sequel.split_symbols = true
|
|
16
|
-
:column # "column"
|
|
17
|
-
:table__column # "table"."column"
|
|
18
|
-
:column___alias # "column" AS "alias"
|
|
19
|
-
:table__column___alias # "table"."column" AS "alias"
|
|
20
|
-
Sequel.expr{table__column} # "table"."column"
|
|
21
|
-
|
|
22
|
-
# Sequel.split_symbols = false
|
|
23
|
-
:column # "column"
|
|
24
|
-
:table__column # "table__column"
|
|
25
|
-
:column___alias # "column___alias"
|
|
26
|
-
:table__column___alias # "table__column___alias"
|
|
27
|
-
Sequel.expr{table__column} # "table__column"
|
|
28
|
-
|
|
29
|
-
Disabling symbol splitting can make things much easier if leading
|
|
30
|
-
trailing, double, or triple underscores are used in identifiers
|
|
31
|
-
in your database.
|
|
32
|
-
|
|
33
|
-
Disabling symbol splitting makes Sequel simpler, even if it does
|
|
34
|
-
make it slightly less easy to create qualified and aliased
|
|
35
|
-
identifiers. It is possible that the symbol splitting will be
|
|
36
|
-
disabled by default starting in Sequel 5.
|
|
37
|
-
|
|
38
|
-
Note that due to Database symbol literal caching, you should not
|
|
39
|
-
change the Sequel.split_symbols setting after creating a
|
|
40
|
-
Database instance.
|
|
41
|
-
|
|
42
|
-
* SQL::Identifier#[] and SQL::QualifiedIdentifier#[] have been added
|
|
43
|
-
for creating qualified identifiers. This makes it easier and more
|
|
44
|
-
natural to create qualified identifiers from existing identifiers.
|
|
45
|
-
Previously, you could do:
|
|
46
|
-
|
|
47
|
-
Sequel[:column].qualify(:table)
|
|
48
|
-
|
|
49
|
-
You can now use the more natural:
|
|
50
|
-
|
|
51
|
-
Sequel[:table][:column]
|
|
52
|
-
|
|
53
|
-
This can also be used in virtual rows:
|
|
54
|
-
|
|
55
|
-
Sequel.expr{table[:column]}
|
|
56
|
-
|
|
57
|
-
This offers a easy way to create qualified identifers when symbol
|
|
58
|
-
splitting has been disabled.
|
|
59
|
-
|
|
60
|
-
* A symbol_aref extension has been added, allowing the use of
|
|
61
|
-
Symbol#[] to create qualified identifiers if passed a Symbol,
|
|
62
|
-
SQL::Identifier, or SQL::QualifiedIdentifier. This doesn't
|
|
63
|
-
break any existing ruby behavior, as ruby currrently raises
|
|
64
|
-
an exception in such cases. Example:
|
|
65
|
-
|
|
66
|
-
:table[:column] # "table"."column"
|
|
67
|
-
|
|
68
|
-
This extension can make it easier to create qualified identifiers
|
|
69
|
-
if symbol splitting is disabled.
|
|
70
|
-
|
|
71
|
-
A symbol_aref_refinement extension has also been added, which
|
|
72
|
-
adds a refinement version of the extension that can be enabled via:
|
|
73
|
-
|
|
74
|
-
using Sequel::SymbolAref
|
|
75
|
-
|
|
76
|
-
* A symbol_as extension has been added, which adds the Symbol#as method
|
|
77
|
-
to create aliased identifiers. This was previously part of the core
|
|
78
|
-
extensions, but has been separated so it can be included by itself.
|
|
79
|
-
Example:
|
|
80
|
-
|
|
81
|
-
:column.as(:alias) # "column" AS "alias"
|
|
82
|
-
|
|
83
|
-
This extension can make it easier to create aliased identifiers if
|
|
84
|
-
symbol splitting is disabled.
|
|
85
|
-
|
|
86
|
-
A symbol_as_refinement extension has also been added, which
|
|
87
|
-
adds a refinement version of the extension that can be enabled via:
|
|
88
|
-
|
|
89
|
-
using Sequel::SymbolAs
|
|
90
|
-
|
|
91
|
-
* An s extension has been added, which adds the Sequel::S module,
|
|
92
|
-
containing a private #S method that calls Sequel.expr. You can
|
|
93
|
-
include this module in any module or class where you would like the
|
|
94
|
-
S method to be available:
|
|
95
|
-
|
|
96
|
-
class Album < Sequel::Model
|
|
97
|
-
extend Sequel::S
|
|
98
|
-
one_to_many :tracks, :order=>S(:number).desc
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
You can include this in Object if you want the S method to be
|
|
102
|
-
available globally:
|
|
103
|
-
|
|
104
|
-
Object.send(:include, Sequel::S)
|
|
105
|
-
|
|
106
|
-
Sequel::S also works if it is used as a refinement, adding the S
|
|
107
|
-
method to Object while the refinement is active:
|
|
108
|
-
|
|
109
|
-
using Sequel::S
|
|
110
|
-
|
|
111
|
-
This extension can make it easier to create qualified and aliased
|
|
112
|
-
identifiers if symbol splitting is disabled:
|
|
113
|
-
|
|
114
|
-
S(:table)[:column]
|
|
115
|
-
S(:column).as(:alias)
|
|
116
|
-
|
|
117
|
-
* Dataset#insert_conflict on PostgreSQL now supports a :conflict_where
|
|
118
|
-
option, allowing for the handling of insert conflicts when using a
|
|
119
|
-
partial unique index:
|
|
120
|
-
|
|
121
|
-
DB[:table].insert_conflict(:target=>:a,
|
|
122
|
-
:conflict_where=>{:c=>true}).insert(:a=>1, :b=>2)
|
|
123
|
-
# INSERT INTO TABLE (a, b) VALUES (1, 2)
|
|
124
|
-
# ON CONFLICT (a) WHERE (c IS TRUE) DO NOTHING
|
|
125
|
-
|
|
126
|
-
= Other Improvements
|
|
127
|
-
|
|
128
|
-
* Sequel no longer attempts to combine arguments for non-associative
|
|
129
|
-
operators, as doing so leads to invalid code in cases such as:
|
|
130
|
-
|
|
131
|
-
Sequel.expr{column1 - (column2 - 1)}
|
|
132
|
-
|
|
133
|
-
* Sequel now automatically adds NOT NULL constraints on columns when
|
|
134
|
-
adding a primary key constraint on the columns, if the database
|
|
135
|
-
doesn't handle that situation correctly.
|
|
136
|
-
|
|
137
|
-
* Database#rollback_checker now returns a thread-safe object.
|
|
138
|
-
|
|
139
|
-
* SQL::QualifiedIdentifier#initialize now converts SQL::Identifier
|
|
140
|
-
arguments to strings, fixing usage of such objects in the
|
|
141
|
-
schema methods.
|
|
142
|
-
|
|
143
|
-
* The prepared_statements plugin now correctly handles lookup by
|
|
144
|
-
primary key on models with joined datasets.
|
|
145
|
-
|
|
146
|
-
* The dataset_associations plugin now handles many_through_many and
|
|
147
|
-
one_through_many associations that use a single join table. Note
|
|
148
|
-
there is no reason to create such associations, as many_to_many
|
|
149
|
-
and one_through_one associations will work for such cases.
|
|
150
|
-
|
|
151
|
-
* The insert_returning_select plugin now handles cases where the
|
|
152
|
-
model doesn't have a valid dataset, fixing usage with the
|
|
153
|
-
lazy_attributes and dataset_associations plugins, and potentially
|
|
154
|
-
other plugins.
|
|
155
|
-
|
|
156
|
-
* The column_select plugin no longer raises an exception if the
|
|
157
|
-
model's table does not exist.
|
|
158
|
-
|
|
159
|
-
* The class_table_inheritance plugin now works when the
|
|
160
|
-
prepared_statements plugin is also used.
|
|
161
|
-
|
|
162
|
-
* Some adapters now avoid thread-safety issues during loading on
|
|
163
|
-
ruby implementations without a GVL by avoiding the modification of
|
|
164
|
-
shared datastructures.
|
|
165
|
-
|
|
166
|
-
* When using Database#tables with the :qualify=>true option on
|
|
167
|
-
PostgreSQL, table names with double or triple underscores are
|
|
168
|
-
now handled correctly.
|
|
169
|
-
|
|
170
|
-
= Backwards Compatibility
|
|
171
|
-
|
|
172
|
-
* The following Dataset constants are now frozen: NON_SQL_OPTIONS,
|
|
173
|
-
ACTION_METHODS, QUERY_METHODS, CONDITIONED_JOIN_TYPES,
|
|
174
|
-
UNCONDITIONED_JOIN_TYPES, and JOIN_METHODS. Of these,
|
|
175
|
-
NON_SQL_OPTIONS was previously modified in a non-thread-safe manner
|
|
176
|
-
by some adapters. External adapters should switch to having the
|
|
177
|
-
adapter's dataset non_sql_options method return an array of options
|
|
178
|
-
that do not affect the SELECT SQL for the adapter's datasets, rather
|
|
179
|
-
than modifying NON_SQL_OPTIONS.
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
= New Features
|
|
2
|
-
|
|
3
|
-
* Dataset#with_* methods have been added as equivalents for a
|
|
4
|
-
few Dataset#*= methods, but instead of modifying the receiver, they
|
|
5
|
-
return a modified copy, similar to the dataset query methods.
|
|
6
|
-
Specific methods added:
|
|
7
|
-
|
|
8
|
-
with_extend :: Extends clone with given modules
|
|
9
|
-
with_row_proc :: Modifies row_proc in clone
|
|
10
|
-
with_quote_identifiers :: Modifies quote_identifiers setting in
|
|
11
|
-
clone
|
|
12
|
-
with_identifier_input_method :: Modifies identifier_input_method
|
|
13
|
-
setting in clone
|
|
14
|
-
with_identifier_output_method :: Modifies identifier_output_method
|
|
15
|
-
setting in clone
|
|
16
|
-
|
|
17
|
-
Similarly, on Microsoft SQL Server, a with_mssql_unicode_strings
|
|
18
|
-
method has been added, which returns a clone with the
|
|
19
|
-
mssql_unicode_strings setting modified.
|
|
20
|
-
|
|
21
|
-
* On DB2, Sequel now supports an :offset_strategy Database option,
|
|
22
|
-
which can be set to :limit_offset for "LIMIT X OFFSET Y" or
|
|
23
|
-
:offset_fetch for "OFFSET Y FETCH FIRST X ROWS ONLY". Depending
|
|
24
|
-
on what version of DB2 is used and how DB2 is configured, it's
|
|
25
|
-
possible one of these strategies will work. For backwards
|
|
26
|
-
compatibility, the current default is still to emulate offsets
|
|
27
|
-
using the ROW_NUMBER window function.
|
|
28
|
-
|
|
29
|
-
* In the json_serializer plugin, you can now use an
|
|
30
|
-
Sequel::SQL::AliasedExpression instance as an association name
|
|
31
|
-
value, which allows you to rename the association in the resulting
|
|
32
|
-
JSON:
|
|
33
|
-
|
|
34
|
-
album.to_json(:include=>{Sequel.as(:album, :s)=>{:only=>:name}})
|
|
35
|
-
# => '{"id":1,"name":"RF","artist_id":2,"s":{"name":"YJM"}}'
|
|
36
|
-
|
|
37
|
-
= Other Improvements
|
|
38
|
-
|
|
39
|
-
* The association dataset methods now correctly handle cases where
|
|
40
|
-
one of the keys is nil. Previously, they would incorrectly use an
|
|
41
|
-
IS NULL predicate in such cases. Now, they use a false predicate.
|
|
42
|
-
|
|
43
|
-
* The hook_class_methods plugin handling of commit hooks has been
|
|
44
|
-
fixed. The implementation of commit hooks (but not rollback
|
|
45
|
-
hooks) was broken in hook_class_methods starting in 4.39.0 due to
|
|
46
|
-
changes to avoid keeping references to all model instances until
|
|
47
|
-
the transaction was committed or rolled back.
|
|
48
|
-
|
|
49
|
-
* Using the Fixnum schema method no longer raises a warning on ruby
|
|
50
|
-
2.4+, as it now uses the Integer class instead of the Fixnum
|
|
51
|
-
constant.
|
|
52
|
-
|
|
53
|
-
* The ado adapter has been greatly improved. It now avoids memory
|
|
54
|
-
leaks, has much better type handling, and passes almost all specs.
|
|
55
|
-
Note that the ado adapter's behavior can change depending on the
|
|
56
|
-
version of ruby in use, try to use ruby 2.2+ for best compatibility.
|
|
57
|
-
|
|
58
|
-
* Dataset#graph no longer mutates the receiver. Previously, it set
|
|
59
|
-
an empty hash as the :graph option in the receiver, which was
|
|
60
|
-
unintentional and not desired.
|
|
61
|
-
|
|
62
|
-
* Pure java exceptions that don't support the message= method are now
|
|
63
|
-
handled properly when reraising the exception on connection errors
|
|
64
|
-
in the jdbc adapter.
|
|
65
|
-
|
|
66
|
-
= Backwards Compatibility
|
|
67
|
-
|
|
68
|
-
* Support for using the Bignum constant as a generic type has been
|
|
69
|
-
removed, as was preannounced in the 4.36.0 release notes. Users
|
|
70
|
-
should switch to using the :Bignum constant if they haven't already.
|
|
71
|
-
|
|
72
|
-
* Users of the ado adapter may need to update their code now that the
|
|
73
|
-
ado adapter correctly handles most types.
|
|
74
|
-
|
|
75
|
-
* The spec_*_w rake tasks in the repository now require ruby 2.4+ and
|
|
76
|
-
use the warning library for filtering warnings, instead of trying to
|
|
77
|
-
filter warnings with egrep.
|