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/release_notes/4.4.0.txt
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* Sequel now supports Sybase SQLAnywhere, via the sqlanywhere and
|
4
|
-
jdbc/sqlanywhere adapters.
|
5
|
-
|
6
|
-
* The filter by associations support now handles cases where the
|
7
|
-
association has :conditions or a block (as long as the block
|
8
|
-
does not rely on instance-specific behavior). This allows
|
9
|
-
you to handle the following:
|
10
|
-
|
11
|
-
Album.many_to_many :popular_tags, :class=>:Tag do |ds|
|
12
|
-
ds.where{tags__popularity > 9000}
|
13
|
-
end
|
14
|
-
Album.where(:popular_tags=>[Tag[1], Tag[2]])
|
15
|
-
|
16
|
-
This will return all albums whose popular_tags would include
|
17
|
-
at least one of those two tags. Previously, the block would
|
18
|
-
be ignored, returning albums containing one those tags even if
|
19
|
-
the tags weren't popular.
|
20
|
-
|
21
|
-
* A table_select plugin has been added that changes the default
|
22
|
-
selection for models from * to table.*. This is useful for
|
23
|
-
people who want ActiveRecord-like behavior instead of SQL-like
|
24
|
-
behavior, where joining tables doesn't automatically include
|
25
|
-
columns in the other table.
|
26
|
-
|
27
|
-
This can fix issues where joining another table that has columns
|
28
|
-
with the same name as columns in the model table without
|
29
|
-
specifying an explicit selection results in model objects being
|
30
|
-
returned where the values in the model object are the values
|
31
|
-
from the joined table instead of the model table.
|
32
|
-
|
33
|
-
* Dataset#offset has been added, for specifying offset separately
|
34
|
-
from limit. Previous this was possible via:
|
35
|
-
|
36
|
-
ds.limit(nil, offset)
|
37
|
-
|
38
|
-
but this is a friendlier API.
|
39
|
-
|
40
|
-
* The jdbc adapter now has support for foreign key parsing. This
|
41
|
-
is used if there is no specific support for the underlying
|
42
|
-
database.
|
43
|
-
|
44
|
-
* Foreign key parsing is now supported on Oracle.
|
45
|
-
|
46
|
-
= Other Improvements
|
47
|
-
|
48
|
-
* Association add_*/remove_*/remove_all_* methods for
|
49
|
-
pg_array_to_many associations now work on unsaved model objects.
|
50
|
-
|
51
|
-
* In the constraint_validations extension, deletes from the
|
52
|
-
metadata table are now processed before inserts, so that dropping
|
53
|
-
an existing constraint and readding a constraint with the same
|
54
|
-
name now works correctly.
|
55
|
-
|
56
|
-
* Cloning an association now copies the :eager_block option
|
57
|
-
correctly from the source association if it was passed as
|
58
|
-
the block to the source association method.
|
59
|
-
|
60
|
-
* Cloning a cloned association now copies the block for the
|
61
|
-
association.
|
62
|
-
|
63
|
-
* The descendants method in the tree plugin no longer modifies an
|
64
|
-
array it is iterating over.
|
65
|
-
|
66
|
-
* The jdbc/postgresql adapter now supports PostgreSQL-specific types,
|
67
|
-
with pretty much the same support as the postgres adapter. When
|
68
|
-
using the pg_* extensions, the dataset will now handle the
|
69
|
-
PostgreSQL types correctly and return instances of the correct
|
70
|
-
Ruby classes (e.g. hstore is returned as Sequel::Postgres::HStore).
|
71
|
-
|
72
|
-
You should no longer need to use the typecast_on_load or
|
73
|
-
pg_typecast_on_load plugins when using model objects that use these
|
74
|
-
types when using the jdbc/postgresql adapter.
|
75
|
-
|
76
|
-
* Offset emulation on Oracle now handles cases where selected
|
77
|
-
columns can't be ordered.
|
78
|
-
|
79
|
-
* Offset emulation on DB2 no longer automatically orders on all
|
80
|
-
columns if the dataset itself is unordered.
|
81
|
-
|
82
|
-
* Types containing spaces are now returning correctly when
|
83
|
-
parsing the schema in the oracle adapter.
|
84
|
-
|
85
|
-
* Database#tables no longer returns tables in the recycle bin on
|
86
|
-
Oracle.
|
87
|
-
|
88
|
-
* add_foreign_key now works correctly on HSQLDB, by splitting the
|
89
|
-
column addition and constraint addition into two separate
|
90
|
-
statements.
|
91
|
-
|
92
|
-
* add_primary_key now works correctly on H2.
|
data/doc/release_notes/4.5.0.txt
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* An mssql_optimistic_locking plugin has been added. This is similar
|
4
|
-
to the regular optimistic_locking plugin, but instead of using an
|
5
|
-
integer lock column, it uses a timestamp/rowversion lock column.
|
6
|
-
|
7
|
-
* Database#create_table with the :temp=>true option on PostgreSQL now
|
8
|
-
supports an :on_commit option. This option can be set to :drop or
|
9
|
-
:delete_rows to either drop or empty the temporary table on
|
10
|
-
transaction commit.
|
11
|
-
|
12
|
-
= Other Improvements
|
13
|
-
|
14
|
-
* Dataset#insert no longer errors on PostgreSQL if the related table
|
15
|
-
is a placeholder literal string.
|
16
|
-
|
17
|
-
* Unique constraints are now copied when emulating alter_table
|
18
|
-
operations on SQLite.
|
19
|
-
|
20
|
-
* Clob column values are no longer returned as SQL::Blob instances
|
21
|
-
by the db2 and ibmdb adapters unless use_clob_as_blob is true.
|
22
|
-
|
23
|
-
* SQL::Blob objects now work correctly as prepared statement
|
24
|
-
arguments in the jdbc/db2 adapter if use_clob_as_blob is false.
|
25
|
-
|
26
|
-
= Backwards Compatibility
|
27
|
-
|
28
|
-
* The Model.primary_key array for models with composite keys is now
|
29
|
-
frozen.
|
30
|
-
|
31
|
-
* On DB2, use_clob_as_blob now defaults to false instead of true.
|
32
|
-
|
33
|
-
* Sequel no longer uses RubyForge. The Sequel website is now located
|
34
|
-
at http://sequel.jeremyevans.net.
|
data/doc/release_notes/4.6.0.txt
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* Database#call_mssql_sproc is now available for calling
|
4
|
-
stored procedures on Microsoft SQL Server, including the use
|
5
|
-
of output parameters.
|
6
|
-
|
7
|
-
* The Database#{commit,rollback}_prepared_transaction methods now
|
8
|
-
support a :server option for the server on which to operate.
|
9
|
-
|
10
|
-
= Other Improvements
|
11
|
-
|
12
|
-
* On Microsoft SQL Server 2012, the native OFFSET/FETCH support
|
13
|
-
is now used for offsets, instead of emulating support via the
|
14
|
-
ROW_NUMBER window function.
|
15
|
-
|
16
|
-
* Eager loading is now skipped when doing eager(...).naked.all on
|
17
|
-
a model dataset, instead of raising an error. This can fix issues
|
18
|
-
when the eager_each plugin is used.
|
19
|
-
|
20
|
-
* A couple additional disconnection errors are now detected in the
|
21
|
-
jdbc/postgresql adapter.
|
22
|
-
|
23
|
-
* The tinytds adapter now handles returning rows when the fields
|
24
|
-
are not immediately available.
|
25
|
-
|
26
|
-
* RuntimeErrors raised by oci8 are now handled correctly in the
|
27
|
-
oracle adapter.
|
28
|
-
|
29
|
-
* Sequel's specs now work with RSpec 3, while still running
|
30
|
-
correctly on RSpec 1.3 and 2.
|
data/doc/release_notes/4.7.0.txt
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* Alternatives for the more complex virtual row method calls have
|
4
|
-
been added:
|
5
|
-
|
6
|
-
# Window Functions using SQL::Function#over
|
7
|
-
# before: select{sum(:over, :args=>:col1, :partition=>:col2){}}
|
8
|
-
select{sum(:col1).over(:partition=>:col2)}
|
9
|
-
|
10
|
-
# count(*) using SQL::Function#*
|
11
|
-
# before: select{count(:*){}}
|
12
|
-
select{count{}.*}
|
13
|
-
|
14
|
-
# count(distinct col) using SQL::Function#distinct
|
15
|
-
# before: select{count(:distinct, :col){}}
|
16
|
-
select{count(:col).distinct}
|
17
|
-
|
18
|
-
Additionally, schema qualified functions are now supported via
|
19
|
-
SQL::QualifiedIdentifier#function, and quoted functions are now
|
20
|
-
supported via SQL::Identifier#function on some databases:
|
21
|
-
|
22
|
-
# "func"("col")
|
23
|
-
select{func.function(:col)}
|
24
|
-
|
25
|
-
# "schema"."func"("col1")
|
26
|
-
select{schema__func.function(:col1)}
|
27
|
-
|
28
|
-
If the database does not support quoting function names, then
|
29
|
-
Sequel will not quote them.
|
30
|
-
|
31
|
-
* An update_or_create plugin has been added, for updating a matching
|
32
|
-
object if one exists, or creating an object if it does not. For
|
33
|
-
example, the following code will update the number of copies sold
|
34
|
-
for album with the name 'Hello', or it will create an album with
|
35
|
-
the name 'Hello' and 1000 number of copies sold:
|
36
|
-
|
37
|
-
Album.plugin :update_or_create
|
38
|
-
Album.update_or_create(:name=>'Hello') do |album|
|
39
|
-
album.num_copies_sold = 1000
|
40
|
-
end
|
41
|
-
|
42
|
-
You can also use a shorter form of this, with two hashes:
|
43
|
-
|
44
|
-
Album.update_or_create({:name=>'Hello'}, {:num_copies_sold=>1000})
|
45
|
-
|
46
|
-
This plugin also adds a method named find_or_new, which does the
|
47
|
-
same thing as update_or_create, except it doesn't persist any
|
48
|
-
changes.
|
49
|
-
|
50
|
-
* A :raise_on_save_failure option has been added for one_to_many,
|
51
|
-
pg_array_to_many, and many_to_pg_array associations. This mirrors
|
52
|
-
the Model.raise_on_save_failure setting, and if set to false, it
|
53
|
-
will make the add/remove methods return nil instead of raising
|
54
|
-
an error if there is a validation/hook error when saving the
|
55
|
-
associated record.
|
56
|
-
|
57
|
-
* The validates_unique validation in validation_helpers now supports a
|
58
|
-
:dataset option to provide the base dataset to use to check
|
59
|
-
uniqueness. This is useful when the model itself uses a filtered
|
60
|
-
dataset, but the unique index in the database is on an unfiltered
|
61
|
-
dataset.
|
62
|
-
|
63
|
-
The auto_validations plugin uses this option to ensure that unique
|
64
|
-
validations are setup correctly in subclasses using single table
|
65
|
-
inheritance.
|
66
|
-
|
67
|
-
= Other Improvements
|
68
|
-
|
69
|
-
* Sequel now automatically rolls back transactions in killed threads
|
70
|
-
on ruby 2.0+. It is still impossible to do so on ruby 1.9.
|
71
|
-
|
72
|
-
* In the instance_hooks plugin, validation instance hooks are now
|
73
|
-
not cleared until after a successful save.
|
74
|
-
|
75
|
-
* Composite unique key constraint violations are now recognized
|
76
|
-
and raised as Sequel::UniqueConstraintViolation on SQLite.
|
77
|
-
|
78
|
-
* Primary key unique constraint violations are now recognized and
|
79
|
-
and raised as Sequel::UniqueConstraintViolation on Microsoft
|
80
|
-
SQL Server and SQLAnywhere.
|
81
|
-
|
82
|
-
* If an exception occurs when using a cursor in the postgres adapter,
|
83
|
-
and an exception also occurs when closing the cursor when cleaning
|
84
|
-
up, the initial exception is now raised.
|
85
|
-
|
86
|
-
* You can now get tables in a specific schema in the jdbc adapter
|
87
|
-
using the :schema option to Database#tables. This was already
|
88
|
-
supported in most jdbc subadapters because they implement #tables
|
89
|
-
using database specific code instead of looking at the JDBC
|
90
|
-
metadata, but it should now work for all jdbc subadapters.
|
91
|
-
|
92
|
-
* Sequel::SQLTime#to_s is now defined and returns a string in
|
93
|
-
HH:MM:SS format (leaving off the date).
|
94
|
-
|
95
|
-
= Backwards Compatibility
|
96
|
-
|
97
|
-
* The odbc adapter's :driver option is no longer deprecated, as reports
|
98
|
-
were received that it still works.
|
99
|
-
|
100
|
-
* If you were re-adding instance validation hooks using instance_hooks
|
101
|
-
after a save failure, and then retrying the save, you may now end up
|
102
|
-
with duplicate validations. You no longer need to re-add validation
|
103
|
-
hooks unless the object was saved successfully.
|
data/doc/release_notes/4.8.0.txt
DELETED
@@ -1,175 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* A one_through_one association type has been added. This is similar
|
4
|
-
to the many_to_many association type in that it uses a join table,
|
5
|
-
but it returns a single record instead of an array of records.
|
6
|
-
This is designed for cases where the foreign key in the join table
|
7
|
-
that references the current table has a unique constraint, or where
|
8
|
-
you want to use an order to just pick the first matching record.
|
9
|
-
|
10
|
-
Similarly, the many_through_many plugin now also offers a
|
11
|
-
one_through_many association.
|
12
|
-
|
13
|
-
* An association_join method has been added to model datasets, for
|
14
|
-
setting up joins based on associations. This basically does the
|
15
|
-
same join that eager_graph would do, but does not make the other
|
16
|
-
changes that eager_graph makes.
|
17
|
-
|
18
|
-
Unlike eager_graph (which uses LEFT OUTER JOINs by default),
|
19
|
-
association_join uses INNER JOINs, but there are also
|
20
|
-
association_*_join methods (e.g. association_left_join) for
|
21
|
-
using different join types.
|
22
|
-
|
23
|
-
Similar to eager_graph, you can use cascading of associations or
|
24
|
-
multiple associations.
|
25
|
-
|
26
|
-
Album.association_join(:artist, :tracks)
|
27
|
-
Artist.association_left_join(:albums=>:tracks)
|
28
|
-
|
29
|
-
* Dataset#eager_graph_with_options has been added for model
|
30
|
-
datasets. It currently supports a :join_type option, for
|
31
|
-
overriding the type of join to use on a per-call basis, as well
|
32
|
-
as a :limit_strategy option. The API is similar to eager_graph,
|
33
|
-
except that the associations to eagerly load are passed in as
|
34
|
-
a single argument, and it takes an options hash.
|
35
|
-
|
36
|
-
The :limit_strategy option works similarly to the
|
37
|
-
:eager_limit_strategy option when eagerly loading. If set to
|
38
|
-
true and the database supports window functions, it will join
|
39
|
-
the current dataset to a subquery that uses a window function
|
40
|
-
to correctly restrict the join to only those objects that fall
|
41
|
-
within the association's limit/offset.
|
42
|
-
|
43
|
-
The :limit_strategy option is not on by default. It is possible
|
44
|
-
for it to perform significantly worse than the default strategy
|
45
|
-
(which uses array slicing in ruby). The :limit_strategy
|
46
|
-
significantly changes the SQL used, and can change the results
|
47
|
-
of the query if any filters/orders related to the association
|
48
|
-
are used.
|
49
|
-
|
50
|
-
It's recommended you only use the :limit_strategy option if you
|
51
|
-
are experiencing a bottleneck and you have benchmarked that it
|
52
|
-
is faster and still produces the desired results.
|
53
|
-
|
54
|
-
Artist.eager_graph_with_options(:first_10_albums,
|
55
|
-
:limit_strategy=>true)
|
56
|
-
# SELECT artists.id, artists.name,
|
57
|
-
# first_10_albums.id AS first_10_albums_id,
|
58
|
-
# first_10_albums.name AS first_10_albums_name,
|
59
|
-
# first_10_albums.artist_id,
|
60
|
-
# first_10_albums.release_date
|
61
|
-
# FROM artists
|
62
|
-
# LEFT OUTER JOIN (
|
63
|
-
# SELECT id, name, artist_id, release_date
|
64
|
-
# FROM (
|
65
|
-
# SELECT *, row_number() OVER (PARTITION BY tracks.album_id)
|
66
|
-
# AS x_sequel_row_number_x
|
67
|
-
# FROM albums
|
68
|
-
# ) AS t1 WHERE (x_sequel_row_number_x <= 10)
|
69
|
-
# ) AS first_10_albums ON (first_10_albums.artist_id = artists.id)
|
70
|
-
|
71
|
-
* Dataset#full_text_search on PostgreSQL now supports :plain and
|
72
|
-
:phrase options. :plain takes the search terms as a single
|
73
|
-
string, and searches for rows where all terms are used.
|
74
|
-
:phrase is similar to :plain, but also adds a substring search
|
75
|
-
to ensure that the string given appears verbatim in the text.
|
76
|
-
|
77
|
-
* A :graph_order association option has been added, for using a
|
78
|
-
different order when using eager_graph. This is mostly
|
79
|
-
designed for cases where :order should be qualified in other
|
80
|
-
cases, but using a qualification breaks eager_graph because the
|
81
|
-
correct qualifier is not known until runtime.
|
82
|
-
|
83
|
-
* SQL::AliasedExpression#alias has been added as an alias for #aliaz.
|
84
|
-
|
85
|
-
= Other Improvements
|
86
|
-
|
87
|
-
* Sequel will now automatically use an eager limit strategy for
|
88
|
-
*_one associations that use an :order option. For associations
|
89
|
-
that are truly one-to-one, an :order option is not needed, so it
|
90
|
-
only makes sense to have an :order option if the association
|
91
|
-
could theoretically return multiple results (in which case an
|
92
|
-
eager limit strategy is helpful).
|
93
|
-
|
94
|
-
* The queries that Sequel uses to filter by associations when
|
95
|
-
those associations have conditions are now simpler and easier
|
96
|
-
for the database to execute.
|
97
|
-
|
98
|
-
* The queries that Sequel uses for dataset associations now handle
|
99
|
-
cases where unqualified identifiers were used in the receiving
|
100
|
-
dataset that would be made ambiguous by a join.
|
101
|
-
|
102
|
-
* A limit strategy is now used when filtering by associations if
|
103
|
-
the association has a limit and the database supports window
|
104
|
-
functions. This allows Sequel to setup a correct filter in
|
105
|
-
such cases.
|
106
|
-
|
107
|
-
Artist.where(:first_10_albums=>Album[1]).all
|
108
|
-
# SELECT *
|
109
|
-
# FROM artists
|
110
|
-
# WHERE (artists.id IN (
|
111
|
-
# SELECT albums.artist_id
|
112
|
-
# FROM albums
|
113
|
-
# WHERE ((albums.artist_id IS NOT NULL) AND (albums.id IN (
|
114
|
-
# SELECT id FROM (
|
115
|
-
# SELECT albums.id, row_number() OVER
|
116
|
-
# (PARTITION BY albums.artist_id ORDER BY release_date)
|
117
|
-
# AS x_sequel_row_number_x
|
118
|
-
# FROM albums
|
119
|
-
# ) AS t1
|
120
|
-
# WHERE (x_sequel_row_number_x <= 10)
|
121
|
-
# )) AND (albums.id = 1))))
|
122
|
-
|
123
|
-
* A limit strategy is now used in the dataset_associations plugin
|
124
|
-
if the association has a limit and the database supports window
|
125
|
-
functions. This makes the resulting datasets return correct
|
126
|
-
results.
|
127
|
-
|
128
|
-
Artist.first_10_albums
|
129
|
-
# SELECT *
|
130
|
-
# FROM albums
|
131
|
-
# WHERE ((albums.artist_id IN (
|
132
|
-
# SELECT artists.id FROM artists)
|
133
|
-
# ) AND (albums.id IN (
|
134
|
-
# SELECT id FROM (
|
135
|
-
# SELECT albums.id, row_number() OVER
|
136
|
-
# (PARTITION BY albums.artist_id ORDER BY release_date)
|
137
|
-
# AS x_sequel_row_number_x
|
138
|
-
# FROM albums
|
139
|
-
# ) AS t1
|
140
|
-
# WHERE (x_sequel_row_number_x <= 10)
|
141
|
-
# )))
|
142
|
-
# ORDER BY release_date
|
143
|
-
|
144
|
-
* You can now pass symbols with embedded qualifiers or aliases,
|
145
|
-
as well as SQL::Identifier, SQL::QualifiedIdentifier, and
|
146
|
-
SQL::AliasedExpression objects as the first argument to
|
147
|
-
Dataset#graph.
|
148
|
-
|
149
|
-
* The nested_attributes plugin now automatically handles presence
|
150
|
-
validations on foreign keys when creating associated objects.
|
151
|
-
It now sets the foreign key value (or a placeholder value)
|
152
|
-
before validating such objects.
|
153
|
-
|
154
|
-
* Offsets on *_one associations are now respected when using
|
155
|
-
eager_graph.
|
156
|
-
|
157
|
-
* eager graphing *_many associations with offsets no longer breaks
|
158
|
-
if there are no associated results.
|
159
|
-
|
160
|
-
* Database#register_array_type in the pg_array extension now works
|
161
|
-
correctly if there is no existing scalar conversion proc for
|
162
|
-
the type.
|
163
|
-
|
164
|
-
* Unique, foreign key, and not null constraint violations are now
|
165
|
-
recognized correctly on SQLite 3.8.2+.
|
166
|
-
|
167
|
-
* The odbc adapter now returns fractional seconds in timestamps.
|
168
|
-
|
169
|
-
* The obdc/mssql adapter now inputs timestamps with 3 decimal
|
170
|
-
places.
|
171
|
-
|
172
|
-
= Backwards Compatibility
|
173
|
-
|
174
|
-
* The private Model.apply_window_function_eager_limit_strategy
|
175
|
-
method has been removed.
|
data/doc/release_notes/4.9.0.txt
DELETED
@@ -1,190 +0,0 @@
|
|
1
|
-
= Performance Enhancements
|
2
|
-
|
3
|
-
* Dataset::PlaceholderLiteralizer has been added as an optimization
|
4
|
-
framework. This allows you to record changes to a given dataset
|
5
|
-
using placeholder arguments, and later quickly execute the query
|
6
|
-
providing values for the placeholders. This is similar in idea
|
7
|
-
to prepared statements, except that the SQL for each query can
|
8
|
-
change depending on the values for the placeholders.
|
9
|
-
|
10
|
-
Using this optimization framework, generating the SQL for query
|
11
|
-
is about 3x faster, and since SQL generation time is a significant
|
12
|
-
portion of total time for simple queries, simple queries can
|
13
|
-
execute up to 50% faster.
|
14
|
-
|
15
|
-
There are two APIs for this optimization framework. There is a
|
16
|
-
lower level dataset API:
|
17
|
-
|
18
|
-
loader = Sequel::Dataset::PlaceholderLiteralizer.
|
19
|
-
loader(DB[:items]) do |pl, ds|
|
20
|
-
ds.where(:id=>pl.arg).exclude(:name=>pl.arg).limit(1)
|
21
|
-
end
|
22
|
-
|
23
|
-
loader.first(1, "foo")
|
24
|
-
# SELECT * FROM items WHERE ((id = 1) AND (name != 'foo')) LIMIT 1
|
25
|
-
|
26
|
-
loader.first([1, 2], %w"foo bar")
|
27
|
-
# SELECT * FROM items WHERE ((id IN (1, 2)) AND
|
28
|
-
# (name NOT IN ('foo', 'bar'))) LIMIT 1
|
29
|
-
|
30
|
-
There is also a higher level model API (Model.finder):
|
31
|
-
|
32
|
-
class Item < Sequel::Model
|
33
|
-
# Given class method that returns a dataset
|
34
|
-
def self.by_id_and_not_name(id, not_name)
|
35
|
-
where(:id=>id).exclude(:name=>not_name)
|
36
|
-
end
|
37
|
-
|
38
|
-
# Create optimized method that returns first value
|
39
|
-
finder :by_id_and_not_name
|
40
|
-
end
|
41
|
-
|
42
|
-
# Call optimized method
|
43
|
-
Album.first_by_id_and_not_name(1, 'foo')
|
44
|
-
# SELECT * FROM items WHERE ((id = 1) AND (name != 'foo')) LIMIT 1
|
45
|
-
|
46
|
-
Model.finder defaults to creating a method that returns the first
|
47
|
-
matching row, but using the :type option you can create methods
|
48
|
-
that call each, all, or get. There is also an option to choose the
|
49
|
-
method name (:name), as well as one to specify the number of
|
50
|
-
arguments to use if the method doesn't take a fixed number
|
51
|
-
(:arity).
|
52
|
-
|
53
|
-
Finally, Model.find, .first, and .first! now automatically use an
|
54
|
-
optimized finder if given a single argument. Model.[] uses an
|
55
|
-
optimized finder if given a single hash, and Model.[], .with_pk,
|
56
|
-
and .with_pk! use an optimized finder if the model has a composite
|
57
|
-
primary key. In all of these cases, these methods are about 50%
|
58
|
-
faster than before.
|
59
|
-
|
60
|
-
* The pure-ruby PostgreSQL array parser that ships with Sequel has
|
61
|
-
been replaced with a strscan-based parser. This parser avoids
|
62
|
-
O(n^2) performance for arrays with multibyte strings, and in general
|
63
|
-
is much faster. Parsing an array with a single string with 100,000
|
64
|
-
multibyte characters is about 1000x faster, and now about half the
|
65
|
-
speed of the C implementation in sequel_pg.
|
66
|
-
|
67
|
-
* Dataset#paged_each now has a :strategy=>:filter option that
|
68
|
-
dramatically improves performance, especially if the columns
|
69
|
-
being ordered by are indexed.
|
70
|
-
|
71
|
-
Unfortunately, there are enough corner cases to this approach
|
72
|
-
that it cannot be used by default. At the least, the dataset
|
73
|
-
needs to be selecting the columns it is ordering by, not aliasing
|
74
|
-
the columns it is ordering by in the SELECT clause, not have
|
75
|
-
NULLs in any of the columns being ordered by, and not itself use
|
76
|
-
a limit or offset.
|
77
|
-
|
78
|
-
If you are ordering by expressions that are not simple column
|
79
|
-
values, you can provide a :filter_value option proc that takes the
|
80
|
-
last retrieved row and array of order by expressions, and returns
|
81
|
-
an array of values in the last retrieved row for those order by
|
82
|
-
expressions.
|
83
|
-
|
84
|
-
* In the postgres adapter, Dataset#paged_each now automatically uses
|
85
|
-
a cursor for improved performance.
|
86
|
-
|
87
|
-
* In the mysql2 adapter, Dataset#paged_each now automatically uses
|
88
|
-
streaming for improved performance, if streaming is supported.
|
89
|
-
|
90
|
-
* Dataset#with_sql_{each,all,first,single_value,insert,update}
|
91
|
-
have been added. These methods take specific SQL and execute
|
92
|
-
it on the database, returning the appropriate value. They
|
93
|
-
are significantly faster than the previous approach of
|
94
|
-
with_sql(SQL).{each,all,first,single_value,insert,update},
|
95
|
-
as they don't require cloning the dataset.
|
96
|
-
|
97
|
-
= New Features
|
98
|
-
|
99
|
-
* Database#create_join_table! and #create_join_table? have been added,
|
100
|
-
for consistency with #create_table! and #create_table?.
|
101
|
-
|
102
|
-
* A :hold option has been added to Dataset#use_cursor in the postgres
|
103
|
-
adapter, which uses WITH HOLD in the query, allowing for usage of
|
104
|
-
the cursor outside the enclosing transaction. When :hold is used,
|
105
|
-
Sequel does not automatically use a transaction around the cursor
|
106
|
-
call.
|
107
|
-
|
108
|
-
* Dataset#where_current_of has been added to the postgres adapter,
|
109
|
-
for updating rows based on a cursor's current position. This can
|
110
|
-
be used to update a large dataset where new values depend on
|
111
|
-
some ruby method, without keeping all rows in memory.
|
112
|
-
|
113
|
-
ds = DB[:huge_table]
|
114
|
-
ds.use_cursor(:rows_per_fetch=>1).each do |row|
|
115
|
-
ds.where_current_of.update(:column=>ruby_method(row))
|
116
|
-
end
|
117
|
-
|
118
|
-
* A current_datetime_timestamp extension has been added, for
|
119
|
-
creating Time/DateTime instances that are literalized as
|
120
|
-
CURRENT_TIMESTAMP. When the dataset uses this extension, models
|
121
|
-
that use the touch and timestamps plugins will use
|
122
|
-
CURRENT_TIMESTAMP for the timestamps.
|
123
|
-
|
124
|
-
* The jdbc adapter now supports a :driver option, useful when
|
125
|
-
Sequel doesn't have direct support for the underlying driver, and
|
126
|
-
where java.sql.DriverManager.getConnection does not work
|
127
|
-
correctly due to Java class loading issues.
|
128
|
-
|
129
|
-
= Other Improvements
|
130
|
-
|
131
|
-
* Multiple corner cases in Dataset#eager_graph have been fixed.
|
132
|
-
|
133
|
-
* Calling Dataset#columns when using the eager_each plugin no
|
134
|
-
longer triggers eager loading.
|
135
|
-
|
136
|
-
* Database#column_schema_to_ruby_default is now a public method
|
137
|
-
in the schema_dumper extension.
|
138
|
-
|
139
|
-
* When validating associated objects for one_to_many and one_to_one
|
140
|
-
associations in the nested_attributes plugin, don't remove column
|
141
|
-
values if the association's foreign key is the associated model's
|
142
|
-
primary key.
|
143
|
-
|
144
|
-
* On PostgreSQL, Dataset#disable_insert_returning has been added
|
145
|
-
back. This disables the automatic use of RETURNING for INSERTs
|
146
|
-
for the dataset. This is necessary in cases where INSERT
|
147
|
-
RETURNING doesn't work, such as PostgreSQL <8.2 (or PostgreSQL
|
148
|
-
variants that forked before 8.2), or when using partitioning
|
149
|
-
with trigger functions, or conditional rules.
|
150
|
-
|
151
|
-
Note that if you use disable_insert_returning, insert will not
|
152
|
-
return the autoincremented primary key. You need to call
|
153
|
-
currval or lastval manually using the same connection to get
|
154
|
-
the value, or use nextval to get the value to use before
|
155
|
-
inserting.
|
156
|
-
|
157
|
-
* The pg_array extension now uses the correct database type when
|
158
|
-
typecasting values for smallint, oid, real, character, and varchar
|
159
|
-
arrays. Previously, Sequel did not use the correct database type
|
160
|
-
in some cases (e.g. text[] for a varchar[]), which resulted in
|
161
|
-
errors if the value was used in a filter expression.
|
162
|
-
|
163
|
-
* Additional unique constraint violations are now recognized on
|
164
|
-
SQLite.
|
165
|
-
|
166
|
-
* Check constraint violations are now recognized on SQLite >=3.8.2.
|
167
|
-
|
168
|
-
* Adapters that emulate bitwise operators now do so using an append
|
169
|
-
only design, similar to how all other queries are built in Sequel.
|
170
|
-
|
171
|
-
= Backwards Compatibility
|
172
|
-
|
173
|
-
* In some cases Sequel no longer adds superfluous parentheses when
|
174
|
-
constructing SQL strings. If you are testing for specific SQL,
|
175
|
-
this can cause test failures.
|
176
|
-
|
177
|
-
* The pg_array extension no longer recognizes the :typecast_method
|
178
|
-
option when registering an array type. The option allowed reuse
|
179
|
-
of an existing typecast method, but as that results in an incorrect
|
180
|
-
type at the database level, the option was fundementally broken.
|
181
|
-
|
182
|
-
* The internals of the PostgreSQL array parser have changed. If you
|
183
|
-
were relying on them, you'll need to update your code.
|
184
|
-
|
185
|
-
* Dataset#complex_expression_arg_pairs private method now returns
|
186
|
-
nested expression objects instead of an already literalized string
|
187
|
-
in some cases. Custom adapters that call this method will probably
|
188
|
-
need to be changed. It's recommended that such adapters switch to
|
189
|
-
using the new Dataset#complex_expression_emulate_append method if
|
190
|
-
possible.
|