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
@@ -51,6 +51,7 @@
|
|
51
51
|
module Sequel
|
52
52
|
module ConnectionValidator
|
53
53
|
class Retry < Error; end
|
54
|
+
Sequel::Deprecation.deprecate_constant(self, :Retry)
|
54
55
|
|
55
56
|
# The number of seconds that need to pass since
|
56
57
|
# connection checkin before attempting to validate
|
@@ -60,7 +61,7 @@ module Sequel
|
|
60
61
|
|
61
62
|
# Initialize the data structures used by this extension.
|
62
63
|
def self.extended(pool)
|
63
|
-
pool.
|
64
|
+
pool.instance_exec do
|
64
65
|
sync do
|
65
66
|
@connection_timestamps ||= {}
|
66
67
|
@connection_validation_timeout ||= 3600
|
@@ -79,7 +80,7 @@ module Sequel
|
|
79
80
|
# Record the time the connection was checked back into the pool.
|
80
81
|
def checkin_connection(*)
|
81
82
|
conn = super
|
82
|
-
@connection_timestamps[conn] =
|
83
|
+
@connection_timestamps[conn] = Sequel.start_timer
|
83
84
|
conn
|
84
85
|
end
|
85
86
|
|
@@ -94,23 +95,23 @@ module Sequel
|
|
94
95
|
# test the connection for validity. If it is not valid,
|
95
96
|
# disconnect the connection, and retry with a new connection.
|
96
97
|
def acquire(*a)
|
97
|
-
|
98
|
+
conn = nil
|
99
|
+
|
100
|
+
1.times do
|
98
101
|
if (conn = super) &&
|
99
|
-
(
|
100
|
-
|
102
|
+
(timer = sync{@connection_timestamps.delete(conn)}) &&
|
103
|
+
Sequel.elapsed_seconds_since(timer) > @connection_validation_timeout &&
|
101
104
|
!db.valid_connection?(conn)
|
102
105
|
|
103
106
|
if pool_type == :sharded_threaded
|
104
|
-
sync{allocated(a.last).delete(
|
107
|
+
sync{allocated(a.last).delete(Sequel.current)}
|
105
108
|
else
|
106
|
-
sync{@allocated.delete(
|
109
|
+
sync{@allocated.delete(Sequel.current)}
|
107
110
|
end
|
108
111
|
|
109
112
|
disconnect_connection(conn)
|
110
|
-
|
113
|
+
redo
|
111
114
|
end
|
112
|
-
rescue Retry
|
113
|
-
retry
|
114
115
|
end
|
115
116
|
|
116
117
|
conn
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen-string-literal: true
|
2
|
+
#
|
3
|
+
# The constant_sql_override extension allows you to change the SQL
|
4
|
+
# generated for Sequel constants.
|
5
|
+
#
|
6
|
+
# One possible use-case for this is to have Sequel::CURRENT_TIMESTAMP use UTC time when
|
7
|
+
# you have Sequel.database_timezone = :utc, but the database uses localtime when
|
8
|
+
# generating CURRENT_TIMESTAMP.
|
9
|
+
#
|
10
|
+
# You can set SQL overrides with Database#set_constant_sql:
|
11
|
+
#
|
12
|
+
# DB.set_constant_sql(Sequel::CURRENT_TIMESTAMP, "CURRENT_TIMESTAMP AT TIME ZONE 'UTC'")
|
13
|
+
#
|
14
|
+
# Now, using Sequel::CURRENT_TIMESTAMP will use your override instead:
|
15
|
+
#
|
16
|
+
# Album.where(released_at: Sequel::CURRENT_TIMESTAMP).sql
|
17
|
+
# # => SELECT "albums.*" FROM "albums" WHERE ("released_at" = CURRENT_TIMESTAMP AT TIME ZONE 'UTC')
|
18
|
+
#
|
19
|
+
# To use this extension, first load it into your Sequel::Database instance:
|
20
|
+
#
|
21
|
+
# DB.extension :constant_sql_override
|
22
|
+
#
|
23
|
+
# Related module: Sequel::ConstantSqlOverride
|
24
|
+
|
25
|
+
#
|
26
|
+
module Sequel
|
27
|
+
module ConstantSqlOverride
|
28
|
+
module DatabaseMethods
|
29
|
+
# Create the initial empty hash of constant sql overrides.
|
30
|
+
def self.extended(db)
|
31
|
+
db.instance_exec do
|
32
|
+
@constant_sqls ||= {}
|
33
|
+
extend_datasets(DatasetMethods)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Hash mapping constant symbols to SQL. For internal use only.
|
38
|
+
attr_reader :constant_sqls # :nodoc:
|
39
|
+
|
40
|
+
# Set the SQL to use for the given Sequel::SQL::Constant
|
41
|
+
def set_constant_sql(constant, override)
|
42
|
+
@constant_sqls[constant.constant] = override
|
43
|
+
end
|
44
|
+
|
45
|
+
# Freeze the constant_sqls hash to prevent adding new overrides.
|
46
|
+
def freeze
|
47
|
+
@constant_sqls.freeze
|
48
|
+
super
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
module DatasetMethods
|
53
|
+
# Use overridden constant SQL
|
54
|
+
def constant_sql_append(sql, constant)
|
55
|
+
if constant_sql = db.constant_sqls[constant]
|
56
|
+
sql << constant_sql
|
57
|
+
else
|
58
|
+
super
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
Database.register_extension(:constant_sql_override, ConstantSqlOverride::DatabaseMethods)
|
65
|
+
end
|
@@ -22,7 +22,7 @@
|
|
22
22
|
# generally want to create it first, before creating any other application
|
23
23
|
# tables.
|
24
24
|
#
|
25
|
-
# Because migrations
|
25
|
+
# Because migrations instance_exec the up and down blocks on a database,
|
26
26
|
# using this extension in a migration can be done via:
|
27
27
|
#
|
28
28
|
# Sequel.migration do
|
@@ -43,7 +43,7 @@
|
|
43
43
|
# similar to the validation_helpers model plugin API. However,
|
44
44
|
# instead of having separate validates_* methods, it just adds a validate
|
45
45
|
# method that accepts a block to the schema generators. Like the
|
46
|
-
# create_table and alter_table blocks, this block is
|
46
|
+
# create_table and alter_table blocks, this block is instance_execed and
|
47
47
|
# offers its own DSL. Example:
|
48
48
|
#
|
49
49
|
# DB.create_table(:table) do
|
@@ -56,8 +56,8 @@
|
|
56
56
|
# end
|
57
57
|
# end
|
58
58
|
#
|
59
|
-
#
|
60
|
-
# already use
|
59
|
+
# instance_exec is used in this case because create_table and alter_table
|
60
|
+
# already use instance_exec, so losing access to the surrounding receiver
|
61
61
|
# is not an issue.
|
62
62
|
#
|
63
63
|
# Here's a breakdown of the constraints created for each constraint validation
|
@@ -130,6 +130,10 @@
|
|
130
130
|
# readd all constraints you want to use inside the alter table block,
|
131
131
|
# making no other changes inside the alter_table block.
|
132
132
|
#
|
133
|
+
# Dropping a table will automatically delete all constraint validations for
|
134
|
+
# that table. However, altering a table (e.g. to drop a column) will not
|
135
|
+
# currently make any changes to the constraint validations metadata.
|
136
|
+
#
|
133
137
|
# Related module: Sequel::ConstraintValidations
|
134
138
|
|
135
139
|
#
|
@@ -196,9 +200,9 @@ module Sequel
|
|
196
200
|
@generator.validation({:type=>:drop, :name=>constraint})
|
197
201
|
end
|
198
202
|
|
199
|
-
# Alias of
|
203
|
+
# Alias of instance_exec for a nicer API.
|
200
204
|
def process(&block)
|
201
|
-
|
205
|
+
instance_exec(&block)
|
202
206
|
end
|
203
207
|
end
|
204
208
|
|
@@ -260,10 +264,20 @@ module Sequel
|
|
260
264
|
super do
|
261
265
|
extend CreateTableGeneratorMethods
|
262
266
|
@validations = []
|
263
|
-
|
267
|
+
instance_exec(&block) if block
|
264
268
|
end
|
265
269
|
end
|
266
270
|
|
271
|
+
# Drop all constraint validations for a table if dropping the table.
|
272
|
+
def drop_table(*names)
|
273
|
+
names.each do |name|
|
274
|
+
if !name.is_a?(Hash) && table_exists?(constraint_validations_table)
|
275
|
+
drop_constraint_validations_for(:table=>name)
|
276
|
+
end
|
277
|
+
end
|
278
|
+
super
|
279
|
+
end
|
280
|
+
|
267
281
|
# Drop the constraint validations table.
|
268
282
|
def drop_constraint_validations_table
|
269
283
|
drop_table(constraint_validations_table)
|
@@ -308,7 +322,7 @@ module Sequel
|
|
308
322
|
super do
|
309
323
|
extend AlterTableGeneratorMethods
|
310
324
|
@validations = []
|
311
|
-
|
325
|
+
instance_exec(&block) if block
|
312
326
|
end
|
313
327
|
end
|
314
328
|
|
@@ -343,9 +357,7 @@ module Sequel
|
|
343
357
|
# This allows the code to handle schema qualified tables,
|
344
358
|
# without quoting all table names.
|
345
359
|
def constraint_validations_literal_table(table)
|
346
|
-
|
347
|
-
ds.quote_identifiers = false
|
348
|
-
ds.literal(table)
|
360
|
+
dataset.with_quote_identifiers(false).literal(table)
|
349
361
|
end
|
350
362
|
|
351
363
|
# Before creating the table, add constraints for all of the
|
@@ -357,6 +369,18 @@ module Sequel
|
|
357
369
|
super
|
358
370
|
end
|
359
371
|
|
372
|
+
def constraint_validation_expression(cols, allow_nil)
|
373
|
+
exprs = cols.map do |c|
|
374
|
+
expr = yield c
|
375
|
+
if allow_nil
|
376
|
+
Sequel.|({c=>nil}, expr)
|
377
|
+
else
|
378
|
+
Sequel.&(Sequel.~(c=>nil), expr)
|
379
|
+
end
|
380
|
+
end
|
381
|
+
Sequel.&(*exprs)
|
382
|
+
end
|
383
|
+
|
360
384
|
# For the given table, generator, and validations, add constraints
|
361
385
|
# to the generator for each of the validations, as well as adding
|
362
386
|
# validation metadata to the constraint validations table.
|
@@ -367,28 +391,44 @@ module Sequel
|
|
367
391
|
|
368
392
|
case validation_type
|
369
393
|
when :presence
|
370
|
-
|
371
|
-
|
394
|
+
strings, non_strings = columns.partition{|c| generator_string_column?(generator, table, c)}
|
395
|
+
if !non_strings.empty? && !allow_nil
|
396
|
+
non_strings_expr = Sequel.&(*non_strings.map{|c| Sequel.~(c=>nil)})
|
397
|
+
end
|
398
|
+
|
399
|
+
unless strings.empty?
|
400
|
+
strings_expr = constraint_validation_expression(strings, allow_nil){|c| Sequel.~(Sequel.trim(c) => blank_string_value)}
|
401
|
+
end
|
402
|
+
|
403
|
+
expr = if non_strings_expr && strings_expr
|
404
|
+
Sequel.&(strings_expr, non_strings_expr)
|
405
|
+
else
|
406
|
+
strings_expr || non_strings_expr
|
407
|
+
end
|
408
|
+
|
409
|
+
if expr
|
410
|
+
generator.constraint(constraint, expr)
|
411
|
+
end
|
372
412
|
when :exact_length
|
373
|
-
|
413
|
+
generator.constraint(constraint, constraint_validation_expression(columns, allow_nil){|c| {Sequel.char_length(c) => arg}})
|
374
414
|
when :min_length
|
375
|
-
|
415
|
+
generator.constraint(constraint, constraint_validation_expression(columns, allow_nil){|c| Sequel.char_length(c) >= arg})
|
376
416
|
when :max_length
|
377
|
-
|
417
|
+
generator.constraint(constraint, constraint_validation_expression(columns, allow_nil){|c| Sequel.char_length(c) <= arg})
|
378
418
|
when *REVERSE_OPERATOR_MAP.keys
|
379
|
-
|
419
|
+
generator.constraint(constraint, constraint_validation_expression(columns, allow_nil){|c| Sequel.identifier(c).public_send(REVERSE_OPERATOR_MAP[validation_type], arg)})
|
380
420
|
when :length_range
|
381
421
|
op = arg.exclude_end? ? :< : :<=
|
382
|
-
|
422
|
+
generator.constraint(constraint, constraint_validation_expression(columns, allow_nil){|c| (Sequel.char_length(c) >= arg.begin) & Sequel.char_length(c).public_send(op, arg.end)})
|
383
423
|
arg = "#{arg.begin}..#{'.' if arg.exclude_end?}#{arg.end}"
|
384
424
|
when :format
|
385
|
-
|
425
|
+
generator.constraint(constraint, constraint_validation_expression(columns, allow_nil){|c| {c => arg}})
|
386
426
|
if arg.casefold?
|
387
427
|
validation_type = :iformat
|
388
428
|
end
|
389
429
|
arg = arg.source
|
390
430
|
when :includes
|
391
|
-
|
431
|
+
generator.constraint(constraint, constraint_validation_expression(columns, allow_nil){|c| {c => arg}})
|
392
432
|
if arg.is_a?(Range)
|
393
433
|
if arg.begin.is_a?(Integer) && arg.end.is_a?(Integer)
|
394
434
|
validation_type = :includes_int_range
|
@@ -409,7 +449,7 @@ module Sequel
|
|
409
449
|
raise Error, "validates includes only supports arrays and ranges currently, cannot handle: #{arg.inspect}"
|
410
450
|
end
|
411
451
|
when :like, :ilike
|
412
|
-
|
452
|
+
generator.constraint(constraint, constraint_validation_expression(columns, allow_nil){|c| Sequel.public_send(validation_type, c, arg)})
|
413
453
|
when :unique
|
414
454
|
generator.unique(columns, :name=>constraint)
|
415
455
|
columns = [columns.join(',')]
|
@@ -433,30 +473,13 @@ module Sequel
|
|
433
473
|
end
|
434
474
|
end
|
435
475
|
|
436
|
-
ds = from(
|
476
|
+
ds = from(constraint_validations_table)
|
437
477
|
unless drop_rows.empty?
|
438
478
|
ds.where([:table, :constraint_name]=>drop_rows).delete
|
439
479
|
end
|
440
480
|
ds.multi_insert(rows.flatten)
|
441
481
|
end
|
442
482
|
|
443
|
-
# Add the constraint to the generator, including a NOT NULL constraint
|
444
|
-
# for all columns unless the :allow_nil option is given.
|
445
|
-
def generator_add_constraint_from_validation(generator, val, cons)
|
446
|
-
if val[:allow_nil]
|
447
|
-
nil_cons = Sequel.expr(val[:columns].map{|c| [c, nil]})
|
448
|
-
cons = Sequel.|(nil_cons, cons) if cons
|
449
|
-
else
|
450
|
-
nil_cons = Sequel.negate(val[:columns].map{|c| [c, nil]})
|
451
|
-
cons = cons ? Sequel.&(nil_cons, cons) : nil_cons
|
452
|
-
end
|
453
|
-
|
454
|
-
if cons
|
455
|
-
generator.constraint(val[:name], cons)
|
456
|
-
end
|
457
|
-
end
|
458
|
-
|
459
|
-
|
460
483
|
# Introspect the generator to determine if column
|
461
484
|
# created is a string or not.
|
462
485
|
def generator_string_column?(generator, table, c)
|
@@ -12,6 +12,8 @@ def Sequel.core_extensions?
|
|
12
12
|
true
|
13
13
|
end
|
14
14
|
|
15
|
+
Sequel.extension :symbol_as
|
16
|
+
|
15
17
|
# Sequel extends +Array+ to add methods to implement the SQL DSL.
|
16
18
|
# Most of these methods require that the array not be empty and that it
|
17
19
|
# must consist solely of other arrays that have exactly two elements.
|
@@ -19,8 +21,8 @@ class Array
|
|
19
21
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, not matching all of the
|
20
22
|
# conditions.
|
21
23
|
#
|
22
|
-
# ~[[:a, true]] # SQL: a IS NOT TRUE
|
23
|
-
# ~[[:a, 1], [:b, [2, 3]]] # SQL: a != 1 OR b NOT IN (2, 3)
|
24
|
+
# ~[[:a, true]] # SQL: (a IS NOT TRUE)
|
25
|
+
# ~[[:a, 1], [:b, [2, 3]]] # SQL: ((a != 1) OR (b NOT IN (2, 3)))
|
24
26
|
def ~
|
25
27
|
Sequel.~(self)
|
26
28
|
end
|
@@ -28,7 +30,7 @@ class Array
|
|
28
30
|
# Return a <tt>Sequel::SQL::CaseExpression</tt> with this array as the conditions and the given
|
29
31
|
# default value and expression.
|
30
32
|
#
|
31
|
-
# [[{:
|
33
|
+
# [[{a: [2,3]}, 1]].case(0) # SQL: CASE WHEN (a IN (2, 3)) THEN 1 ELSE 0 END
|
32
34
|
# [[:a, 1], [:b, 2]].case(:d, :c) # SQL: CASE c WHEN a THEN 1 WHEN b THEN 2 ELSE d END
|
33
35
|
def case(*args)
|
34
36
|
::Sequel::SQL::CaseExpression.new(self, *args)
|
@@ -40,13 +42,12 @@ class Array
|
|
40
42
|
# this array as a value in a filter, but may be necessary if you are using it as a
|
41
43
|
# value with placeholder SQL:
|
42
44
|
#
|
43
|
-
# DB[:a].
|
44
|
-
# DB[:a].
|
45
|
-
# DB[:a].
|
45
|
+
# DB[:a].where([:a, :b]=>[[1, 2], [3, 4]]) # SQL: ((a, b) IN ((1, 2), (3, 4)))
|
46
|
+
# DB[:a].where('(a, b) IN ?', [[1, 2], [3, 4]]) # SQL: ((a, b) IN ((1 = 2) AND (3 = 4)))
|
47
|
+
# DB[:a].where('(a, b) IN ?', [[1, 2], [3, 4]].sql_value_list) # SQL: ((a, b) IN ((1, 2), (3, 4)))
|
46
48
|
def sql_value_list
|
47
49
|
::Sequel::SQL::ValueList.new(self)
|
48
50
|
end
|
49
|
-
alias sql_array sql_value_list
|
50
51
|
|
51
52
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, matching all of the
|
52
53
|
# conditions. Rarely do you need to call this explicitly, as Sequel generally
|
@@ -55,17 +56,17 @@ class Array
|
|
55
56
|
# and want to use the = operator instead of the IN operator (which is used by default for
|
56
57
|
# arrays of two element arrays).
|
57
58
|
#
|
58
|
-
# [[:a, true]].sql_expr # SQL: a IS TRUE
|
59
|
-
# [[:a, 1], [:b, [2, 3]]].sql_expr # SQL: a = 1 AND b IN (2, 3)
|
59
|
+
# [[:a, true]].sql_expr # SQL: (a IS TRUE)
|
60
|
+
# [[:a, 1], [:b, [2, 3]]].sql_expr # SQL: ((a = 1) AND (b IN (2, 3)))
|
60
61
|
def sql_expr
|
61
|
-
Sequel
|
62
|
+
Sequel[self]
|
62
63
|
end
|
63
64
|
|
64
65
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, matching none
|
65
66
|
# of the conditions.
|
66
67
|
#
|
67
|
-
# [[:a, true]].sql_negate # SQL: a IS NOT TRUE
|
68
|
-
# [[:a, 1], [:b, [2, 3]]].sql_negate # SQL: a != 1 AND b NOT IN (2, 3)
|
68
|
+
# [[:a, true]].sql_negate # SQL: (a IS NOT TRUE)
|
69
|
+
# [[:a, 1], [:b, [2, 3]]].sql_negate # SQL: ((a != 1) AND (b NOT IN (2, 3)))
|
69
70
|
def sql_negate
|
70
71
|
Sequel.negate(self)
|
71
72
|
end
|
@@ -73,8 +74,8 @@ class Array
|
|
73
74
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, matching any of the
|
74
75
|
# conditions.
|
75
76
|
#
|
76
|
-
# [[:a, true]].sql_or # SQL: a IS TRUE
|
77
|
-
# [[:a, 1], [:b, [2, 3]]].sql_or # SQL: a = 1 OR b IN (2, 3)
|
77
|
+
# [[:a, true]].sql_or # SQL: (a IS TRUE)
|
78
|
+
# [[:a, 1], [:b, [2, 3]]].sql_or # SQL: ((a = 1) OR (b IN (2, 3)))
|
78
79
|
def sql_or
|
79
80
|
Sequel.or(self)
|
80
81
|
end
|
@@ -85,9 +86,9 @@ class Array
|
|
85
86
|
# concatenation.
|
86
87
|
#
|
87
88
|
# [:a].sql_string_join # SQL: a
|
88
|
-
# [:a, :b].sql_string_join # SQL: a || b
|
89
|
-
# [:a, 'b'].sql_string_join # SQL: a || 'b'
|
90
|
-
# ['a', :b].sql_string_join(' ') # SQL: 'a' || ' ' || b
|
89
|
+
# [:a, :b].sql_string_join # SQL: (a || b)
|
90
|
+
# [:a, 'b'].sql_string_join # SQL: (a || 'b')
|
91
|
+
# ['a', :b].sql_string_join(' ') # SQL: ('a' || ' ' || b)
|
91
92
|
def sql_string_join(joiner=nil)
|
92
93
|
Sequel.join(self, joiner)
|
93
94
|
end
|
@@ -99,8 +100,8 @@ class Hash
|
|
99
100
|
# all of the conditions in this hash and the condition specified by
|
100
101
|
# the given argument.
|
101
102
|
#
|
102
|
-
# {:
|
103
|
-
# {:
|
103
|
+
# {a: 1} & :b # SQL: ((a = 1) AND b)
|
104
|
+
# {a: true} & ~:b # SQL: ((a IS TRUE) AND NOT b)
|
104
105
|
def &(ce)
|
105
106
|
::Sequel::SQL::BooleanExpression.new(:AND, self, ce)
|
106
107
|
end
|
@@ -109,8 +110,8 @@ class Hash
|
|
109
110
|
# all of the conditions in this hash or the condition specified by
|
110
111
|
# the given argument.
|
111
112
|
#
|
112
|
-
# {:
|
113
|
-
# {:
|
113
|
+
# {a: 1} | :b # SQL: ((a = 1) OR b)
|
114
|
+
# {a: true} | ~:b # SQL: ((a IS TRUE) OR NOT b)
|
114
115
|
def |(ce)
|
115
116
|
::Sequel::SQL::BooleanExpression.new(:OR, self, ce)
|
116
117
|
end
|
@@ -118,19 +119,17 @@ class Hash
|
|
118
119
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this hash, not matching all of the
|
119
120
|
# conditions.
|
120
121
|
#
|
121
|
-
# ~{:
|
122
|
-
# ~{:
|
122
|
+
# ~{a: true} # SQL: (a IS NOT TRUE)
|
123
|
+
# ~{a: 1, b: [2, 3]} # SQL: ((a != 1) OR (b NOT IN (2, 3)))
|
123
124
|
def ~
|
124
125
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR, true)
|
125
126
|
end
|
126
127
|
|
127
128
|
# Return a <tt>Sequel::SQL::CaseExpression</tt> with this hash as the conditions and the given
|
128
|
-
# default value.
|
129
|
-
# conditions should be orthogonal.
|
129
|
+
# default value.
|
130
130
|
#
|
131
|
-
# {{:
|
132
|
-
# {:
|
133
|
-
# # or: CASE c WHEN b THEN 2 WHEN a THEN 1 ELSE d END
|
131
|
+
# {{a: [2,3]}=>1}.case(0) # SQL: CASE WHEN (a IN (2, 3)) THEN 1 ELSE 0 END
|
132
|
+
# {a: 1, b: 2}.case(:d, :c) # SQL: CASE c WHEN a THEN 1 WHEN b THEN 2 ELSE d END
|
134
133
|
def case(*args)
|
135
134
|
::Sequel::SQL::CaseExpression.new(to_a, *args)
|
136
135
|
end
|
@@ -139,8 +138,8 @@ class Hash
|
|
139
138
|
# conditions. Rarely do you need to call this explicitly, as Sequel generally
|
140
139
|
# assumes that hashes specify this type of condition.
|
141
140
|
#
|
142
|
-
# {:
|
143
|
-
# {:
|
141
|
+
# {a: true}.sql_expr # SQL: (a IS TRUE)
|
142
|
+
# {a: 1, b: [2, 3]}.sql_expr # SQL: ((a = 1) AND (b IN (2, 3)))
|
144
143
|
def sql_expr
|
145
144
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self)
|
146
145
|
end
|
@@ -148,8 +147,8 @@ class Hash
|
|
148
147
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this hash, matching none
|
149
148
|
# of the conditions.
|
150
149
|
#
|
151
|
-
# {:
|
152
|
-
# {:
|
150
|
+
# {a: true}.sql_negate # SQL: (a IS NOT TRUE)
|
151
|
+
# {a: 1, b: [2, 3]}.sql_negate # SQL: ((a != 1) AND (b NOT IN (2, 3)))
|
153
152
|
def sql_negate
|
154
153
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self, :AND, true)
|
155
154
|
end
|
@@ -157,8 +156,8 @@ class Hash
|
|
157
156
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this hash, matching any of the
|
158
157
|
# conditions.
|
159
158
|
#
|
160
|
-
# {:
|
161
|
-
# {:
|
159
|
+
# {a: true}.sql_or # SQL: (a IS TRUE)
|
160
|
+
# {a: 1, b: [2, 3]}.sql_or # SQL: ((a = 1) OR (b IN (2, 3)))
|
162
161
|
def sql_or
|
163
162
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR)
|
164
163
|
end
|
@@ -172,16 +171,16 @@ class String
|
|
172
171
|
# Converts a string into a <tt>Sequel::LiteralString</tt>, in order to override string
|
173
172
|
# literalization, e.g.:
|
174
173
|
#
|
175
|
-
# DB[:items].
|
176
|
-
#
|
174
|
+
# DB[:items].where(abc: 'def')
|
175
|
+
# # "SELECT * FROM items WHERE (abc = 'def')"
|
177
176
|
#
|
178
|
-
# DB[:items].
|
179
|
-
#
|
177
|
+
# DB[:items].where(abc: 'def'.lit)
|
178
|
+
# # "SELECT * FROM items WHERE (abc = def)"
|
180
179
|
#
|
181
180
|
# You can also provide arguments, to create a <tt>Sequel::SQL::PlaceholderLiteralString</tt>:
|
182
181
|
#
|
183
|
-
#
|
184
|
-
#
|
182
|
+
# DB[:items].select{|o| o.count('DISTINCT ?'.lit(:a))}
|
183
|
+
# # "SELECT count(DISTINCT a) FROM items"
|
185
184
|
def lit(*args)
|
186
185
|
args.empty? ? Sequel::LiteralString.new(self) : Sequel::SQL::PlaceholderLiteralString.new(self, args)
|
187
186
|
end
|
@@ -195,7 +194,6 @@ end
|
|
195
194
|
|
196
195
|
# Sequel extends +Symbol+ to add methods to implement the SQL DSL.
|
197
196
|
class Symbol
|
198
|
-
include Sequel::SQL::AliasMethods
|
199
197
|
include Sequel::SQL::CastMethods
|
200
198
|
include Sequel::SQL::OrderMethods
|
201
199
|
include Sequel::SQL::BooleanMethods
|
@@ -205,19 +203,15 @@ class Symbol
|
|
205
203
|
include Sequel::SQL::SubscriptMethods
|
206
204
|
include Sequel::SQL::ComplexExpressionMethods
|
207
205
|
|
208
|
-
# Returns receiver wrapped in an <tt>Sequel::SQL::Identifier</tt>.
|
209
|
-
# prevent splitting the symbol.
|
206
|
+
# Returns receiver wrapped in an <tt>Sequel::SQL::Identifier</tt>.
|
210
207
|
#
|
211
|
-
# :
|
212
|
-
# :a__b.identifier # SQL: "a__b"
|
208
|
+
# :a.identifier # SQL: "a"
|
213
209
|
def identifier
|
214
210
|
Sequel::SQL::Identifier.new(self)
|
215
211
|
end
|
216
212
|
|
217
213
|
# Returns a <tt>Sequel::SQL::Function</tt> with this as the function name,
|
218
|
-
# and the given arguments.
|
219
|
-
# is less than 1.9.0. Ruby 1.9 defines <tt>Symbol#[]</tt>, and Sequel
|
220
|
-
# doesn't override methods defined by ruby itself.
|
214
|
+
# and the given arguments.
|
221
215
|
#
|
222
216
|
# :now.sql_function # SQL: now()
|
223
217
|
# :sum.sql_function(:a) # SQL: sum(a)
|