sequel 4.26.0 → 5.37.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 +5 -5
- data/CHANGELOG +405 -5656
- data/MIT-LICENSE +1 -1
- data/README.rdoc +232 -157
- data/bin/sequel +32 -9
- data/doc/advanced_associations.rdoc +252 -188
- data/doc/association_basics.rdoc +231 -273
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +75 -48
- data/doc/code_order.rdoc +28 -10
- data/doc/core_extensions.rdoc +104 -63
- data/doc/dataset_basics.rdoc +12 -21
- data/doc/dataset_filtering.rdoc +99 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/mass_assignment.rdoc +74 -31
- data/doc/migration.rdoc +72 -46
- data/doc/model_dataset_method_design.rdoc +129 -0
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +12 -12
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +59 -69
- data/doc/opening_databases.rdoc +84 -94
- data/doc/postgresql.rdoc +268 -38
- data/doc/prepared_statements.rdoc +29 -24
- data/doc/querying.rdoc +184 -164
- data/doc/reflection.rdoc +5 -6
- data/doc/release_notes/5.0.0.txt +159 -0
- data/doc/release_notes/5.1.0.txt +31 -0
- data/doc/release_notes/5.10.0.txt +84 -0
- data/doc/release_notes/5.11.0.txt +83 -0
- data/doc/release_notes/5.12.0.txt +141 -0
- data/doc/release_notes/5.13.0.txt +27 -0
- data/doc/release_notes/5.14.0.txt +63 -0
- data/doc/release_notes/5.15.0.txt +39 -0
- data/doc/release_notes/5.16.0.txt +110 -0
- data/doc/release_notes/5.17.0.txt +31 -0
- data/doc/release_notes/5.18.0.txt +69 -0
- data/doc/release_notes/5.19.0.txt +28 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.20.0.txt +89 -0
- data/doc/release_notes/5.21.0.txt +87 -0
- data/doc/release_notes/5.22.0.txt +48 -0
- data/doc/release_notes/5.23.0.txt +56 -0
- data/doc/release_notes/5.24.0.txt +56 -0
- data/doc/release_notes/5.25.0.txt +32 -0
- data/doc/release_notes/5.26.0.txt +35 -0
- data/doc/release_notes/5.27.0.txt +21 -0
- data/doc/release_notes/5.28.0.txt +16 -0
- data/doc/release_notes/5.29.0.txt +22 -0
- data/doc/release_notes/5.3.0.txt +121 -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.4.0.txt +80 -0
- data/doc/release_notes/5.5.0.txt +61 -0
- data/doc/release_notes/5.6.0.txt +31 -0
- data/doc/release_notes/5.7.0.txt +108 -0
- data/doc/release_notes/5.8.0.txt +170 -0
- data/doc/release_notes/5.9.0.txt +99 -0
- data/doc/schema_modification.rdoc +102 -77
- data/doc/security.rdoc +160 -87
- data/doc/sharding.rdoc +74 -47
- data/doc/sql.rdoc +135 -122
- data/doc/testing.rdoc +34 -18
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +101 -19
- data/doc/validations.rdoc +64 -51
- data/doc/virtual_rows.rdoc +90 -109
- data/lib/sequel.rb +3 -1
- data/lib/sequel/adapters/ado.rb +154 -22
- data/lib/sequel/adapters/ado/access.rb +21 -21
- data/lib/sequel/adapters/ado/mssql.rb +8 -15
- data/lib/sequel/adapters/amalgalite.rb +17 -25
- data/lib/sequel/adapters/ibmdb.rb +52 -58
- data/lib/sequel/adapters/jdbc.rb +149 -127
- data/lib/sequel/adapters/jdbc/db2.rb +32 -40
- data/lib/sequel/adapters/jdbc/derby.rb +56 -58
- data/lib/sequel/adapters/jdbc/h2.rb +40 -30
- data/lib/sequel/adapters/jdbc/hsqldb.rb +22 -33
- data/lib/sequel/adapters/jdbc/jtds.rb +4 -10
- data/lib/sequel/adapters/jdbc/mssql.rb +6 -12
- data/lib/sequel/adapters/jdbc/mysql.rb +17 -18
- data/lib/sequel/adapters/jdbc/oracle.rb +25 -19
- data/lib/sequel/adapters/jdbc/postgresql.rb +90 -69
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +14 -24
- data/lib/sequel/adapters/jdbc/sqlite.rb +50 -12
- data/lib/sequel/adapters/jdbc/sqlserver.rb +36 -9
- data/lib/sequel/adapters/jdbc/transactions.rb +25 -39
- data/lib/sequel/adapters/mock.rb +104 -113
- data/lib/sequel/adapters/mysql.rb +42 -61
- data/lib/sequel/adapters/mysql2.rb +126 -35
- data/lib/sequel/adapters/odbc.rb +21 -28
- data/lib/sequel/adapters/odbc/db2.rb +3 -1
- data/lib/sequel/adapters/odbc/mssql.rb +11 -15
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/oracle.rb +62 -68
- data/lib/sequel/adapters/postgres.rb +257 -311
- data/lib/sequel/adapters/postgresql.rb +3 -1
- data/lib/sequel/adapters/shared/access.rb +75 -79
- data/lib/sequel/adapters/shared/db2.rb +96 -74
- data/lib/sequel/adapters/shared/mssql.rb +258 -213
- data/lib/sequel/adapters/shared/mysql.rb +284 -216
- data/lib/sequel/adapters/shared/oracle.rb +175 -60
- data/lib/sequel/adapters/shared/postgres.rb +829 -383
- data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -127
- data/lib/sequel/adapters/shared/sqlite.rb +382 -159
- data/lib/sequel/adapters/sqlanywhere.rb +53 -38
- data/lib/sequel/adapters/sqlite.rb +111 -105
- data/lib/sequel/adapters/tinytds.rb +38 -46
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +8 -9
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +7 -5
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
- data/lib/sequel/adapters/utils/replace.rb +3 -4
- data/lib/sequel/adapters/utils/split_alter_table.rb +2 -0
- data/lib/sequel/adapters/utils/stored_procedures.rb +9 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
- data/lib/sequel/ast_transformer.rb +13 -89
- data/lib/sequel/connection_pool.rb +54 -26
- data/lib/sequel/connection_pool/sharded_single.rb +19 -12
- data/lib/sequel/connection_pool/sharded_threaded.rb +160 -111
- data/lib/sequel/connection_pool/single.rb +21 -12
- data/lib/sequel/connection_pool/threaded.rb +137 -119
- data/lib/sequel/core.rb +352 -320
- data/lib/sequel/database.rb +19 -2
- data/lib/sequel/database/connecting.rb +70 -55
- data/lib/sequel/database/dataset.rb +15 -5
- data/lib/sequel/database/dataset_defaults.rb +20 -102
- data/lib/sequel/database/features.rb +20 -4
- data/lib/sequel/database/logging.rb +25 -7
- data/lib/sequel/database/misc.rb +132 -118
- data/lib/sequel/database/query.rb +51 -28
- data/lib/sequel/database/schema_generator.rb +188 -75
- data/lib/sequel/database/schema_methods.rb +161 -92
- data/lib/sequel/database/transactions.rb +260 -58
- data/lib/sequel/dataset.rb +28 -12
- data/lib/sequel/dataset/actions.rb +354 -170
- data/lib/sequel/dataset/dataset_module.rb +46 -0
- data/lib/sequel/dataset/features.rb +81 -34
- data/lib/sequel/dataset/graph.rb +82 -58
- data/lib/sequel/dataset/misc.rb +139 -47
- data/lib/sequel/dataset/placeholder_literalizer.rb +66 -26
- data/lib/sequel/dataset/prepared_statements.rb +188 -85
- data/lib/sequel/dataset/query.rb +428 -214
- data/lib/sequel/dataset/sql.rb +446 -339
- data/lib/sequel/deprecated.rb +14 -2
- data/lib/sequel/exceptions.rb +48 -16
- data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
- data/lib/sequel/extensions/_model_pg_row.rb +43 -0
- data/lib/sequel/extensions/_pretty_table.rb +10 -9
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +15 -11
- data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
- data/lib/sequel/extensions/blank.rb +2 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +9 -4
- data/lib/sequel/extensions/connection_expiration.rb +99 -0
- data/lib/sequel/extensions/connection_validator.rb +26 -13
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +93 -38
- data/lib/sequel/extensions/core_extensions.rb +45 -53
- data/lib/sequel/extensions/core_refinements.rb +44 -46
- data/lib/sequel/extensions/current_datetime_timestamp.rb +5 -4
- data/lib/sequel/extensions/dataset_source_alias.rb +4 -0
- data/lib/sequel/extensions/date_arithmetic.rb +42 -16
- data/lib/sequel/extensions/datetime_parse_to_time.rb +37 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +94 -0
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +7 -3
- data/lib/sequel/extensions/error_sql.rb +7 -3
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +14 -15
- data/lib/sequel/extensions/exclude_or_null.rb +68 -0
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/freeze_datasets.rb +3 -0
- data/lib/sequel/extensions/from_block.rb +2 -31
- data/lib/sequel/extensions/graph_each.rb +19 -6
- data/lib/sequel/extensions/identifier_mangling.rb +180 -0
- data/lib/sequel/extensions/implicit_subquery.rb +48 -0
- data/lib/sequel/extensions/index_caching.rb +109 -0
- data/lib/sequel/extensions/inflector.rb +8 -4
- data/lib/sequel/extensions/integer64.rb +32 -0
- data/lib/sequel/extensions/looser_typecasting.rb +19 -9
- data/lib/sequel/extensions/migration.rb +132 -80
- data/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +4 -0
- data/lib/sequel/extensions/named_timezones.rb +88 -23
- data/lib/sequel/extensions/no_auto_literal_strings.rb +4 -0
- data/lib/sequel/extensions/null_dataset.rb +12 -8
- data/lib/sequel/extensions/pagination.rb +35 -28
- data/lib/sequel/extensions/pg_array.rb +227 -316
- data/lib/sequel/extensions/pg_array_ops.rb +19 -7
- data/lib/sequel/extensions/pg_enum.rb +69 -24
- data/lib/sequel/extensions/pg_extended_date_support.rb +250 -0
- data/lib/sequel/extensions/pg_hstore.rb +50 -59
- data/lib/sequel/extensions/pg_hstore_ops.rb +9 -3
- data/lib/sequel/extensions/pg_inet.rb +34 -15
- data/lib/sequel/extensions/pg_inet_ops.rb +5 -1
- data/lib/sequel/extensions/pg_interval.rb +26 -26
- data/lib/sequel/extensions/pg_json.rb +422 -141
- data/lib/sequel/extensions/pg_json_ops.rb +248 -9
- data/lib/sequel/extensions/pg_loose_count.rb +5 -1
- data/lib/sequel/extensions/pg_range.rb +162 -146
- data/lib/sequel/extensions/pg_range_ops.rb +10 -5
- data/lib/sequel/extensions/pg_row.rb +53 -87
- data/lib/sequel/extensions/pg_row_ops.rb +36 -13
- data/lib/sequel/extensions/pg_static_cache_updater.rb +6 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
- data/lib/sequel/extensions/pretty_table.rb +4 -0
- data/lib/sequel/extensions/query.rb +12 -7
- data/lib/sequel/extensions/round_timestamps.rb +6 -9
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +59 -0
- data/lib/sequel/extensions/schema_caching.rb +14 -1
- data/lib/sequel/extensions/schema_dumper.rb +83 -55
- data/lib/sequel/extensions/select_remove.rb +8 -4
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
- data/lib/sequel/extensions/server_block.rb +50 -17
- data/lib/sequel/extensions/server_logging.rb +61 -0
- data/lib/sequel/extensions/split_array_nil.rb +8 -4
- data/lib/sequel/extensions/sql_comments.rb +96 -0
- data/lib/sequel/extensions/sql_expr.rb +4 -1
- data/lib/sequel/extensions/string_agg.rb +181 -0
- data/lib/sequel/extensions/string_date_time.rb +2 -0
- data/lib/sequel/extensions/symbol_aref.rb +53 -0
- data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
- data/lib/sequel/extensions/symbol_as.rb +23 -0
- data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
- data/lib/sequel/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/extensions/thread_local_timezones.rb +4 -0
- data/lib/sequel/extensions/to_dot.rb +15 -5
- data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
- data/lib/sequel/model.rb +36 -126
- data/lib/sequel/model/associations.rb +850 -257
- data/lib/sequel/model/base.rb +652 -764
- data/lib/sequel/model/dataset_module.rb +13 -10
- data/lib/sequel/model/default_inflections.rb +3 -1
- data/lib/sequel/model/errors.rb +3 -3
- data/lib/sequel/model/exceptions.rb +12 -12
- data/lib/sequel/model/inflections.rb +8 -19
- data/lib/sequel/model/plugins.rb +111 -0
- data/lib/sequel/plugins/accessed_columns.rb +2 -0
- data/lib/sequel/plugins/active_model.rb +32 -7
- data/lib/sequel/plugins/after_initialize.rb +3 -1
- data/lib/sequel/plugins/association_dependencies.rb +27 -18
- 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 +181 -83
- data/lib/sequel/plugins/association_proxies.rb +33 -9
- data/lib/sequel/plugins/auto_validations.rb +58 -23
- data/lib/sequel/plugins/before_after_save.rb +8 -0
- data/lib/sequel/plugins/blacklist_security.rb +23 -12
- data/lib/sequel/plugins/boolean_readers.rb +9 -6
- data/lib/sequel/plugins/boolean_subsets.rb +64 -0
- data/lib/sequel/plugins/caching.rb +27 -16
- data/lib/sequel/plugins/class_table_inheritance.rb +192 -94
- data/lib/sequel/plugins/column_conflicts.rb +18 -3
- data/lib/sequel/plugins/column_select.rb +9 -5
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +36 -24
- data/lib/sequel/plugins/constraint_validations.rb +37 -16
- data/lib/sequel/plugins/csv_serializer.rb +58 -35
- data/lib/sequel/plugins/dataset_associations.rb +60 -18
- data/lib/sequel/plugins/def_dataset_method.rb +90 -0
- data/lib/sequel/plugins/defaults_setter.rb +74 -13
- data/lib/sequel/plugins/delay_add_association.rb +4 -1
- data/lib/sequel/plugins/dirty.rb +65 -24
- data/lib/sequel/plugins/eager_each.rb +27 -3
- data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/error_splitter.rb +19 -12
- data/lib/sequel/plugins/finder.rb +246 -0
- data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
- data/lib/sequel/plugins/force_encoding.rb +9 -12
- data/lib/sequel/plugins/hook_class_methods.rb +39 -54
- data/lib/sequel/plugins/input_transformer.rb +20 -10
- data/lib/sequel/plugins/insert_conflict.rb +72 -0
- data/lib/sequel/plugins/insert_returning_select.rb +4 -2
- data/lib/sequel/plugins/instance_filters.rb +12 -8
- data/lib/sequel/plugins/instance_hooks.rb +36 -17
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +24 -13
- data/lib/sequel/plugins/json_serializer.rb +123 -47
- data/lib/sequel/plugins/lazy_attributes.rb +20 -14
- data/lib/sequel/plugins/list.rb +40 -26
- data/lib/sequel/plugins/many_through_many.rb +28 -12
- data/lib/sequel/plugins/modification_detection.rb +17 -5
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +8 -5
- data/lib/sequel/plugins/nested_attributes.rb +55 -28
- data/lib/sequel/plugins/optimistic_locking.rb +5 -3
- data/lib/sequel/plugins/pg_array_associations.rb +52 -18
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +348 -0
- data/lib/sequel/plugins/pg_row.rb +7 -51
- data/lib/sequel/plugins/prepared_statements.rb +53 -72
- data/lib/sequel/plugins/prepared_statements_safe.rb +13 -5
- data/lib/sequel/plugins/rcte_tree.rb +43 -63
- data/lib/sequel/plugins/serialization.rb +37 -44
- data/lib/sequel/plugins/serialization_modification_detection.rb +3 -1
- data/lib/sequel/plugins/sharding.rb +17 -10
- data/lib/sequel/plugins/single_table_inheritance.rb +62 -28
- data/lib/sequel/plugins/singular_table_names.rb +2 -0
- data/lib/sequel/plugins/skip_create_refresh.rb +5 -3
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/split_values.rb +13 -6
- data/lib/sequel/plugins/static_cache.rb +79 -53
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +5 -3
- data/lib/sequel/plugins/subclasses.rb +20 -2
- data/lib/sequel/plugins/subset_conditions.rb +48 -0
- data/lib/sequel/plugins/table_select.rb +4 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +120 -6
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/timestamps.rb +22 -8
- data/lib/sequel/plugins/touch.rb +21 -8
- data/lib/sequel/plugins/tree.rb +57 -30
- data/lib/sequel/plugins/typecast_on_load.rb +14 -4
- data/lib/sequel/plugins/unlimited_update.rb +3 -7
- data/lib/sequel/plugins/update_or_create.rb +6 -4
- data/lib/sequel/plugins/update_primary_key.rb +3 -1
- data/lib/sequel/plugins/update_refresh.rb +28 -15
- data/lib/sequel/plugins/uuid.rb +70 -0
- data/lib/sequel/plugins/validate_associated.rb +20 -0
- data/lib/sequel/plugins/validation_class_methods.rb +40 -19
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +49 -31
- data/lib/sequel/plugins/whitelist_security.rb +122 -0
- data/lib/sequel/plugins/xml_serializer.rb +31 -30
- data/lib/sequel/sql.rb +479 -329
- data/lib/sequel/timezones.rb +62 -32
- data/lib/sequel/version.rb +10 -3
- metadata +177 -477
- data/Rakefile +0 -165
- data/doc/active_record.rdoc +0 -912
- data/doc/release_notes/1.0.txt +0 -38
- data/doc/release_notes/1.1.txt +0 -143
- data/doc/release_notes/1.3.txt +0 -101
- data/doc/release_notes/1.4.0.txt +0 -53
- data/doc/release_notes/1.5.0.txt +0 -155
- data/doc/release_notes/2.0.0.txt +0 -298
- data/doc/release_notes/2.1.0.txt +0 -271
- data/doc/release_notes/2.10.0.txt +0 -328
- data/doc/release_notes/2.11.0.txt +0 -215
- data/doc/release_notes/2.12.0.txt +0 -534
- data/doc/release_notes/2.2.0.txt +0 -253
- data/doc/release_notes/2.3.0.txt +0 -88
- data/doc/release_notes/2.4.0.txt +0 -106
- data/doc/release_notes/2.5.0.txt +0 -137
- data/doc/release_notes/2.6.0.txt +0 -157
- data/doc/release_notes/2.7.0.txt +0 -166
- data/doc/release_notes/2.8.0.txt +0 -171
- data/doc/release_notes/2.9.0.txt +0 -97
- data/doc/release_notes/3.0.0.txt +0 -221
- data/doc/release_notes/3.1.0.txt +0 -406
- data/doc/release_notes/3.10.0.txt +0 -286
- data/doc/release_notes/3.11.0.txt +0 -254
- data/doc/release_notes/3.12.0.txt +0 -304
- data/doc/release_notes/3.13.0.txt +0 -210
- data/doc/release_notes/3.14.0.txt +0 -118
- data/doc/release_notes/3.15.0.txt +0 -78
- data/doc/release_notes/3.16.0.txt +0 -45
- data/doc/release_notes/3.17.0.txt +0 -58
- data/doc/release_notes/3.18.0.txt +0 -120
- data/doc/release_notes/3.19.0.txt +0 -67
- data/doc/release_notes/3.2.0.txt +0 -268
- data/doc/release_notes/3.20.0.txt +0 -41
- data/doc/release_notes/3.21.0.txt +0 -87
- data/doc/release_notes/3.22.0.txt +0 -39
- data/doc/release_notes/3.23.0.txt +0 -172
- data/doc/release_notes/3.24.0.txt +0 -420
- data/doc/release_notes/3.25.0.txt +0 -88
- data/doc/release_notes/3.26.0.txt +0 -88
- data/doc/release_notes/3.27.0.txt +0 -82
- data/doc/release_notes/3.28.0.txt +0 -304
- data/doc/release_notes/3.29.0.txt +0 -459
- data/doc/release_notes/3.3.0.txt +0 -192
- data/doc/release_notes/3.30.0.txt +0 -135
- data/doc/release_notes/3.31.0.txt +0 -146
- data/doc/release_notes/3.32.0.txt +0 -202
- data/doc/release_notes/3.33.0.txt +0 -157
- data/doc/release_notes/3.34.0.txt +0 -671
- data/doc/release_notes/3.35.0.txt +0 -144
- data/doc/release_notes/3.36.0.txt +0 -245
- data/doc/release_notes/3.37.0.txt +0 -338
- data/doc/release_notes/3.38.0.txt +0 -234
- data/doc/release_notes/3.39.0.txt +0 -237
- data/doc/release_notes/3.4.0.txt +0 -325
- data/doc/release_notes/3.40.0.txt +0 -73
- data/doc/release_notes/3.41.0.txt +0 -155
- data/doc/release_notes/3.42.0.txt +0 -74
- data/doc/release_notes/3.43.0.txt +0 -105
- data/doc/release_notes/3.44.0.txt +0 -152
- data/doc/release_notes/3.45.0.txt +0 -179
- data/doc/release_notes/3.46.0.txt +0 -122
- data/doc/release_notes/3.47.0.txt +0 -270
- data/doc/release_notes/3.48.0.txt +0 -477
- data/doc/release_notes/3.5.0.txt +0 -510
- data/doc/release_notes/3.6.0.txt +0 -366
- data/doc/release_notes/3.7.0.txt +0 -179
- data/doc/release_notes/3.8.0.txt +0 -151
- data/doc/release_notes/3.9.0.txt +0 -233
- 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.3.0.txt +0 -40
- data/doc/release_notes/4.4.0.txt +0 -92
- 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/lib/sequel/adapters/cubrid.rb +0 -142
- data/lib/sequel/adapters/do.rb +0 -156
- data/lib/sequel/adapters/do/mysql.rb +0 -64
- data/lib/sequel/adapters/do/postgres.rb +0 -42
- data/lib/sequel/adapters/do/sqlite3.rb +0 -40
- data/lib/sequel/adapters/jdbc/as400.rb +0 -82
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -62
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -34
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -31
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -31
- data/lib/sequel/adapters/odbc/progress.rb +0 -8
- data/lib/sequel/adapters/shared/cubrid.rb +0 -243
- data/lib/sequel/adapters/shared/firebird.rb +0 -245
- data/lib/sequel/adapters/shared/informix.rb +0 -52
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -150
- data/lib/sequel/adapters/shared/progress.rb +0 -38
- data/lib/sequel/adapters/swift.rb +0 -158
- data/lib/sequel/adapters/swift/mysql.rb +0 -47
- data/lib/sequel/adapters/swift/postgres.rb +0 -45
- data/lib/sequel/adapters/swift/sqlite.rb +0 -47
- data/lib/sequel/adapters/utils/pg_types.rb +0 -68
- data/lib/sequel/dataset/mutation.rb +0 -109
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -3
- data/lib/sequel/extensions/filter_having.rb +0 -59
- data/lib/sequel/extensions/hash_aliases.rb +0 -45
- data/lib/sequel/extensions/meta_def.rb +0 -31
- data/lib/sequel/extensions/query_literals.rb +0 -80
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -22
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -118
- data/lib/sequel/extensions/set_overrides.rb +0 -72
- data/lib/sequel/no_core_ext.rb +0 -1
- data/lib/sequel/plugins/association_autoreloading.rb +0 -7
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -7
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -78
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -117
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -59
- data/lib/sequel/plugins/schema.rb +0 -80
- data/lib/sequel/plugins/scissors.rb +0 -33
- data/spec/adapters/db2_spec.rb +0 -160
- data/spec/adapters/firebird_spec.rb +0 -411
- data/spec/adapters/informix_spec.rb +0 -100
- data/spec/adapters/mssql_spec.rb +0 -706
- data/spec/adapters/mysql_spec.rb +0 -1287
- data/spec/adapters/oracle_spec.rb +0 -313
- data/spec/adapters/postgres_spec.rb +0 -3725
- data/spec/adapters/spec_helper.rb +0 -43
- data/spec/adapters/sqlanywhere_spec.rb +0 -170
- data/spec/adapters/sqlite_spec.rb +0 -653
- data/spec/bin_spec.rb +0 -254
- data/spec/core/connection_pool_spec.rb +0 -1016
- data/spec/core/database_spec.rb +0 -2531
- data/spec/core/dataset_spec.rb +0 -5098
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1243
- data/spec/core/mock_adapter_spec.rb +0 -462
- data/spec/core/object_graph_spec.rb +0 -303
- data/spec/core/placeholder_literalizer_spec.rb +0 -163
- data/spec/core/schema_generator_spec.rb +0 -179
- data/spec/core/schema_spec.rb +0 -1659
- data/spec/core/spec_helper.rb +0 -34
- data/spec/core/version_spec.rb +0 -7
- data/spec/core_extensions_spec.rb +0 -699
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -123
- data/spec/extensions/after_initialize_spec.rb +0 -24
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -117
- data/spec/extensions/association_pks_spec.rb +0 -365
- data/spec/extensions/association_proxies_spec.rb +0 -86
- data/spec/extensions/auto_validations_spec.rb +0 -192
- data/spec/extensions/blacklist_security_spec.rb +0 -88
- data/spec/extensions/blank_spec.rb +0 -69
- data/spec/extensions/boolean_readers_spec.rb +0 -93
- data/spec/extensions/caching_spec.rb +0 -270
- data/spec/extensions/class_table_inheritance_spec.rb +0 -420
- data/spec/extensions/column_conflicts_spec.rb +0 -60
- data/spec/extensions/column_select_spec.rb +0 -108
- data/spec/extensions/columns_introspection_spec.rb +0 -91
- data/spec/extensions/composition_spec.rb +0 -242
- data/spec/extensions/connection_validator_spec.rb +0 -120
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -274
- data/spec/extensions/constraint_validations_spec.rb +0 -325
- data/spec/extensions/core_refinements_spec.rb +0 -519
- data/spec/extensions/csv_serializer_spec.rb +0 -173
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -311
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -150
- data/spec/extensions/defaults_setter_spec.rb +0 -101
- data/spec/extensions/delay_add_association_spec.rb +0 -52
- data/spec/extensions/dirty_spec.rb +0 -180
- data/spec/extensions/eager_each_spec.rb +0 -42
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/eval_inspect_spec.rb +0 -73
- data/spec/extensions/filter_having_spec.rb +0 -40
- data/spec/extensions/force_encoding_spec.rb +0 -114
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/graph_each_spec.rb +0 -109
- data/spec/extensions/hash_aliases_spec.rb +0 -24
- data/spec/extensions/hook_class_methods_spec.rb +0 -429
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -54
- data/spec/extensions/insert_returning_select_spec.rb +0 -46
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -276
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -291
- data/spec/extensions/lazy_attributes_spec.rb +0 -170
- data/spec/extensions/list_spec.rb +0 -267
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2172
- data/spec/extensions/meta_def_spec.rb +0 -21
- data/spec/extensions/migration_spec.rb +0 -712
- data/spec/extensions/modification_detection_spec.rb +0 -80
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
- data/spec/extensions/named_timezones_spec.rb +0 -108
- data/spec/extensions/nested_attributes_spec.rb +0 -697
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -128
- data/spec/extensions/pagination_spec.rb +0 -118
- data/spec/extensions/pg_array_associations_spec.rb +0 -736
- data/spec/extensions/pg_array_ops_spec.rb +0 -143
- data/spec/extensions/pg_array_spec.rb +0 -395
- data/spec/extensions/pg_enum_spec.rb +0 -92
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
- data/spec/extensions/pg_hstore_spec.rb +0 -206
- data/spec/extensions/pg_inet_ops_spec.rb +0 -101
- data/spec/extensions/pg_inet_spec.rb +0 -52
- data/spec/extensions/pg_interval_spec.rb +0 -76
- data/spec/extensions/pg_json_ops_spec.rb +0 -229
- data/spec/extensions/pg_json_spec.rb +0 -218
- data/spec/extensions/pg_loose_count_spec.rb +0 -17
- data/spec/extensions/pg_range_ops_spec.rb +0 -58
- data/spec/extensions/pg_range_spec.rb +0 -404
- data/spec/extensions/pg_row_ops_spec.rb +0 -60
- data/spec/extensions/pg_row_plugin_spec.rb +0 -62
- data/spec/extensions/pg_row_spec.rb +0 -360
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
- data/spec/extensions/prepared_statements_spec.rb +0 -103
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
- data/spec/extensions/pretty_table_spec.rb +0 -92
- data/spec/extensions/query_literals_spec.rb +0 -183
- data/spec/extensions/query_spec.rb +0 -102
- data/spec/extensions/rcte_tree_spec.rb +0 -392
- data/spec/extensions/round_timestamps_spec.rb +0 -43
- data/spec/extensions/schema_caching_spec.rb +0 -41
- data/spec/extensions/schema_dumper_spec.rb +0 -789
- data/spec/extensions/schema_spec.rb +0 -117
- data/spec/extensions/scissors_spec.rb +0 -26
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -362
- data/spec/extensions/server_block_spec.rb +0 -90
- data/spec/extensions/set_overrides_spec.rb +0 -61
- data/spec/extensions/sharding_spec.rb +0 -198
- data/spec/extensions/shared_caching_spec.rb +0 -175
- data/spec/extensions/single_table_inheritance_spec.rb +0 -297
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -17
- data/spec/extensions/spec_helper.rb +0 -71
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -22
- data/spec/extensions/sql_expr_spec.rb +0 -60
- data/spec/extensions/static_cache_spec.rb +0 -361
- 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 -66
- data/spec/extensions/table_select_spec.rb +0 -71
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -82
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/timestamps_spec.rb +0 -175
- data/spec/extensions/to_dot_spec.rb +0 -154
- data/spec/extensions/touch_spec.rb +0 -203
- data/spec/extensions/tree_spec.rb +0 -274
- data/spec/extensions/typecast_on_load_spec.rb +0 -80
- data/spec/extensions/unlimited_update_spec.rb +0 -20
- data/spec/extensions/update_or_create_spec.rb +0 -87
- data/spec/extensions/update_primary_key_spec.rb +0 -100
- data/spec/extensions/update_refresh_spec.rb +0 -53
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1027
- data/spec/extensions/validation_helpers_spec.rb +0 -541
- data/spec/extensions/xml_serializer_spec.rb +0 -207
- 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/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/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/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 -55
- data/spec/integration/associations_test.rb +0 -2454
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1808
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -240
- data/spec/integration/model_test.rb +0 -226
- data/spec/integration/plugin_test.rb +0 -2240
- data/spec/integration/prepared_statement_test.rb +0 -467
- data/spec/integration/schema_test.rb +0 -817
- data/spec/integration/spec_helper.rb +0 -48
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -374
- data/spec/integration/type_test.rb +0 -133
- data/spec/model/association_reflection_spec.rb +0 -525
- data/spec/model/associations_spec.rb +0 -4426
- data/spec/model/base_spec.rb +0 -759
- data/spec/model/class_dataset_methods_spec.rb +0 -146
- data/spec/model/dataset_methods_spec.rb +0 -149
- data/spec/model/eager_loading_spec.rb +0 -2137
- data/spec/model/hooks_spec.rb +0 -604
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -982
- data/spec/model/plugins_spec.rb +0 -299
- data/spec/model/record_spec.rb +0 -2147
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -193
- data/spec/sequel_coverage.rb +0 -15
- data/spec/spec_config.rb +0 -10
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* Sequel now supports generated columns on SQLite 3.31+ using the
|
|
4
|
+
:generated_always_as and :generated_type options. Example:
|
|
5
|
+
|
|
6
|
+
DB.create_table(:table) do
|
|
7
|
+
primary_key :id
|
|
8
|
+
Numeric :amount, null: false
|
|
9
|
+
Numeric :tax, null: false
|
|
10
|
+
Numeric :total, generated_always_as: (Sequel[:amount] + :tax)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
= Other Improvements
|
|
14
|
+
|
|
15
|
+
* The Database#transaction :before_retry option is now called before
|
|
16
|
+
retrying the transaction even when the :num_retries option is set
|
|
17
|
+
to nil.
|
|
18
|
+
|
|
19
|
+
* The gem no longer ships with specs and older release notes, reducing
|
|
20
|
+
the gem size by over 40%.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* A forbid_lazy_load plugin has been added to forbid the lazy loading
|
|
4
|
+
of model associations if the current object was retreived with other
|
|
5
|
+
objects. This plugin helps detect N+1 query issues. This plugin
|
|
6
|
+
will raise an error if a lazy load is detected in such cases:
|
|
7
|
+
|
|
8
|
+
Album.plugin :forbid_lazy_load
|
|
9
|
+
Album.one_to_many :tracks
|
|
10
|
+
|
|
11
|
+
Album.each do |album|
|
|
12
|
+
album.tracks
|
|
13
|
+
# Could be N+1, raises Sequel::Plugins::ForbidLazyLoad::Error
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
Album.first.tracks
|
|
17
|
+
# Could not be N+1, no error raised
|
|
18
|
+
|
|
19
|
+
The forbid_lazy_load plugin is designed to be loaded into the base
|
|
20
|
+
model class (generally Sequel::Model), and can be loaded only in
|
|
21
|
+
test mode, or only in certain test mode configurations, so that it
|
|
22
|
+
does not have any production performance impact.
|
|
23
|
+
|
|
24
|
+
Note that an alternative approach that Sequel has supported for many
|
|
25
|
+
years is the tactical_eager_loading plugin, which automatically
|
|
26
|
+
eager loads when an N+1 query issue is detected.
|
|
27
|
+
|
|
28
|
+
* An association_lazy_eager_option plugin has been added which supports
|
|
29
|
+
the :eager option for the association method. If the association has
|
|
30
|
+
not been loaded, this eagerly loads the associations specified by the
|
|
31
|
+
:eager option when loading the association. If the association has
|
|
32
|
+
already been loaded, this option is ignored, with the assumption that
|
|
33
|
+
whatever loaded the association already used the correct eager
|
|
34
|
+
loading. Example:
|
|
35
|
+
|
|
36
|
+
Album.plugin :association_lazy_eager_option
|
|
37
|
+
Album.one_to_many :tracks
|
|
38
|
+
Track.many_to_one :artist
|
|
39
|
+
|
|
40
|
+
album = Album.first
|
|
41
|
+
album.tracks(:eager=>:artist)
|
|
42
|
+
# Loads tracks for album, then artist for each track (2 queries)
|
|
43
|
+
|
|
44
|
+
album.tracks(:eager=>:artist)
|
|
45
|
+
# No query issued as association is cached
|
|
46
|
+
|
|
47
|
+
You could previously have similar behavior for uncached associations
|
|
48
|
+
by passing a block to the association method and calling eager on
|
|
49
|
+
the yielded dataset. However, that would ignore any cached
|
|
50
|
+
association, causing redundant loading of the association in such
|
|
51
|
+
cases.
|
|
52
|
+
|
|
53
|
+
* On PostgreSQL 10+, creating partitioned tables and partitions of
|
|
54
|
+
other tables is now supported.
|
|
55
|
+
|
|
56
|
+
To create a partitioned table, use the :partition_by option:
|
|
57
|
+
|
|
58
|
+
DB.create_table(:table1, partition_by: :date_column,
|
|
59
|
+
partition_type: :range) do
|
|
60
|
+
Integer :id
|
|
61
|
+
Date :date_column
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
DB.create_table(:table2, partition_by: :string_column,
|
|
65
|
+
partition_type: :list) do
|
|
66
|
+
Integer :id
|
|
67
|
+
String :string_column
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
DB.create_table(:table3, partition_by: :int_column,
|
|
71
|
+
partition_type: :hash) do
|
|
72
|
+
Integer :id
|
|
73
|
+
Integer :int_column
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
To add partitions of other tables, use the :partition_of option.
|
|
77
|
+
This option will use a custom DSL specific to partitions of other
|
|
78
|
+
tables.
|
|
79
|
+
|
|
80
|
+
For range partitioning, you can use the from and to methods to
|
|
81
|
+
specify the inclusive beginning and exclusive ending of the range
|
|
82
|
+
of the partition. You can call the minvalue and maxvalue methods
|
|
83
|
+
to get the minimum and maximum values for the column(s) in the
|
|
84
|
+
range, useful as arguments to from and to:
|
|
85
|
+
|
|
86
|
+
DB.create_table(:table1a, partition_of: :table1) do
|
|
87
|
+
from minvalue
|
|
88
|
+
to 0
|
|
89
|
+
end
|
|
90
|
+
DB.create_table(:table1b, partition_of: :table1) do
|
|
91
|
+
from 0
|
|
92
|
+
to 100
|
|
93
|
+
end
|
|
94
|
+
DB.create_table(:table1c, partition_of: :table1) do
|
|
95
|
+
from 100
|
|
96
|
+
to maxvalue
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
For list partitioning, you use the values_in method. You can also
|
|
100
|
+
use the default method to mark a partition as the default partition:
|
|
101
|
+
|
|
102
|
+
DB.create_table(:table2a, partition_of: :table2) do
|
|
103
|
+
values_in 1, 2, 3
|
|
104
|
+
end
|
|
105
|
+
DB.create_table(:table2b, partition_of: :table2) do
|
|
106
|
+
values_in 4, 5, 6
|
|
107
|
+
end
|
|
108
|
+
DB.create_table(:table2c, partition_of: :table2) do
|
|
109
|
+
default
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
For hash partitioning, you use the modulus and remainder methods:
|
|
113
|
+
|
|
114
|
+
DB.create_table(:table3a, partition_of: :table3) do
|
|
115
|
+
modulus 3
|
|
116
|
+
remainder 0
|
|
117
|
+
end
|
|
118
|
+
DB.create_table(:table3b, partition_of: :table3) do
|
|
119
|
+
modulus 3
|
|
120
|
+
remainder 1
|
|
121
|
+
end
|
|
122
|
+
DB.create_table(:table3c, partition_of: :table3) do
|
|
123
|
+
modulus 3
|
|
124
|
+
remainder 2
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
* On PostgreSQL 12+ and SQLite 3.31+, column schema hashes now have
|
|
128
|
+
a :generated entry for whether the column is a generated column.
|
|
129
|
+
|
|
130
|
+
* The schema_dumper extension now dumps generated columns correctly
|
|
131
|
+
when using the :same_db option on PostgreSQL 12+.
|
|
132
|
+
|
|
133
|
+
* A skip_saving_columns plugin has been added. This allows skipping
|
|
134
|
+
saving of specific columns for the model. By default, it skips
|
|
135
|
+
saving of generated columns, but you can customize the columns
|
|
136
|
+
that it skips:
|
|
137
|
+
|
|
138
|
+
Album.plugin :skip_saving_columns
|
|
139
|
+
Album.skip_saving_columns = [:some_column]
|
|
140
|
+
|
|
141
|
+
= Other Improvements
|
|
142
|
+
|
|
143
|
+
* The alter_table drop_constraint :primary_key option on SQLite now
|
|
144
|
+
works correctly for non-integer primary keys.
|
|
145
|
+
|
|
146
|
+
* When an error is raised due to an irreversible migration, the error
|
|
147
|
+
message now includes the file containing the migration for easier
|
|
148
|
+
debugging.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* A fiber_concurrency extension has been added, for using
|
|
4
|
+
Fiber.current instead of Thread.current when checking out a
|
|
5
|
+
connection. This allows separate fibers of the same thread
|
|
6
|
+
to use separate connections. In addition to allowing direct use
|
|
7
|
+
of fibers, this also allows concurrent use of multiple enumerators
|
|
8
|
+
that use database connections in the same thread.
|
|
9
|
+
|
|
10
|
+
When using this extension, you must be careful and ensure that you
|
|
11
|
+
are not using more concurrent fibers than your connection pool size.
|
|
12
|
+
Otherwise, all fibers will block while one fiber waits until a
|
|
13
|
+
connection is available. It is possible this issue will be
|
|
14
|
+
addressed when Ruby implements a fiber scheduler (currently
|
|
15
|
+
being discussed for inclusion in Ruby 3).
|
|
16
|
+
|
|
17
|
+
* A run_transaction_hooks Database extension has been added,
|
|
18
|
+
allowing for running the transaction hooks before commit/rollback,
|
|
19
|
+
which can be helpful for testing the hooks when using transactional
|
|
20
|
+
testing.
|
|
21
|
+
|
|
22
|
+
= Other Improvements
|
|
23
|
+
|
|
24
|
+
* Database#create_table? now works correctly with the :partition_of
|
|
25
|
+
option on PostgreSQL.
|
|
26
|
+
|
|
27
|
+
* The timestamp(N) with time zone type is now recognized by the
|
|
28
|
+
schema parser.
|
|
29
|
+
|
|
30
|
+
* Singleton methods of the Sequel module have now been moved into a
|
|
31
|
+
Sequel::SequelMethods module. This allows you to extend Sequel
|
|
32
|
+
with a module that overrides the methods and call super to get
|
|
33
|
+
the default behavior.
|
|
34
|
+
|
|
35
|
+
* The pg_inet extension no longer defines inet/cidr conversion procs
|
|
36
|
+
if sequel_pg 1.13.0+ is in use. This is because sequel_pg 1.13.0+
|
|
37
|
+
will respect the conversion procs and defining them makes things
|
|
38
|
+
slower. sequel_pg 1.13.0+ handles the same conversion by default
|
|
39
|
+
without needing a conversion proc.
|
|
40
|
+
|
|
41
|
+
* Method visibility issues in the model, plugin, extension, and adapter
|
|
42
|
+
code have been fixed. Most cases fixed were private methods being
|
|
43
|
+
accidentally made public when they were overridden.
|
|
44
|
+
|
|
45
|
+
During this change, Model#_insert_values was changed from public to
|
|
46
|
+
private, since it was originally intended to be private.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* Custom join types are now supported on a per-association basis when
|
|
4
|
+
using eager_graph/association_join. This builds on the previous
|
|
5
|
+
support for custom aliases, using Sequel::SQL::AliasedExpression:
|
|
6
|
+
|
|
7
|
+
class Artist < Sequel::Model; end
|
|
8
|
+
class Album < Sequel::Model; end
|
|
9
|
+
class Track < Sequel::Model; end
|
|
10
|
+
Artist.one_to_many :albums
|
|
11
|
+
Album.one_to_many :tracks
|
|
12
|
+
Artist.eager_graph(
|
|
13
|
+
Sequel[:albums].as(:a, join_type: :inner) =>
|
|
14
|
+
Sequel[:tracks].as(:t, join_type: :left)
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
* A Database#current_timestamp_utc accessor has been added on SQLite.
|
|
18
|
+
Setting this to true will keep CURRENT_TIMESTAMP, CURRENT_TIME, and
|
|
19
|
+
CURRENT_DATE in UTC instead of converting them to localtime.
|
|
20
|
+
|
|
21
|
+
= Other Improvements
|
|
22
|
+
|
|
23
|
+
* The smallserial PostgreSQL type is now recognized and Sequel will
|
|
24
|
+
not try to mark smallserial columns as identity columns.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* The association_pks plugin now creates *_pks_dataset methods for
|
|
4
|
+
each association. These are similar to the existing *_pks getter
|
|
5
|
+
methods, but they return a dataset of the keys instead of the keys
|
|
6
|
+
themselves.
|
|
7
|
+
|
|
8
|
+
* The association_pks plugin now supports a :cache_pks association
|
|
9
|
+
option, which will cache calls to the *_pks getter method. The
|
|
10
|
+
default behavior remains that the *_pks getter method only returns
|
|
11
|
+
cached values if the *_pks= setter method has been used to set the
|
|
12
|
+
values.
|
|
13
|
+
|
|
14
|
+
* The *_pks getter methods supported by the association_pks plugin
|
|
15
|
+
now support a :refresh option to ignore any cached values, similar
|
|
16
|
+
to how the association getter methods work.
|
|
17
|
+
|
|
18
|
+
= Other Improvements
|
|
19
|
+
|
|
20
|
+
* If trying to disconnect a server that doesn't exist when using a
|
|
21
|
+
sharded connection pool, a Sequel::Error is now raised. Previously,
|
|
22
|
+
the sharded threaded pool raised a NoMethodError and the sharded
|
|
23
|
+
single connection pool did not raise an error.
|
|
24
|
+
|
|
25
|
+
* If using the :savepoint option when savepoints are not supported,
|
|
26
|
+
a Sequel::InvalidOperation exception is now raised, instead of a
|
|
27
|
+
NoMethodError.
|
|
28
|
+
|
|
29
|
+
* Calling Dataset#eager_graph with no arguments now returns the
|
|
30
|
+
dataset.
|
|
31
|
+
|
|
32
|
+
* If not connected to the database, the single connection pool will
|
|
33
|
+
not yield any connections to Database#pool.all_connections.
|
|
34
|
+
|
|
35
|
+
* Forcing a :ruby eager limit strategy for an association without a
|
|
36
|
+
limit or offset now works correctly.
|
|
37
|
+
|
|
38
|
+
* Multiple unnecessary conditionals have been removed.
|
|
39
|
+
|
|
40
|
+
* Sequel core and model code now have 100% branch coverage.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* An instance_specific_default plugin has been added for setting the
|
|
4
|
+
default for the :instance_specific association option, or
|
|
5
|
+
warning/raises in cases where it is not specified. This allows
|
|
6
|
+
you to easily find associations that would be considering instance
|
|
7
|
+
specific by default, and mark them as not instance specific for
|
|
8
|
+
better performance.
|
|
9
|
+
|
|
10
|
+
= Other Improvements
|
|
11
|
+
|
|
12
|
+
* Setting the :instance_specific association option to false now
|
|
13
|
+
works correctly if the association uses a block. Associations
|
|
14
|
+
that set the :dataset option are now always considered instance
|
|
15
|
+
specific, even if the :instance_specific option is explicitly
|
|
16
|
+
passed.
|
|
17
|
+
|
|
18
|
+
* The validation_class_methods plugin now considers all :if,
|
|
19
|
+
:allow_missing, :allow_nil, and :allow_blank options. Previously,
|
|
20
|
+
it only considered the first of those options that was set.
|
|
21
|
+
|
|
22
|
+
* Model.finalize_associations no longer breaks if you have
|
|
23
|
+
instance-specific associations.
|
|
24
|
+
|
|
25
|
+
* Model.plugin now warns if you load the plugin with arguments or a
|
|
26
|
+
block if the plugin does not accept arguments or block. This is
|
|
27
|
+
because a future change to Sequel could break the call.
|
|
28
|
+
|
|
29
|
+
* When emulating unsupported alter table operations on SQLite, Sequel
|
|
30
|
+
now copies composite unique constraints unless the alter table
|
|
31
|
+
operation is the dropping of a unique constraint.
|
|
32
|
+
|
|
33
|
+
* Sequel now recognizes an additional disconnect error in the oracle
|
|
34
|
+
adapter.
|
|
35
|
+
|
|
36
|
+
* In the run_transaction_hooks extension, calling
|
|
37
|
+
run_after_{commit,rollback}_hooks now raises the correct exception
|
|
38
|
+
class.
|
|
39
|
+
|
|
40
|
+
* In the pg_range extension, conversion procs for the tsrange[] and
|
|
41
|
+
tstzrange[] types are not added unless the Database uses the
|
|
42
|
+
pg_array extension.
|
|
43
|
+
|
|
44
|
+
* Multiple unnecessary conditionals in plugins and extensions have
|
|
45
|
+
been removed.
|
|
46
|
+
|
|
47
|
+
* Sequel plugin and extension code now have 100% branch coverage.
|
|
48
|
+
|
|
49
|
+
* Sequel now avoids a statement not reached verbose warning in
|
|
50
|
+
Dataset#clone.
|
|
51
|
+
|
|
52
|
+
= Backwards Compatibility
|
|
53
|
+
|
|
54
|
+
* The output of Dataset#to_dot in the to_dot extension has changed
|
|
55
|
+
slightly, including hash entries with nil keys. These entries
|
|
56
|
+
were previously ignored.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* Dataset#with_ties has been added on PostgreSQL 13+ and Microsoft
|
|
4
|
+
SQL Server, which will have a limited dataset also return all
|
|
5
|
+
rows with the same order as the final row.
|
|
6
|
+
|
|
7
|
+
* In the pg_json_ops extension, the following methods have been
|
|
8
|
+
added to Postgres::JSONBOp, all of which require PostgreSQL 13+:
|
|
9
|
+
|
|
10
|
+
* #set_lax
|
|
11
|
+
* #path_exists_tz!
|
|
12
|
+
* #path_match_tz!
|
|
13
|
+
* #path_query_tz
|
|
14
|
+
* #path_query_array_tz
|
|
15
|
+
* #path_query_first_tz
|
|
16
|
+
|
|
17
|
+
* On Oracle, the Database#view_exists? method now accepts a
|
|
18
|
+
:current_schema option to limit the views returned to the
|
|
19
|
+
current schema, instead of all non-system schemas.
|
|
20
|
+
|
|
21
|
+
= Other Improvements
|
|
22
|
+
|
|
23
|
+
* Sequel will now pass keyword arguments through in the following
|
|
24
|
+
cases:
|
|
25
|
+
|
|
26
|
+
* When loading plugins (Model.plugin)
|
|
27
|
+
|
|
28
|
+
* Class methods automically defined for methods defined in a
|
|
29
|
+
Model.dataset_module block
|
|
30
|
+
|
|
31
|
+
* Methods defined by Plugins.def_dataset_method
|
|
32
|
+
|
|
33
|
+
* Database methods called inside migrations
|
|
34
|
+
|
|
35
|
+
* Methods called via an association proxy when using the
|
|
36
|
+
association_proxies plugin.
|
|
37
|
+
|
|
38
|
+
* Dataset methods called inside a Dataset#query block when using
|
|
39
|
+
the query extension.
|
|
40
|
+
|
|
41
|
+
Previously, keywords were not handled in these cases, which would
|
|
42
|
+
cause deprecation warnings in Ruby 2.7 and ArgumentErrors in Ruby
|
|
43
|
+
3.0. Note that Sequel itself does not use keyword arguments at
|
|
44
|
+
all, so all of these changes only affect cases where external
|
|
45
|
+
methods are defined that accept keywords, and Sequel methods are
|
|
46
|
+
called with keywords that end up being delegated to the external
|
|
47
|
+
methods.
|
|
48
|
+
|
|
49
|
+
* The odbc adapter will now stream result sets instead of loading
|
|
50
|
+
the entire result set in memory and then iterating over it.
|
|
51
|
+
|
|
52
|
+
* Sequel now recognizes another disconnect error in the mysql and
|
|
53
|
+
mysql2 adapters.
|
|
54
|
+
|
|
55
|
+
= Backwards Compatibility
|
|
56
|
+
|
|
57
|
+
* Due to the odbc adapter change to use streaming, issuing queries
|
|
58
|
+
inside a Dataset#each block will no longer work unless a different
|
|
59
|
+
shard or thread is used. The behavior of such code is considered
|
|
60
|
+
undefined on all Sequel adapters.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* Model#column_previously_was and #column_previously_changed? have
|
|
4
|
+
been added to the dirty plugin, for getting the previous values
|
|
5
|
+
of the column before saving and for whether there were changes
|
|
6
|
+
before saving.
|
|
7
|
+
|
|
8
|
+
Model#column_previously_changed? accepts :from and :to options
|
|
9
|
+
to allow you to more easily determine if the value changed from
|
|
10
|
+
and/or to specific values.
|
|
11
|
+
|
|
12
|
+
This information was previously obtainable via
|
|
13
|
+
Model#previous_changes, but these new methods offer a friendlier
|
|
14
|
+
interface.
|
|
15
|
+
|
|
16
|
+
* Postgres::PGRow::{Array,Hash}Row#op has been added to the
|
|
17
|
+
pg_row_ops extension if the pg_row extension is loaded. This
|
|
18
|
+
is similar to how the pg_array_ops, pg_hstore_ops, and
|
|
19
|
+
pg_json_ops and #op method to their objects. This makes it
|
|
20
|
+
easier to perform row operations on literal rows.
|
|
21
|
+
|
|
22
|
+
= Other Improvements
|
|
23
|
+
|
|
24
|
+
* The schema_dumper extension now supports more unsigned numeric
|
|
25
|
+
types, such as "decimal(7,2) unsigned" and "real unsigned".
|
|
26
|
+
|
|
27
|
+
* IntegerMigrator now raises an Migrator::Error if attempting to
|
|
28
|
+
migrate down when there are migration files missing and needed for
|
|
29
|
+
the down migration. Previously, IntegerMigrator would not raise an
|
|
30
|
+
exception and would make no database changes in this case.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* An index_caching extension has been added, which makes
|
|
4
|
+
Database#indexes use a cache similar to Database#schema, and also
|
|
5
|
+
offers methods for saving and loading the cache from a file, similar
|
|
6
|
+
to the schema_caching extension.
|
|
7
|
+
|
|
8
|
+
This can speed up model loaded in certain cases when the
|
|
9
|
+
auto_validations plugin is used.
|
|
10
|
+
|
|
11
|
+
* A datetime_parse_to_time extension has been added, which parses
|
|
12
|
+
strings without timezone offsets using DateTime.parse intead of
|
|
13
|
+
Time.parse. This can fix problems when the string being parsed
|
|
14
|
+
represents a time not valid in the local timezone due to daylight
|
|
15
|
+
savings time shifts. Time.parse silently shifts such times by 1
|
|
16
|
+
hour instead of raising an exception, resulting in incorrect
|
|
17
|
+
behavior in that case.
|
|
18
|
+
|
|
19
|
+
It only makes sense to use this extension when the times in the
|
|
20
|
+
database are stored in UTC but not returned with timezone
|
|
21
|
+
information, the timezone for the Database instance
|
|
22
|
+
(or Sequel.database_timezone) is set to :utc (not the default),
|
|
23
|
+
and Time is used as the datetime_class (the default).
|
|
24
|
+
|
|
25
|
+
* A pg_timestamptz extension has been added for switching the default
|
|
26
|
+
generic timestamp type from timestamp to timestamptz.
|
|
27
|
+
|
|
28
|
+
* Sequel.date_{add,sub} in the date_arithmetic extension now supports
|
|
29
|
+
a :cast option for setting the cast type. This value defaults to
|
|
30
|
+
Time for backwards compatibility, which uses the default generic
|
|
31
|
+
timestamp type for the database.
|
|
32
|
+
|
|
33
|
+
* The class_table_inheritance plugin now supports an
|
|
34
|
+
:ignore_subclass_columns option which takes an array of column
|
|
35
|
+
symbols to ignore in subclasses. This allows you to use
|
|
36
|
+
the plugin when your table inheritance hierarchy includes
|
|
37
|
+
non-primary key columns with the same name in different tables.
|
|
38
|
+
|
|
39
|
+
= Improvements
|
|
40
|
+
|
|
41
|
+
* Dataset#insert_select now returns false instead of nil if it runs
|
|
42
|
+
an INSERT statement but does not return a value on Microsoft SQL
|
|
43
|
+
Server or PostgreSQL. This can happen on both databases if triggers
|
|
44
|
+
are used.
|
|
45
|
+
|
|
46
|
+
Model#save now checks for a false value returned by
|
|
47
|
+
Dataset#insert_select, and does not issue another INSERT statement
|
|
48
|
+
in that case.
|
|
49
|
+
|
|
50
|
+
* Database#indexes now correctly handles SQL::Identifier arguments on
|
|
51
|
+
SQLite, Microsoft SQL Server, SQLAnywhere, and DB2.
|
|
52
|
+
|
|
53
|
+
* Dataset#to_json in the json_serializer plugin and Dataset#to_xml
|
|
54
|
+
in the xml_serializer plugin now both handle datasets that use
|
|
55
|
+
eager_graph.
|
|
56
|
+
|
|
57
|
+
* Dataset#nullify now caches the dataset it returns, for better
|
|
58
|
+
performance if it is called more than once on the same dataset.
|
|
59
|
+
|
|
60
|
+
* Database#synchronize is now optimized on ruby 2.5+ and is about
|
|
61
|
+
10% faster by relying on the new lazy proc allocation feature.
|
|
62
|
+
|
|
63
|
+
= Backwards Compatibility
|
|
64
|
+
|
|
65
|
+
* Fractional second timestamps are now enabled on DB2. If you are
|
|
66
|
+
connecting to a DB2 database that does not support fractional
|
|
67
|
+
seconds, you should add the following code (where DB is your
|
|
68
|
+
Sequel::Database instance):
|
|
69
|
+
|
|
70
|
+
DB.extend_datasets do
|
|
71
|
+
def supports_timestamp_usecs?
|
|
72
|
+
false
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
* Calling a filtering method with no argument and a virtual row
|
|
77
|
+
block that returns nil on a dataset with no existing filter now
|
|
78
|
+
adds a WHERE NULL filter, to match the behavior if given a nil
|
|
79
|
+
argument. Previously, a deprecation warning was issued and a
|
|
80
|
+
dataset with no filter was returned.
|