sequel 4.36.0 → 5.61.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 +548 -5749
- data/MIT-LICENSE +1 -1
- data/README.rdoc +265 -159
- data/bin/sequel +34 -12
- data/doc/advanced_associations.rdoc +228 -187
- data/doc/association_basics.rdoc +281 -291
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +86 -51
- data/doc/code_order.rdoc +25 -19
- 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/fork_safety.rdoc +84 -0
- data/doc/mass_assignment.rdoc +74 -31
- data/doc/migration.rdoc +59 -51
- 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 +58 -68
- data/doc/opening_databases.rdoc +85 -95
- data/doc/postgresql.rdoc +263 -38
- data/doc/prepared_statements.rdoc +29 -24
- data/doc/querying.rdoc +189 -167
- 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.38.0.txt +28 -0
- data/doc/release_notes/5.39.0.txt +19 -0
- data/doc/release_notes/5.4.0.txt +80 -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/release_notes/5.5.0.txt +61 -0
- data/doc/release_notes/5.50.0.txt +78 -0
- data/doc/release_notes/5.51.0.txt +47 -0
- data/doc/release_notes/5.52.0.txt +87 -0
- data/doc/release_notes/5.53.0.txt +23 -0
- data/doc/release_notes/5.54.0.txt +27 -0
- data/doc/release_notes/5.55.0.txt +21 -0
- data/doc/release_notes/5.56.0.txt +51 -0
- data/doc/release_notes/5.57.0.txt +23 -0
- data/doc/release_notes/5.58.0.txt +31 -0
- data/doc/release_notes/5.59.0.txt +73 -0
- data/doc/release_notes/5.6.0.txt +31 -0
- data/doc/release_notes/5.60.0.txt +22 -0
- data/doc/release_notes/5.61.0.txt +43 -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 +95 -75
- data/doc/security.rdoc +109 -80
- data/doc/sharding.rdoc +74 -47
- data/doc/sql.rdoc +147 -122
- data/doc/testing.rdoc +43 -20
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +97 -18
- data/doc/validations.rdoc +52 -50
- data/doc/virtual_rows.rdoc +90 -109
- data/lib/sequel/adapters/ado/access.rb +15 -17
- data/lib/sequel/adapters/ado/mssql.rb +6 -15
- data/lib/sequel/adapters/ado.rb +150 -20
- data/lib/sequel/adapters/amalgalite.rb +11 -23
- data/lib/sequel/adapters/ibmdb.rb +47 -55
- data/lib/sequel/adapters/jdbc/db2.rb +29 -39
- data/lib/sequel/adapters/jdbc/derby.rb +58 -54
- data/lib/sequel/adapters/jdbc/h2.rb +93 -35
- data/lib/sequel/adapters/jdbc/hsqldb.rb +24 -31
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -10
- data/lib/sequel/adapters/jdbc/mssql.rb +3 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +17 -20
- data/lib/sequel/adapters/jdbc/oracle.rb +22 -18
- data/lib/sequel/adapters/jdbc/postgresql.rb +69 -71
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +11 -23
- data/lib/sequel/adapters/jdbc/sqlite.rb +47 -11
- data/lib/sequel/adapters/jdbc/sqlserver.rb +34 -9
- data/lib/sequel/adapters/jdbc/transactions.rb +22 -38
- data/lib/sequel/adapters/jdbc.rb +145 -130
- data/lib/sequel/adapters/mock.rb +100 -111
- data/lib/sequel/adapters/mysql.rb +114 -122
- data/lib/sequel/adapters/mysql2.rb +147 -63
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +8 -14
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/odbc.rb +20 -25
- data/lib/sequel/adapters/oracle.rb +50 -56
- data/lib/sequel/adapters/postgres.rb +305 -327
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +74 -78
- data/lib/sequel/adapters/shared/db2.rb +118 -71
- data/lib/sequel/adapters/shared/mssql.rb +301 -220
- data/lib/sequel/adapters/shared/mysql.rb +299 -217
- data/lib/sequel/adapters/shared/oracle.rb +226 -65
- data/lib/sequel/adapters/shared/postgres.rb +935 -395
- data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -126
- data/lib/sequel/adapters/shared/sqlite.rb +447 -173
- data/lib/sequel/adapters/sqlanywhere.rb +48 -35
- data/lib/sequel/adapters/sqlite.rb +156 -111
- data/lib/sequel/adapters/tinytds.rb +30 -38
- data/lib/sequel/adapters/utils/columns_limit_1.rb +22 -0
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +3 -6
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +2 -2
- 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 +1 -4
- data/lib/sequel/adapters/utils/stored_procedures.rb +7 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
- data/lib/sequel/ast_transformer.rb +17 -89
- data/lib/sequel/connection_pool/sharded_single.rb +18 -15
- data/lib/sequel/connection_pool/sharded_threaded.rb +130 -111
- data/lib/sequel/connection_pool/single.rb +18 -13
- data/lib/sequel/connection_pool/threaded.rb +121 -120
- data/lib/sequel/connection_pool.rb +48 -29
- data/lib/sequel/core.rb +351 -301
- data/lib/sequel/database/connecting.rb +69 -57
- data/lib/sequel/database/dataset.rb +13 -5
- data/lib/sequel/database/dataset_defaults.rb +18 -102
- data/lib/sequel/database/features.rb +18 -4
- data/lib/sequel/database/logging.rb +12 -11
- data/lib/sequel/database/misc.rb +180 -122
- data/lib/sequel/database/query.rb +47 -27
- data/lib/sequel/database/schema_generator.rb +178 -84
- data/lib/sequel/database/schema_methods.rb +172 -97
- data/lib/sequel/database/transactions.rb +205 -44
- data/lib/sequel/database.rb +17 -2
- data/lib/sequel/dataset/actions.rb +339 -155
- data/lib/sequel/dataset/dataset_module.rb +46 -0
- data/lib/sequel/dataset/features.rb +90 -35
- data/lib/sequel/dataset/graph.rb +80 -58
- data/lib/sequel/dataset/misc.rb +137 -47
- data/lib/sequel/dataset/placeholder_literalizer.rb +63 -25
- data/lib/sequel/dataset/prepared_statements.rb +188 -85
- data/lib/sequel/dataset/query.rb +530 -222
- data/lib/sequel/dataset/sql.rb +590 -368
- data/lib/sequel/dataset.rb +26 -16
- data/lib/sequel/deprecated.rb +12 -2
- data/lib/sequel/exceptions.rb +46 -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 +2 -5
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/async_thread_pool.rb +438 -0
- data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
- data/lib/sequel/extensions/blank.rb +8 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +4 -3
- data/lib/sequel/extensions/connection_expiration.rb +20 -10
- data/lib/sequel/extensions/connection_validator.rb +11 -10
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +62 -39
- data/lib/sequel/extensions/core_extensions.rb +42 -48
- data/lib/sequel/extensions/core_refinements.rb +80 -59
- data/lib/sequel/extensions/current_datetime_timestamp.rb +1 -4
- data/lib/sequel/extensions/date_arithmetic.rb +98 -39
- data/lib/sequel/extensions/date_parse_input_handler.rb +67 -0
- data/lib/sequel/extensions/datetime_parse_to_time.rb +41 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +21 -14
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +12 -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 +1 -34
- data/lib/sequel/extensions/graph_each.rb +4 -4
- 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 +13 -5
- data/lib/sequel/extensions/integer64.rb +32 -0
- data/lib/sequel/extensions/is_distinct_from.rb +141 -0
- data/lib/sequel/extensions/looser_typecasting.rb +17 -8
- data/lib/sequel/extensions/migration.rb +119 -78
- data/lib/sequel/extensions/named_timezones.rb +88 -23
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -82
- data/lib/sequel/extensions/null_dataset.rb +8 -8
- data/lib/sequel/extensions/pagination.rb +32 -29
- data/lib/sequel/extensions/pg_array.rb +221 -287
- data/lib/sequel/extensions/pg_array_ops.rb +17 -9
- data/lib/sequel/extensions/pg_enum.rb +63 -23
- data/lib/sequel/extensions/pg_extended_date_support.rb +241 -0
- data/lib/sequel/extensions/pg_hstore.rb +45 -54
- data/lib/sequel/extensions/pg_hstore_ops.rb +58 -6
- data/lib/sequel/extensions/pg_inet.rb +31 -12
- data/lib/sequel/extensions/pg_inet_ops.rb +2 -2
- data/lib/sequel/extensions/pg_interval.rb +56 -29
- data/lib/sequel/extensions/pg_json.rb +417 -140
- data/lib/sequel/extensions/pg_json_ops.rb +270 -18
- data/lib/sequel/extensions/pg_loose_count.rb +4 -2
- data/lib/sequel/extensions/pg_multirange.rb +372 -0
- data/lib/sequel/extensions/pg_range.rb +131 -191
- data/lib/sequel/extensions/pg_range_ops.rb +42 -13
- data/lib/sequel/extensions/pg_row.rb +48 -81
- data/lib/sequel/extensions/pg_row_ops.rb +33 -14
- data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
- data/lib/sequel/extensions/query.rb +9 -7
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +60 -0
- data/lib/sequel/extensions/schema_caching.rb +10 -1
- data/lib/sequel/extensions/schema_dumper.rb +71 -48
- data/lib/sequel/extensions/select_remove.rb +4 -4
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
- data/lib/sequel/extensions/server_block.rb +51 -27
- data/lib/sequel/extensions/split_array_nil.rb +4 -4
- data/lib/sequel/extensions/sql_comments.rb +119 -7
- data/lib/sequel/extensions/sql_expr.rb +2 -1
- data/lib/sequel/extensions/sql_log_normalizer.rb +108 -0
- data/lib/sequel/extensions/sqlite_json_ops.rb +255 -0
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/string_date_time.rb +19 -23
- data/lib/sequel/extensions/symbol_aref.rb +55 -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/to_dot.rb +10 -4
- data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
- data/lib/sequel/model/associations.rb +1006 -284
- data/lib/sequel/model/base.rb +560 -805
- data/lib/sequel/model/dataset_module.rb +11 -10
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +10 -3
- data/lib/sequel/model/exceptions.rb +8 -10
- data/lib/sequel/model/inflections.rb +7 -20
- data/lib/sequel/model/plugins.rb +114 -0
- data/lib/sequel/model.rb +32 -82
- data/lib/sequel/plugins/active_model.rb +30 -14
- data/lib/sequel/plugins/after_initialize.rb +1 -1
- data/lib/sequel/plugins/association_dependencies.rb +25 -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 +147 -70
- data/lib/sequel/plugins/association_proxies.rb +33 -9
- data/lib/sequel/plugins/async_thread_pool.rb +39 -0
- data/lib/sequel/plugins/auto_restrict_eager_graph.rb +62 -0
- data/lib/sequel/plugins/auto_validations.rb +95 -28
- data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
- data/lib/sequel/plugins/before_after_save.rb +0 -42
- data/lib/sequel/plugins/blacklist_security.rb +21 -12
- data/lib/sequel/plugins/boolean_readers.rb +5 -5
- data/lib/sequel/plugins/boolean_subsets.rb +13 -8
- data/lib/sequel/plugins/caching.rb +25 -16
- data/lib/sequel/plugins/class_table_inheritance.rb +179 -100
- data/lib/sequel/plugins/column_conflicts.rb +16 -3
- data/lib/sequel/plugins/column_encryption.rb +728 -0
- data/lib/sequel/plugins/column_select.rb +7 -5
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +42 -26
- data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
- data/lib/sequel/plugins/constraint_validations.rb +20 -14
- data/lib/sequel/plugins/csv_serializer.rb +56 -35
- data/lib/sequel/plugins/dataset_associations.rb +40 -17
- data/lib/sequel/plugins/def_dataset_method.rb +90 -0
- data/lib/sequel/plugins/defaults_setter.rb +65 -10
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/dirty.rb +62 -24
- data/lib/sequel/plugins/eager_each.rb +3 -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/enum.rb +124 -0
- data/lib/sequel/plugins/error_splitter.rb +17 -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 +7 -12
- data/lib/sequel/plugins/hook_class_methods.rb +37 -54
- data/lib/sequel/plugins/input_transformer.rb +18 -10
- data/lib/sequel/plugins/insert_conflict.rb +76 -0
- data/lib/sequel/plugins/insert_returning_select.rb +2 -2
- data/lib/sequel/plugins/instance_filters.rb +10 -8
- data/lib/sequel/plugins/instance_hooks.rb +34 -17
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +22 -13
- data/lib/sequel/plugins/json_serializer.rb +124 -64
- data/lib/sequel/plugins/lazy_attributes.rb +21 -14
- data/lib/sequel/plugins/list.rb +35 -21
- data/lib/sequel/plugins/many_through_many.rb +134 -21
- data/lib/sequel/plugins/modification_detection.rb +15 -5
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +6 -5
- data/lib/sequel/plugins/nested_attributes.rb +61 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +103 -53
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +350 -0
- data/lib/sequel/plugins/pg_row.rb +5 -51
- data/lib/sequel/plugins/prepared_statements.rb +60 -72
- data/lib/sequel/plugins/prepared_statements_safe.rb +9 -4
- data/lib/sequel/plugins/rcte_tree.rb +68 -82
- data/lib/sequel/plugins/require_valid_schema.rb +67 -0
- data/lib/sequel/plugins/serialization.rb +43 -46
- data/lib/sequel/plugins/serialization_modification_detection.rb +3 -2
- data/lib/sequel/plugins/sharding.rb +15 -10
- data/lib/sequel/plugins/single_table_inheritance.rb +67 -28
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/split_values.rb +11 -6
- data/lib/sequel/plugins/sql_comments.rb +189 -0
- data/lib/sequel/plugins/static_cache.rb +77 -53
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +43 -10
- data/lib/sequel/plugins/subset_conditions.rb +15 -5
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +96 -12
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/timestamps.rb +20 -8
- data/lib/sequel/plugins/touch.rb +19 -8
- data/lib/sequel/plugins/tree.rb +62 -32
- data/lib/sequel/plugins/typecast_on_load.rb +12 -4
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/unused_associations.rb +521 -0
- data/lib/sequel/plugins/update_or_create.rb +4 -4
- data/lib/sequel/plugins/update_primary_key.rb +1 -1
- data/lib/sequel/plugins/update_refresh.rb +26 -15
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validate_associated.rb +18 -0
- data/lib/sequel/plugins/validation_class_methods.rb +38 -19
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +57 -41
- data/lib/sequel/plugins/whitelist_security.rb +122 -0
- data/lib/sequel/plugins/xml_serializer.rb +30 -31
- data/lib/sequel/sql.rb +471 -331
- data/lib/sequel/timezones.rb +78 -47
- data/lib/sequel/version.rb +7 -2
- data/lib/sequel.rb +1 -1
- metadata +217 -521
- data/Rakefile +0 -164
- data/doc/active_record.rdoc +0 -928
- 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.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.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 -144
- data/lib/sequel/adapters/do/mysql.rb +0 -66
- data/lib/sequel/adapters/do/postgres.rb +0 -44
- data/lib/sequel/adapters/do/sqlite3.rb +0 -42
- data/lib/sequel/adapters/do.rb +0 -158
- data/lib/sequel/adapters/jdbc/as400.rb +0 -84
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -64
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -36
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -33
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -33
- data/lib/sequel/adapters/odbc/progress.rb +0 -10
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -247
- data/lib/sequel/adapters/shared/informix.rb +0 -54
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -152
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift/mysql.rb +0 -49
- data/lib/sequel/adapters/swift/postgres.rb +0 -47
- data/lib/sequel/adapters/swift/sqlite.rb +0 -49
- data/lib/sequel/adapters/swift.rb +0 -160
- data/lib/sequel/adapters/utils/pg_types.rb +0 -70
- data/lib/sequel/dataset/mutation.rb +0 -111
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -5
- data/lib/sequel/extensions/filter_having.rb +0 -63
- data/lib/sequel/extensions/hash_aliases.rb +0 -49
- data/lib/sequel/extensions/meta_def.rb +0 -35
- data/lib/sequel/extensions/query_literals.rb +0 -84
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -24
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -122
- data/lib/sequel/extensions/set_overrides.rb +0 -76
- data/lib/sequel/no_core_ext.rb +0 -3
- data/lib/sequel/plugins/association_autoreloading.rb +0 -9
- data/lib/sequel/plugins/identifier_columns.rb +0 -47
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -9
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -81
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -119
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -61
- data/lib/sequel/plugins/schema.rb +0 -82
- data/lib/sequel/plugins/scissors.rb +0 -35
- data/spec/adapter_spec.rb +0 -4
- 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 -733
- data/spec/adapters/mysql_spec.rb +0 -1319
- data/spec/adapters/oracle_spec.rb +0 -313
- data/spec/adapters/postgres_spec.rb +0 -3790
- data/spec/adapters/spec_helper.rb +0 -49
- data/spec/adapters/sqlanywhere_spec.rb +0 -170
- data/spec/adapters/sqlite_spec.rb +0 -688
- data/spec/bin_spec.rb +0 -258
- data/spec/core/connection_pool_spec.rb +0 -1045
- data/spec/core/database_spec.rb +0 -2636
- data/spec/core/dataset_spec.rb +0 -5175
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1247
- data/spec/core/mock_adapter_spec.rb +0 -464
- 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 -203
- data/spec/core/schema_spec.rb +0 -1676
- 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/core_model_spec.rb +0 -2
- data/spec/core_spec.rb +0 -1
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -85
- 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 -405
- data/spec/extensions/association_proxies_spec.rb +0 -86
- data/spec/extensions/auto_validations_spec.rb +0 -192
- data/spec/extensions/before_after_save_spec.rb +0 -40
- 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/boolean_subsets_spec.rb +0 -47
- data/spec/extensions/caching_spec.rb +0 -270
- data/spec/extensions/class_table_inheritance_spec.rb +0 -444
- 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_expiration_spec.rb +0 -121
- data/spec/extensions/connection_validator_spec.rb +0 -127
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -288
- data/spec/extensions/constraint_validations_spec.rb +0 -389
- data/spec/extensions/core_refinements_spec.rb +0 -519
- data/spec/extensions/csv_serializer_spec.rb +0 -180
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -343
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -167
- data/spec/extensions/defaults_setter_spec.rb +0 -102
- data/spec/extensions/delay_add_association_spec.rb +0 -74
- data/spec/extensions/dirty_spec.rb +0 -180
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -110
- data/spec/extensions/eager_each_spec.rb +0 -66
- 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 -119
- data/spec/extensions/hash_aliases_spec.rb +0 -24
- data/spec/extensions/hook_class_methods_spec.rb +0 -429
- data/spec/extensions/identifier_columns_spec.rb +0 -17
- 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 -304
- data/spec/extensions/lazy_attributes_spec.rb +0 -170
- data/spec/extensions/list_spec.rb +0 -278
- 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 -728
- 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/no_auto_literal_strings_spec.rb +0 -65
- 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 -390
- 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 -275
- 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 -473
- 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 -814
- 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/server_logging_spec.rb +0 -45
- 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_comments_spec.rb +0 -27
- data/spec/extensions/sql_expr_spec.rb +0 -60
- data/spec/extensions/static_cache_spec.rb +0 -361
- data/spec/extensions/string_agg_spec.rb +0 -85
- 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/subset_conditions_spec.rb +0 -38
- data/spec/extensions/table_select_spec.rb +0 -71
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -136
- 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/uuid_spec.rb +0 -106
- 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 -554
- 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/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 -55
- data/spec/integration/associations_test.rb +0 -2506
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1858
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -262
- data/spec/integration/model_test.rb +0 -230
- data/spec/integration/plugin_test.rb +0 -2297
- data/spec/integration/prepared_statement_test.rb +0 -467
- data/spec/integration/schema_test.rb +0 -815
- data/spec/integration/spec_helper.rb +0 -56
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -406
- data/spec/integration/type_test.rb +0 -133
- data/spec/model/association_reflection_spec.rb +0 -565
- data/spec/model/associations_spec.rb +0 -4589
- data/spec/model/base_spec.rb +0 -759
- data/spec/model/class_dataset_methods_spec.rb +0 -150
- data/spec/model/dataset_methods_spec.rb +0 -149
- data/spec/model/eager_loading_spec.rb +0 -2197
- data/spec/model/hooks_spec.rb +0 -604
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -1097
- data/spec/model/plugins_spec.rb +0 -299
- data/spec/model/record_spec.rb +0 -2162
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -193
- data/spec/model_no_assoc_spec.rb +0 -1
- data/spec/model_spec.rb +0 -1
- data/spec/plugin_spec.rb +0 -1
- data/spec/sequel_coverage.rb +0 -15
- data/spec/spec_config.rb +0 -10
data/doc/reflection.rdoc
CHANGED
@@ -6,7 +6,7 @@ Sequel supports reflection information in multiple ways.
|
|
6
6
|
|
7
7
|
You can get the adapter in use using Database#adapter_scheme:
|
8
8
|
|
9
|
-
DB.adapter_scheme #
|
9
|
+
DB.adapter_scheme # :postgres, :jdbc, :odbc
|
10
10
|
|
11
11
|
== Database Connected To
|
12
12
|
|
@@ -97,17 +97,17 @@ You can get an array of association symbols with Model.associations:
|
|
97
97
|
|
98
98
|
Model.associations # [:association1, :association2, ...]
|
99
99
|
|
100
|
-
You can get the association reflection for a single association via the Model.association_reflection. Association reflections are subclasses of hash
|
100
|
+
You can get the association reflection for a single association via the Model.association_reflection. Association reflections are subclasses of hash:
|
101
101
|
|
102
|
-
Model.association_reflection(:association1) #
|
102
|
+
Model.association_reflection(:association1) # #<Sequel::Model::Associations::ManyToOneAssociationReflection Model.many_to_one :association1>
|
103
103
|
|
104
104
|
You can get an array of all association reflections via Model.all_association_reflections:
|
105
105
|
|
106
|
-
Model.all_association_reflections # [
|
106
|
+
Model.all_association_reflections # [#<Sequel::Model::Associations::ManyToOneAssociationReflection Model.many_to_one :association1>, ...]
|
107
107
|
|
108
108
|
Finally, you can get a hash of association reflections via Model.association_reflections:
|
109
109
|
|
110
|
-
Model.association_reflections # {:association1
|
110
|
+
Model.association_reflections # {:association1=>#<Sequel::Model::Associations::ManyToOneAssociationReflection Model.many_to_one :association1>, ...}
|
111
111
|
|
112
112
|
== Validations Defined
|
113
113
|
|
@@ -118,4 +118,3 @@ When using the validation_class_methods plugin, you can use the validation_refle
|
|
118
118
|
Similarly, when using the constraint_validations plugin, you can use the constraint_validation_reflections class method:
|
119
119
|
|
120
120
|
Model.constraint_validation_reflections[:column] # => [[:presence, {}], [:max_length, {:argument=>255, :message=>'is just too long'}]]
|
121
|
-
|
@@ -0,0 +1,159 @@
|
|
1
|
+
= Major Changes
|
2
|
+
|
3
|
+
* Datasets are now frozen by default. Since Sequel's inception,
|
4
|
+
datasets have used a method-chaining API that returned modified
|
5
|
+
copies, but previously they still supported direct mutation. Now,
|
6
|
+
datasets are always frozen and cannot be mutated. This allows many
|
7
|
+
additional default optimizations related to caching, and provides
|
8
|
+
greater thread safety.
|
9
|
+
|
10
|
+
ds = DB[:table]
|
11
|
+
|
12
|
+
# Before
|
13
|
+
ds.row_proc = lambda{|h| h}
|
14
|
+
|
15
|
+
# Now
|
16
|
+
ds = ds.with_row_proc(lambda{|h| h})
|
17
|
+
|
18
|
+
* Symbol splitting to create qualified and/or aliased identifiers is
|
19
|
+
now disabled by default. While symbol splitting allowed for shorter
|
20
|
+
code, it was not obvious and caused significant issues when using
|
21
|
+
column names with embedded double or triple underscores. Sequel now
|
22
|
+
offers many ways to create qualified and/or aliased identifiers.
|
23
|
+
|
24
|
+
# Before
|
25
|
+
:table__column # "table"."column"
|
26
|
+
|
27
|
+
# Now
|
28
|
+
:table__column # "table__column"
|
29
|
+
Sequel[:table][:column] # "table"."column"
|
30
|
+
|
31
|
+
# To get back historical behavior
|
32
|
+
Sequel.split_symbols = true
|
33
|
+
|
34
|
+
* Sequel no longer allows the use of plain ruby strings as SQL code
|
35
|
+
fragments in the dataset filtering methods, as that makes it
|
36
|
+
easier to introduce SQL injection vulnerabilities. You can use
|
37
|
+
Sequel.lit to create literal strings (SQL code fragments), which
|
38
|
+
makes it easier to do security auditing of applications using
|
39
|
+
Sequel.
|
40
|
+
|
41
|
+
# Before
|
42
|
+
DB[:table].where("column = 1").all
|
43
|
+
|
44
|
+
# Now
|
45
|
+
DB[:table].where(Sequel.lit("column = 1")).all
|
46
|
+
# or better
|
47
|
+
DB[:table].where(column: 1).all
|
48
|
+
|
49
|
+
# To get back historical behavior
|
50
|
+
DB.extension :auto_literal_strings
|
51
|
+
|
52
|
+
= Backwards Compatibility
|
53
|
+
|
54
|
+
* All adapters, extensions, plugins, features, and constants
|
55
|
+
deprecated in 4.49.0 have been removed. Before upgrading to Sequel
|
56
|
+
5.0.0, upgrade to 4.49.0 and fix all deprecation warnings.
|
57
|
+
|
58
|
+
* Support for ruby 1.8.7 has been dropped, the minimum ruby version is
|
59
|
+
now 1.9.2.
|
60
|
+
|
61
|
+
* The {before,after,around}_validation hooks are now always called
|
62
|
+
when saving, even if the validate: false option is used. This
|
63
|
+
allows you to use the before_validation hook to make changes
|
64
|
+
to the model instance that are required before validation and
|
65
|
+
before saving even if not validating.
|
66
|
+
|
67
|
+
* Getting column values for newly created model instances after
|
68
|
+
insertion now happens before after_create is called, instead of
|
69
|
+
after.
|
70
|
+
|
71
|
+
* Sequel now immediately attempts to the connect to the database
|
72
|
+
when a Database instance is created, in order to fail fast if the
|
73
|
+
connection parameters are invalid.
|
74
|
+
|
75
|
+
* The validates_unique method in the validation_helpers plugin
|
76
|
+
now only checks for uniqueness by default if the record is new or
|
77
|
+
one of the related columns has been modified by default.
|
78
|
+
|
79
|
+
* Database schema modification methods and schema generator methods
|
80
|
+
now return nil instead of some internal value.
|
81
|
+
|
82
|
+
* Many cases where Sequel used Kernel#send internally have been
|
83
|
+
switched to Kernel#public_send so they only call public methods.
|
84
|
+
|
85
|
+
* Model association hooks are now nil instead of empty arrays by
|
86
|
+
default.
|
87
|
+
|
88
|
+
* Internal uses of instance_eval with a block have been changed to
|
89
|
+
instance_exec. This allows them to be used with lambdas that
|
90
|
+
take no arguments.
|
91
|
+
|
92
|
+
* Most internal constants are now frozen, unless there is a
|
93
|
+
requirement that they be modified at runtime.
|
94
|
+
|
95
|
+
* The Model @was_new instance variable is now no longer set when
|
96
|
+
saving new model instances.
|
97
|
+
|
98
|
+
* The private Sequel::Postgres::PGArray::Parser#new_entry_buffer
|
99
|
+
method in the pg_array extension has been removed.
|
100
|
+
|
101
|
+
* Modifying Model.input_transformer_order in the input_transformer
|
102
|
+
plugin no longer has an effect.
|
103
|
+
|
104
|
+
= New Features
|
105
|
+
|
106
|
+
* Database#add_index :if_not_exists option is now supported on
|
107
|
+
PostgreSQL 9.5+.
|
108
|
+
|
109
|
+
* SQL::Subscript#expression has been added to retrieve the
|
110
|
+
expression that is subscripted.
|
111
|
+
|
112
|
+
= Other Improvements
|
113
|
+
|
114
|
+
* Threaded connection pools no longer block while new connections
|
115
|
+
are being made. Previously, attempting to establish a new
|
116
|
+
connection blocked all connection pool activity until the new
|
117
|
+
connection was made.
|
118
|
+
|
119
|
+
* Many minor performance improvements have been made.
|
120
|
+
|
121
|
+
* The class_table_inheritance plugin now raises an error during
|
122
|
+
Model#update if a query does not modify a single row, just as
|
123
|
+
the default Model#update does.
|
124
|
+
|
125
|
+
* ConnectionPool#size is now thread-safe in both threaded
|
126
|
+
connection pools. Internal callers that already have the
|
127
|
+
connection pool mutex should switch to using #_size (a new
|
128
|
+
private method).
|
129
|
+
|
130
|
+
* Registration of new serialization formats in the serialization
|
131
|
+
plugin is now thread-safe.
|
132
|
+
|
133
|
+
* If transactional schema modifications are not supported, a
|
134
|
+
savepoint will not automatically be created when adding
|
135
|
+
indexes for new tables inside transactions. This fixes issues
|
136
|
+
when making schema changes inside transactions on MySQL.
|
137
|
+
|
138
|
+
* Attempting to create a prepared statement using a dataset that
|
139
|
+
uses a delayed evaluation now raises an error, because the
|
140
|
+
prepared statement would not respect the delayed evaluation.
|
141
|
+
|
142
|
+
* The bin/sequel -M option now uses base 10. Previously, it
|
143
|
+
used the Kernel#Integer default, which was base 8 if there was
|
144
|
+
a preceding 0.
|
145
|
+
|
146
|
+
= Deprecated Features
|
147
|
+
|
148
|
+
These deprecated features will be removed in Sequel 5.1.0.
|
149
|
+
|
150
|
+
* Model.allowed_columns in the base plugin is now deprecated. Use
|
151
|
+
the whitelist_security plugin if you want to call it.
|
152
|
+
|
153
|
+
* Model use_after_commit_rollback class and instance accessors are
|
154
|
+
now deprecated.
|
155
|
+
|
156
|
+
* Defining the Model#_before_validation method is now deprecated.
|
157
|
+
You can change to using before_validation.
|
158
|
+
|
159
|
+
* The private Model.plugin_module_defined? method is now deprecated.
|
@@ -0,0 +1,31 @@
|
|
1
|
+
= Improvements
|
2
|
+
|
3
|
+
* Database#copy_into in the jdbc/postgresql adapter now works
|
4
|
+
correctly when using multibyte characters in strings.
|
5
|
+
|
6
|
+
* The alter_table add_foreign_key method is now reversible when the
|
7
|
+
:foreign_key_constraint_name option is used.
|
8
|
+
|
9
|
+
* The jdbc/h2 and jdbc/hsqldb adapters now respect the
|
10
|
+
:foreign_key_constraint_name option.
|
11
|
+
|
12
|
+
* Calling Model.freeze on an already frozen model no longer raises
|
13
|
+
an error.
|
14
|
+
|
15
|
+
* An unnecessary database query is now avoided when loading the
|
16
|
+
pg_inet extension when the pg_array extension is already loaded.
|
17
|
+
|
18
|
+
* A better exception message is now used when migrating with an
|
19
|
+
empty migration directory.
|
20
|
+
|
21
|
+
= Backwards Compatibility
|
22
|
+
|
23
|
+
* Model.allowed_columns has been removed. Use the whitelist_security
|
24
|
+
plugin if you want to call it.
|
25
|
+
|
26
|
+
* Model use_after_commit_rollback class and instance accessors have
|
27
|
+
been removed.
|
28
|
+
|
29
|
+
* Support for the Model#_before_validation method has been removed.
|
30
|
+
|
31
|
+
* The private Model.plugin_module_defined? method has been removed.
|
@@ -0,0 +1,84 @@
|
|
1
|
+
= New Features
|
2
|
+
|
3
|
+
* Ruby 2.6+ endless ranges are now supported as condition specifier
|
4
|
+
values, using a >= operator for them:
|
5
|
+
|
6
|
+
DB[:t].where(c: 1...)
|
7
|
+
# SELECT * FROM t WHERE (c >= 1)
|
8
|
+
|
9
|
+
* Ruby 2.6+ endless ranges are now supported in the pg_range
|
10
|
+
extension:
|
11
|
+
|
12
|
+
DB[:t].where(id: 1).update(r: 1...)
|
13
|
+
# UPDATE t SET r = '[1,)' WHERE (id = 1)
|
14
|
+
|
15
|
+
* The :include option when creating indexes is now supported on
|
16
|
+
PostgreSQL 11, specifying additional columns to include in the index
|
17
|
+
without indexing them. This is useful to allow index only scans in
|
18
|
+
additional cases.
|
19
|
+
|
20
|
+
* The :tablespace option is now supported when creating tables,
|
21
|
+
indexes, and materialized views on PostgreSQL.
|
22
|
+
|
23
|
+
* The list plugin now supports a :top option, which can be used to
|
24
|
+
specify the top of the list. The default value for the top of the
|
25
|
+
list is 1, but using this option you can make the top of the list be
|
26
|
+
0.
|
27
|
+
|
28
|
+
= Other Improvements
|
29
|
+
|
30
|
+
* In the pg_array_associations plugin, filtering by associations for
|
31
|
+
many_to_pg_array associations now works correctly on PostgreSQL 11.
|
32
|
+
Previously it did not work on PostgreSQL 11 due to new restrictions
|
33
|
+
on using set returning functions in the the SELECT list.
|
34
|
+
|
35
|
+
* When setting the value of a column to the same value the column
|
36
|
+
already has, for a new model object that has not yet been persisted,
|
37
|
+
where the column is used as the foreign key for at least one
|
38
|
+
many_to_one association, do not clear any related associations from
|
39
|
+
the associations cache.
|
40
|
+
|
41
|
+
* In the pg_array extension, if there are separate conversion procs for
|
42
|
+
timetz and time types, the conversion proc for the timetz[] type now
|
43
|
+
correctly uses the conversion proc for the timetz type to convert
|
44
|
+
scalar values, instead of the conversion proc for the time type.
|
45
|
+
|
46
|
+
* Empty arrays and hashes are now correctly handled in
|
47
|
+
Dataset#{first,where_all,where_each,where_single_value} when a
|
48
|
+
cached placeholder literalizer is used.
|
49
|
+
|
50
|
+
* In the tree plugin, Model#{ancestors,descendants,self_and_siblings}
|
51
|
+
now work correctly when custom parent/children association names
|
52
|
+
are used.
|
53
|
+
|
54
|
+
* The inner loop of the postgres adapter row fetching code is now
|
55
|
+
2-3% faster.
|
56
|
+
|
57
|
+
* When using the postgres adapter with pg-0.18+, set a
|
58
|
+
type_map_for_queries for the connection to allow it to handle input
|
59
|
+
type casts for Integer, Float, TrueClass, and FalseClass values
|
60
|
+
without allocating strings.
|
61
|
+
|
62
|
+
* SQLTime.parse (and therefore Sequel.string_to_time) now respects the
|
63
|
+
SQLTime.date and Sequel.application_timezone settings.
|
64
|
+
|
65
|
+
* The jdbc/postgresql adapter now correctly parses timetz types.
|
66
|
+
|
67
|
+
* On JRuby 9.2.0.0, when handling BC timestamps without timezones in
|
68
|
+
the pg_extended_date_support extension, assume local time and not
|
69
|
+
UTC time if the database timezone is not specified and
|
70
|
+
Sequel.datetime_class is Time.
|
71
|
+
|
72
|
+
* Errors indicating that a MySQL database is in read-only mode are
|
73
|
+
now treated as disconnect errors in the mysql and mysql2 adapters,
|
74
|
+
for better behavior in failover scenarios.
|
75
|
+
|
76
|
+
* Sequel::Model datasets now support the use of IN/NOT IN operators
|
77
|
+
where the second argument for the operator (the right hand side) is
|
78
|
+
a set returning function. Previously, the Sequel::Model code
|
79
|
+
assumed the right hand side of an IN/NOT IN operator was a datasets
|
80
|
+
or array, since those are the only values where Sequel will
|
81
|
+
automatically create such an operator.
|
82
|
+
|
83
|
+
* Sequel no longer loads the strscan library in the pg_array extension
|
84
|
+
if it is not necessary because the parser from sequel_pg is used.
|
@@ -0,0 +1,83 @@
|
|
1
|
+
= New Features
|
2
|
+
|
3
|
+
* Sequel now supports more window frame specification types when
|
4
|
+
using window functions. You can now provide the window frame
|
5
|
+
specification as a hash, and Sequel will format the correct
|
6
|
+
SQL. Specifically, this adds support for RANGE and GROUPS,
|
7
|
+
numeric offsets, and EXCLUDE on a database that supports it
|
8
|
+
(e.g. PostgreSQL 11+). Examples:
|
9
|
+
|
10
|
+
DB[:albums].select{function(c1).over(:partition=>c2, :order=>:c3,
|
11
|
+
:frame=>{:type=>:range, :start=>1, :end=>1})}
|
12
|
+
# SELECT function(c1) OVER (PARTITION BY c2 ORDER BY c3
|
13
|
+
# RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING) FROM albums
|
14
|
+
|
15
|
+
DB[:albums].select{function(c1).over(:partition=>c2, :order=>:c3,
|
16
|
+
:frame=>{:type=>:groups, :start=>[2, :preceding], :end=>[1, :preceding]})}
|
17
|
+
# SELECT function(c1) OVER (PARTITION BY c2 ORDER BY c3
|
18
|
+
# GROUPS BETWEEN 2 PRECEDING AND 1 PRECEDING) FROM albums
|
19
|
+
|
20
|
+
DB[:albums].select{function(c1).over(:partition=>c2, :order=>:c3,
|
21
|
+
:frame=>{:type=>:range, :start=>:preceding, :exclude=>:current})}
|
22
|
+
# SELECT function(c1) OVER (PARTITION BY c2 ORDER BY c3
|
23
|
+
# RANGE UNBOUNDED PRECEDING EXCLUDE CURRENT ROW) FROM albums
|
24
|
+
|
25
|
+
* The SQLite 3.24+ ON CONFLICT clause to INSERT is now supported.
|
26
|
+
This support is very similar to the PostgreSQL support for the
|
27
|
+
same feature, also known as UPSERT (UPDATE if the row already
|
28
|
+
exists, INSERT if it does not). This support is different than
|
29
|
+
the previous support for INSERT ON CONFLICT REPLACE (also known as
|
30
|
+
INSERT OR REPLACE), but it uses the same method name in order to
|
31
|
+
be compatible with the PostgreSQL support. The new syntax requires
|
32
|
+
passing a hash to Dataset#insert_conflict. Examples:
|
33
|
+
|
34
|
+
DB[:table].insert_conflict({}).insert(a: 1, b: 2)
|
35
|
+
# INSERT INTO TABLE (a, b) VALUES (1, 2)
|
36
|
+
# ON CONFLICT DO NOTHING
|
37
|
+
|
38
|
+
DB[:table].insert_conflict(target: :a).insert(a: 1, b: 2)
|
39
|
+
# INSERT INTO TABLE (a, b) VALUES (1, 2)
|
40
|
+
# ON CONFLICT (a) DO NOTHING
|
41
|
+
|
42
|
+
DB[:table].insert_conflict(target: :a,
|
43
|
+
conflict_where: {c: true}).insert(a: 1, b: 2)
|
44
|
+
# INSERT INTO TABLE (a, b) VALUES (1, 2)
|
45
|
+
# ON CONFLICT (a) WHERE (c IS TRUE) DO NOTHING
|
46
|
+
|
47
|
+
DB[:table].insert_conflict(target: :a,
|
48
|
+
update: {b: Sequel[:excluded][:b]}).insert(a: 1, b: 2)
|
49
|
+
# INSERT INTO TABLE (a, b) VALUES (1, 2)
|
50
|
+
# ON CONFLICT (a) DO UPDATE SET b = excluded.b
|
51
|
+
|
52
|
+
DB[:table].insert_conflict(target: :a,
|
53
|
+
update: {b: Sequel[:excluded][:b]},
|
54
|
+
update_where: {Sequel[:table][:status_id] => 1}).insert(a: 1, b: 2)
|
55
|
+
# INSERT INTO TABLE (a, b) VALUES (1, 2) ON CONFLICT (a)
|
56
|
+
# DO UPDATE SET b = excluded.b WHERE (table.status_id = 1)
|
57
|
+
|
58
|
+
* Dataset#window for the WINDOW clause has been moved from the
|
59
|
+
PostgreSQL-specific support to core, and has been enabled on
|
60
|
+
MySQL 8+ and SQLAnywhere. This allows you to specify a shared
|
61
|
+
window specification in a query, which can be used by multiple
|
62
|
+
window functions.
|
63
|
+
|
64
|
+
= Other Improvements
|
65
|
+
|
66
|
+
* When using the static_cache plugin, Model.first when called without
|
67
|
+
a block and without arguments or with a single Integer argument now
|
68
|
+
uses the cached values instead of issuing a query.
|
69
|
+
|
70
|
+
* Using set_column_default with a nil value now correctly removes an
|
71
|
+
existing default value on MySQL when the column is NOT NULL.
|
72
|
+
|
73
|
+
* Window function support has been enabled on SQLAnywhere, since it
|
74
|
+
works correctly.
|
75
|
+
|
76
|
+
* Dumping schema for numeric/decimal columns with default values
|
77
|
+
now works correctly. This was broken starting in Sequel 5.9.0
|
78
|
+
due to changes to use BigDecimal() instead of BigDecimal.new().
|
79
|
+
|
80
|
+
* The jdbc/sqlserver adapter now works correctly on JRuby 9.2+.
|
81
|
+
|
82
|
+
* An additional check constraint violation failure message is now
|
83
|
+
recognized on SQLite.
|
@@ -0,0 +1,141 @@
|
|
1
|
+
= New Features
|
2
|
+
|
3
|
+
* An eager_graph_eager plugin has been added, which allows you to
|
4
|
+
chain eager loads using separate queries to an existing dataset that
|
5
|
+
uses eager_graph. Given the following model associations:
|
6
|
+
|
7
|
+
Band.one_to_many :albums
|
8
|
+
Album.one_to_many :tracks
|
9
|
+
|
10
|
+
Let's say you wanted to return bands ordered by album name, and
|
11
|
+
eagerly load those albums, you can do that using:
|
12
|
+
|
13
|
+
Band.eager_graph(:albums).order{albums[:name]}
|
14
|
+
|
15
|
+
Let's say you also wanted to eagerly load the tracks for each album.
|
16
|
+
You could just add them to the eager_graph call:
|
17
|
+
|
18
|
+
Band.eager_graph(albums: :tracks).order{albums[:name]}
|
19
|
+
|
20
|
+
However, the bloats the result set, and you aren't ordering by the
|
21
|
+
track information, so a join is not required. The eager_graph_eager
|
22
|
+
plugin allows you to specify that the tracks be eagerly loaded in a
|
23
|
+
separate query after the eager_graph load of albums:
|
24
|
+
|
25
|
+
Band.eager_graph(:albums).
|
26
|
+
eager_graph_eager([:albums], :tracks).
|
27
|
+
order{albums[:name]}
|
28
|
+
|
29
|
+
eager_graph_eager's first argument is a dependency chain, specified
|
30
|
+
as an array of symbols. This specifies the point at which to
|
31
|
+
perform the eager load. The remaining arguments are arguments that
|
32
|
+
could be passed to Dataset#eager to specify what dependent
|
33
|
+
associations should be loaded at that point.
|
34
|
+
|
35
|
+
* A caller_logging Database extension has been added, which logs
|
36
|
+
caller information before queries, filtering out the internal
|
37
|
+
Sequel callers. Example:
|
38
|
+
|
39
|
+
DB.extension :caller_logging
|
40
|
+
DB[:table].first
|
41
|
+
# Logger:
|
42
|
+
# (0.000041s) (source: /path/to/app/foo/t.rb:12 in `get_first`)
|
43
|
+
# SELECT * FROM table LIMIT 1
|
44
|
+
|
45
|
+
You can further filter the caller lines by setting
|
46
|
+
Database#caller_logging_ignore to a regexp of additional caller
|
47
|
+
lines to ignore. This is useful if you have specific methods or
|
48
|
+
internal extensions/plugins that you would also like to ignore as
|
49
|
+
they obscure the code actually making the request.
|
50
|
+
|
51
|
+
DB.caller_logging_ignore = %r{/path/to/app/lib/plugins}
|
52
|
+
|
53
|
+
You can also format the caller before it is placed in the logger,
|
54
|
+
using caller_logging_formatter:
|
55
|
+
|
56
|
+
DB.caller_logging_formatter = lambda do |caller|
|
57
|
+
"(#{caller.sub(/\A\/path\/to\/app\//, '')})"
|
58
|
+
end
|
59
|
+
DB[:table].first
|
60
|
+
# Logger:
|
61
|
+
# (0.000041s) (foo/t.rb:12 in `get_first`) SELECT * FROM table LIMIT 1
|
62
|
+
|
63
|
+
* Database#call_procedure has been added to the postgres adapter, and
|
64
|
+
is usable on PostgreSQL 11+ for calling procedures created with
|
65
|
+
CREATE PROCEDURE.
|
66
|
+
|
67
|
+
DB.call_procedure(:foo, 1, "bar")
|
68
|
+
# CALL foo(1, 'bar')
|
69
|
+
|
70
|
+
This method will return a hash of results if the procedure returns
|
71
|
+
a result, or nil if it does not return a result.
|
72
|
+
|
73
|
+
= Other Improvements
|
74
|
+
|
75
|
+
* It is now possible to use Dataset#eager_graph in an eager load
|
76
|
+
callback for associations that use join tables. This allows you
|
77
|
+
to eager load some associations using separate queries and other
|
78
|
+
associations using joins. For example:
|
79
|
+
|
80
|
+
Band.eager(:albums=>proc{|ds| ds.eager_graph(:tracks)})
|
81
|
+
|
82
|
+
Will load the bands in one query, and load the albums and tracks
|
83
|
+
in a separate query using a join. Previously, this construction
|
84
|
+
worked only for associations that did not use join tables. It now
|
85
|
+
works for associations that use join tables, as long as existing
|
86
|
+
selected columns are not removed inside the callback.
|
87
|
+
|
88
|
+
* The tactical_eager_loading plugin now handles automatic eager
|
89
|
+
loading for associated objects that were created during the
|
90
|
+
load of dataset that uses eager_graph. When using the plugin,
|
91
|
+
the following code will now only execute 2 queries, instead of
|
92
|
+
issuing a separate query for each album to get the tracks for
|
93
|
+
the album.
|
94
|
+
|
95
|
+
artists = Artist.eager_graph(:albums).all
|
96
|
+
artists.each do |artist|
|
97
|
+
artist.albums.each do |album|
|
98
|
+
album.tracks
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
* Calling Dataset#graph with a dataset with existing selections where
|
103
|
+
the column aliases cannot be determined automatically now works
|
104
|
+
correctly by using a subselect. Previously, attempting to do this
|
105
|
+
would raise an exception. This allows the following code to work:
|
106
|
+
|
107
|
+
DB[:table].select_all(:table).select_append(expr).graph(...)
|
108
|
+
|
109
|
+
* Datasets now cache the EagerGraphLoader object that is generated to
|
110
|
+
convert arrays of hashes into an object graph, so that subsequent
|
111
|
+
eager loads on the same dataset do not need to recompute the same
|
112
|
+
information. Most EagerGraphLoader internal state is now frozen to
|
113
|
+
prevent unintentional modification.
|
114
|
+
|
115
|
+
* Sequel.extension now loads files from gems. Previously, it used
|
116
|
+
Kernel.require, which does not load files from gems.
|
117
|
+
|
118
|
+
* Adapters that emulate prepared statements using literalization now
|
119
|
+
use a placeholder literalizer and should execute significantly
|
120
|
+
faster. More prepared statement internal metadata is now frozen
|
121
|
+
to prevent unintentional modification.
|
122
|
+
|
123
|
+
* Dataset#intersect, #except, and #nowait are now supported on MariaDB
|
124
|
+
10.3+.
|
125
|
+
|
126
|
+
* The constraint_validations extension now respects the
|
127
|
+
constraint_validations_table setting when adding metadata for the
|
128
|
+
constraint validations.
|
129
|
+
|
130
|
+
* In the oracle adapter, the clob prepared statement argument type is
|
131
|
+
now mapped to the OCI8::CLOB class, allowing the use of Oracle
|
132
|
+
procedures with clob output parameters.
|
133
|
+
|
134
|
+
* The Model.load_cache method in the static_cache plugin is now public.
|
135
|
+
|
136
|
+
= Backwards Compatibility
|
137
|
+
|
138
|
+
* The private Dataset#prepared_arg? method has been removed. It is no
|
139
|
+
longer necessary after the refactoring to the prepared statement
|
140
|
+
code. External adapters that currently call the method should be
|
141
|
+
updated to no longer call the method.
|
@@ -0,0 +1,27 @@
|
|
1
|
+
= New Features
|
2
|
+
|
3
|
+
* A constant_sql_override Database extension has been added, allowing
|
4
|
+
for overriding the SQL used by constants such as
|
5
|
+
Sequel::CURRENT_TIMESTAMP. This can be used to force
|
6
|
+
CURRENT_TIMESTAMP to be literalized at a particular time zone:
|
7
|
+
|
8
|
+
DB.extension :constant_sql_override
|
9
|
+
DB.set_constant_sql(Sequel::CURRENT_TIMESTAMP,
|
10
|
+
"CURRENT_TIMESTAMP AT TIME ZONE 'UTC'")
|
11
|
+
|
12
|
+
* Prepared statements now support the :single_value type, which
|
13
|
+
returns the first column value in the dataset.
|
14
|
+
|
15
|
+
prep_stmt = DB[:table].select(:column).prepare(:single_value, :ps)
|
16
|
+
prep_stmt.call
|
17
|
+
# PREPARE ps AS SELECT column FROM table LIMIT 1;
|
18
|
+
# EXECUTE ps;
|
19
|
+
# => 42
|
20
|
+
|
21
|
+
= Other Improvements
|
22
|
+
|
23
|
+
* Dataset#from_self will no longer use a cached dataset if any options
|
24
|
+
are given, as that can result in incorrect behavior.
|
25
|
+
|
26
|
+
* Model.all in the static_cache plugin now accepts a block, mirroring
|
27
|
+
the API when the static_cache plugin is not used.
|
@@ -0,0 +1,63 @@
|
|
1
|
+
= New Features
|
2
|
+
|
3
|
+
* The :nulls option when creating ordered expressions is now supported
|
4
|
+
on all databases that Sequel ships support for. For databases that
|
5
|
+
do not support NULLS FIRST/NULLS LAST, support is emulated.
|
6
|
+
|
7
|
+
ds.order(Sequel.asc(:name, :nulls=>:last))
|
8
|
+
# When emulated:
|
9
|
+
# ORDER BY (CASE WHEN (name IS NULL) THEN 2 ELSE 1 END), name ASC
|
10
|
+
|
11
|
+
* Model#pk_equal? has been added as a more descriptive name for
|
12
|
+
Model#===. Model#=== is now an alias of Model#pk_equal?.
|
13
|
+
|
14
|
+
* The roots and roots_dataset class methods in the tree plugin are now
|
15
|
+
also available as dataset methods.
|
16
|
+
|
17
|
+
= Other Improvements
|
18
|
+
|
19
|
+
* Inverting expressions using the ANY/SOME/ALL SQL operators now works
|
20
|
+
correctly:
|
21
|
+
|
22
|
+
# Sequel <5.14.0
|
23
|
+
Sequel.~(:a=>Sequel.function(:any, :x))
|
24
|
+
# "(a != any(x))"
|
25
|
+
|
26
|
+
# Sequel >=5.14.0
|
27
|
+
Sequel.~(:a=>Sequel.function(:any, :x))
|
28
|
+
# "NOT (a = any(x))"
|
29
|
+
|
30
|
+
Sequel has always tried to push inversion down to create SQL that is
|
31
|
+
easier to reason about. However, inversion cannot be pushed down if
|
32
|
+
an ANY/SOME/ALL SQL operator is used, because that is a different
|
33
|
+
type of operation that just happens to use the same syntax. Sequel
|
34
|
+
now avoids inversion push down for boolean operators where the
|
35
|
+
right hand side is an SQL::Function, LiteralString, or
|
36
|
+
SQL::PlaceholderLiteralString.
|
37
|
+
|
38
|
+
* When creating a boolean expression from a hash or array of pairs, if
|
39
|
+
the right hand side is an unfrozen array and string, use a frozen
|
40
|
+
copy in the expression, so that mutating the array or string
|
41
|
+
argument later does not affect the expression.
|
42
|
+
|
43
|
+
* When using the defaults_setter plugin with the :cache option, do not
|
44
|
+
cache values for columns without parseable defaults. If the default
|
45
|
+
value exists but is not parseable, caching such values could result
|
46
|
+
in incorrect behavior if the model instance is saved later.
|
47
|
+
|
48
|
+
* For models with composite primary keys, Model#=== now returns false
|
49
|
+
if any primary key value is nil, mirroring the behavior for the
|
50
|
+
scalar primary key case.
|
51
|
+
|
52
|
+
* Model datasets no longer cache SQL if they include a subquery that
|
53
|
+
cannot cache SQL.
|
54
|
+
|
55
|
+
* The SQL used for constraints in the constraint_validations
|
56
|
+
extension when the :allow_nil option is used is now clearer and
|
57
|
+
easier to understand.
|
58
|
+
|
59
|
+
* The postgres adapter no longer specifies a default port when using
|
60
|
+
the pg driver, in order to work with configurations where the
|
61
|
+
:service option is used in the :driver_options hash. The pg driver
|
62
|
+
defaults to port 5432 if no port is given, so this should not affect
|
63
|
+
backwards compatibility.
|
@@ -0,0 +1,39 @@
|
|
1
|
+
= New Features
|
2
|
+
|
3
|
+
* A :qualify_tables option has been added to the
|
4
|
+
class_table_inheritance plugin, which will automatically qualify
|
5
|
+
subclass tables with the same qualifier as the superclass table
|
6
|
+
if the superclass table is qualified.
|
7
|
+
|
8
|
+
* Model#save_validation_on_next_save! has been added, which skips all
|
9
|
+
validation on the next save to the object, including the running
|
10
|
+
of validation related hooks. This method is designed for use only
|
11
|
+
when Model#valid? is called on the object before saving, to avoid
|
12
|
+
running validations on the object twice. This method takes
|
13
|
+
precedence even over an explicit validate: true option passed to
|
14
|
+
Model#save, and as such should be used with care.
|
15
|
+
|
16
|
+
* The postgres adapter now supports a :conn_str Database option to
|
17
|
+
use a PostgreSQL connection string (e.g. "host=foo port=2442") when
|
18
|
+
connecting. This option has preference over other connection
|
19
|
+
related options if it is present.
|
20
|
+
|
21
|
+
= Other Improvements
|
22
|
+
|
23
|
+
* If a foreign key for a model object is changed from a nil value to
|
24
|
+
a non-nil value, any cached associated objects related to the
|
25
|
+
foreign key are no longer removed. Such associated objects could
|
26
|
+
only be set manually, and if they have been set manually, it is
|
27
|
+
probably not a good idea to remove them automatically.
|
28
|
+
|
29
|
+
* When using the nested_attributes plugin, new *_to_many associated
|
30
|
+
objects are not validated twice when saving.
|
31
|
+
|
32
|
+
* The default table alias when using the class_table_inheritance
|
33
|
+
plugin now correctly handles qualified tables.
|
34
|
+
|
35
|
+
* A theoretical thread safety issue when assigning connections
|
36
|
+
in the threaded connection pools has been fixed.
|
37
|
+
|
38
|
+
* Renaming columns is now supported without emulation when using
|
39
|
+
SQLite 3.25+.
|