sequel 4.26.0 → 5.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG +405 -5656
- data/MIT-LICENSE +1 -1
- data/README.rdoc +232 -157
- data/bin/sequel +32 -9
- data/doc/advanced_associations.rdoc +252 -188
- data/doc/association_basics.rdoc +231 -273
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +75 -48
- data/doc/code_order.rdoc +28 -10
- data/doc/core_extensions.rdoc +104 -63
- data/doc/dataset_basics.rdoc +12 -21
- data/doc/dataset_filtering.rdoc +99 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/mass_assignment.rdoc +74 -31
- data/doc/migration.rdoc +72 -46
- data/doc/model_dataset_method_design.rdoc +129 -0
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +12 -12
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +59 -69
- data/doc/opening_databases.rdoc +84 -94
- data/doc/postgresql.rdoc +268 -38
- data/doc/prepared_statements.rdoc +29 -24
- data/doc/querying.rdoc +184 -164
- data/doc/reflection.rdoc +5 -6
- data/doc/release_notes/5.0.0.txt +159 -0
- data/doc/release_notes/5.1.0.txt +31 -0
- data/doc/release_notes/5.10.0.txt +84 -0
- data/doc/release_notes/5.11.0.txt +83 -0
- data/doc/release_notes/5.12.0.txt +141 -0
- data/doc/release_notes/5.13.0.txt +27 -0
- data/doc/release_notes/5.14.0.txt +63 -0
- data/doc/release_notes/5.15.0.txt +39 -0
- data/doc/release_notes/5.16.0.txt +110 -0
- data/doc/release_notes/5.17.0.txt +31 -0
- data/doc/release_notes/5.18.0.txt +69 -0
- data/doc/release_notes/5.19.0.txt +28 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.20.0.txt +89 -0
- data/doc/release_notes/5.21.0.txt +87 -0
- data/doc/release_notes/5.22.0.txt +48 -0
- data/doc/release_notes/5.23.0.txt +56 -0
- data/doc/release_notes/5.24.0.txt +56 -0
- data/doc/release_notes/5.25.0.txt +32 -0
- data/doc/release_notes/5.26.0.txt +35 -0
- data/doc/release_notes/5.27.0.txt +21 -0
- data/doc/release_notes/5.28.0.txt +16 -0
- data/doc/release_notes/5.29.0.txt +22 -0
- data/doc/release_notes/5.3.0.txt +121 -0
- data/doc/release_notes/5.30.0.txt +20 -0
- data/doc/release_notes/5.31.0.txt +148 -0
- data/doc/release_notes/5.32.0.txt +46 -0
- data/doc/release_notes/5.33.0.txt +24 -0
- data/doc/release_notes/5.34.0.txt +40 -0
- data/doc/release_notes/5.35.0.txt +56 -0
- data/doc/release_notes/5.36.0.txt +60 -0
- data/doc/release_notes/5.37.0.txt +30 -0
- data/doc/release_notes/5.4.0.txt +80 -0
- data/doc/release_notes/5.5.0.txt +61 -0
- data/doc/release_notes/5.6.0.txt +31 -0
- data/doc/release_notes/5.7.0.txt +108 -0
- data/doc/release_notes/5.8.0.txt +170 -0
- data/doc/release_notes/5.9.0.txt +99 -0
- data/doc/schema_modification.rdoc +102 -77
- data/doc/security.rdoc +160 -87
- data/doc/sharding.rdoc +74 -47
- data/doc/sql.rdoc +135 -122
- data/doc/testing.rdoc +34 -18
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +101 -19
- data/doc/validations.rdoc +64 -51
- data/doc/virtual_rows.rdoc +90 -109
- data/lib/sequel.rb +3 -1
- data/lib/sequel/adapters/ado.rb +154 -22
- data/lib/sequel/adapters/ado/access.rb +21 -21
- data/lib/sequel/adapters/ado/mssql.rb +8 -15
- data/lib/sequel/adapters/amalgalite.rb +17 -25
- data/lib/sequel/adapters/ibmdb.rb +52 -58
- data/lib/sequel/adapters/jdbc.rb +149 -127
- data/lib/sequel/adapters/jdbc/db2.rb +32 -40
- data/lib/sequel/adapters/jdbc/derby.rb +56 -58
- data/lib/sequel/adapters/jdbc/h2.rb +40 -30
- data/lib/sequel/adapters/jdbc/hsqldb.rb +22 -33
- data/lib/sequel/adapters/jdbc/jtds.rb +4 -10
- data/lib/sequel/adapters/jdbc/mssql.rb +6 -12
- data/lib/sequel/adapters/jdbc/mysql.rb +17 -18
- data/lib/sequel/adapters/jdbc/oracle.rb +25 -19
- data/lib/sequel/adapters/jdbc/postgresql.rb +90 -69
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +14 -24
- data/lib/sequel/adapters/jdbc/sqlite.rb +50 -12
- data/lib/sequel/adapters/jdbc/sqlserver.rb +36 -9
- data/lib/sequel/adapters/jdbc/transactions.rb +25 -39
- data/lib/sequel/adapters/mock.rb +104 -113
- data/lib/sequel/adapters/mysql.rb +42 -61
- data/lib/sequel/adapters/mysql2.rb +126 -35
- data/lib/sequel/adapters/odbc.rb +21 -28
- data/lib/sequel/adapters/odbc/db2.rb +3 -1
- data/lib/sequel/adapters/odbc/mssql.rb +11 -15
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/oracle.rb +62 -68
- data/lib/sequel/adapters/postgres.rb +257 -311
- data/lib/sequel/adapters/postgresql.rb +3 -1
- data/lib/sequel/adapters/shared/access.rb +75 -79
- data/lib/sequel/adapters/shared/db2.rb +96 -74
- data/lib/sequel/adapters/shared/mssql.rb +258 -213
- data/lib/sequel/adapters/shared/mysql.rb +284 -216
- data/lib/sequel/adapters/shared/oracle.rb +175 -60
- data/lib/sequel/adapters/shared/postgres.rb +829 -383
- data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -127
- data/lib/sequel/adapters/shared/sqlite.rb +382 -159
- data/lib/sequel/adapters/sqlanywhere.rb +53 -38
- data/lib/sequel/adapters/sqlite.rb +111 -105
- data/lib/sequel/adapters/tinytds.rb +38 -46
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +8 -9
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +7 -5
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
- data/lib/sequel/adapters/utils/replace.rb +3 -4
- data/lib/sequel/adapters/utils/split_alter_table.rb +2 -0
- data/lib/sequel/adapters/utils/stored_procedures.rb +9 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
- data/lib/sequel/ast_transformer.rb +13 -89
- data/lib/sequel/connection_pool.rb +54 -26
- data/lib/sequel/connection_pool/sharded_single.rb +19 -12
- data/lib/sequel/connection_pool/sharded_threaded.rb +160 -111
- data/lib/sequel/connection_pool/single.rb +21 -12
- data/lib/sequel/connection_pool/threaded.rb +137 -119
- data/lib/sequel/core.rb +352 -320
- data/lib/sequel/database.rb +19 -2
- data/lib/sequel/database/connecting.rb +70 -55
- data/lib/sequel/database/dataset.rb +15 -5
- data/lib/sequel/database/dataset_defaults.rb +20 -102
- data/lib/sequel/database/features.rb +20 -4
- data/lib/sequel/database/logging.rb +25 -7
- data/lib/sequel/database/misc.rb +132 -118
- data/lib/sequel/database/query.rb +51 -28
- data/lib/sequel/database/schema_generator.rb +188 -75
- data/lib/sequel/database/schema_methods.rb +161 -92
- data/lib/sequel/database/transactions.rb +260 -58
- data/lib/sequel/dataset.rb +28 -12
- data/lib/sequel/dataset/actions.rb +354 -170
- data/lib/sequel/dataset/dataset_module.rb +46 -0
- data/lib/sequel/dataset/features.rb +81 -34
- data/lib/sequel/dataset/graph.rb +82 -58
- data/lib/sequel/dataset/misc.rb +139 -47
- data/lib/sequel/dataset/placeholder_literalizer.rb +66 -26
- data/lib/sequel/dataset/prepared_statements.rb +188 -85
- data/lib/sequel/dataset/query.rb +428 -214
- data/lib/sequel/dataset/sql.rb +446 -339
- data/lib/sequel/deprecated.rb +14 -2
- data/lib/sequel/exceptions.rb +48 -16
- data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
- data/lib/sequel/extensions/_model_pg_row.rb +43 -0
- data/lib/sequel/extensions/_pretty_table.rb +10 -9
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +15 -11
- data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
- data/lib/sequel/extensions/blank.rb +2 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +9 -4
- data/lib/sequel/extensions/connection_expiration.rb +99 -0
- data/lib/sequel/extensions/connection_validator.rb +26 -13
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +93 -38
- data/lib/sequel/extensions/core_extensions.rb +45 -53
- data/lib/sequel/extensions/core_refinements.rb +44 -46
- data/lib/sequel/extensions/current_datetime_timestamp.rb +5 -4
- data/lib/sequel/extensions/dataset_source_alias.rb +4 -0
- data/lib/sequel/extensions/date_arithmetic.rb +42 -16
- data/lib/sequel/extensions/datetime_parse_to_time.rb +37 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +94 -0
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +7 -3
- data/lib/sequel/extensions/error_sql.rb +7 -3
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +14 -15
- data/lib/sequel/extensions/exclude_or_null.rb +68 -0
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/freeze_datasets.rb +3 -0
- data/lib/sequel/extensions/from_block.rb +2 -31
- data/lib/sequel/extensions/graph_each.rb +19 -6
- data/lib/sequel/extensions/identifier_mangling.rb +180 -0
- data/lib/sequel/extensions/implicit_subquery.rb +48 -0
- data/lib/sequel/extensions/index_caching.rb +109 -0
- data/lib/sequel/extensions/inflector.rb +8 -4
- data/lib/sequel/extensions/integer64.rb +32 -0
- data/lib/sequel/extensions/looser_typecasting.rb +19 -9
- data/lib/sequel/extensions/migration.rb +132 -80
- data/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +4 -0
- data/lib/sequel/extensions/named_timezones.rb +88 -23
- data/lib/sequel/extensions/no_auto_literal_strings.rb +4 -0
- data/lib/sequel/extensions/null_dataset.rb +12 -8
- data/lib/sequel/extensions/pagination.rb +35 -28
- data/lib/sequel/extensions/pg_array.rb +227 -316
- data/lib/sequel/extensions/pg_array_ops.rb +19 -7
- data/lib/sequel/extensions/pg_enum.rb +69 -24
- data/lib/sequel/extensions/pg_extended_date_support.rb +250 -0
- data/lib/sequel/extensions/pg_hstore.rb +50 -59
- data/lib/sequel/extensions/pg_hstore_ops.rb +9 -3
- data/lib/sequel/extensions/pg_inet.rb +34 -15
- data/lib/sequel/extensions/pg_inet_ops.rb +5 -1
- data/lib/sequel/extensions/pg_interval.rb +26 -26
- data/lib/sequel/extensions/pg_json.rb +422 -141
- data/lib/sequel/extensions/pg_json_ops.rb +248 -9
- data/lib/sequel/extensions/pg_loose_count.rb +5 -1
- data/lib/sequel/extensions/pg_range.rb +162 -146
- data/lib/sequel/extensions/pg_range_ops.rb +10 -5
- data/lib/sequel/extensions/pg_row.rb +53 -87
- data/lib/sequel/extensions/pg_row_ops.rb +36 -13
- data/lib/sequel/extensions/pg_static_cache_updater.rb +6 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
- data/lib/sequel/extensions/pretty_table.rb +4 -0
- data/lib/sequel/extensions/query.rb +12 -7
- data/lib/sequel/extensions/round_timestamps.rb +6 -9
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +59 -0
- data/lib/sequel/extensions/schema_caching.rb +14 -1
- data/lib/sequel/extensions/schema_dumper.rb +83 -55
- data/lib/sequel/extensions/select_remove.rb +8 -4
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
- data/lib/sequel/extensions/server_block.rb +50 -17
- data/lib/sequel/extensions/server_logging.rb +61 -0
- data/lib/sequel/extensions/split_array_nil.rb +8 -4
- data/lib/sequel/extensions/sql_comments.rb +96 -0
- data/lib/sequel/extensions/sql_expr.rb +4 -1
- data/lib/sequel/extensions/string_agg.rb +181 -0
- data/lib/sequel/extensions/string_date_time.rb +2 -0
- data/lib/sequel/extensions/symbol_aref.rb +53 -0
- data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
- data/lib/sequel/extensions/symbol_as.rb +23 -0
- data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
- data/lib/sequel/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/extensions/thread_local_timezones.rb +4 -0
- data/lib/sequel/extensions/to_dot.rb +15 -5
- data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
- data/lib/sequel/model.rb +36 -126
- data/lib/sequel/model/associations.rb +850 -257
- data/lib/sequel/model/base.rb +652 -764
- data/lib/sequel/model/dataset_module.rb +13 -10
- data/lib/sequel/model/default_inflections.rb +3 -1
- data/lib/sequel/model/errors.rb +3 -3
- data/lib/sequel/model/exceptions.rb +12 -12
- data/lib/sequel/model/inflections.rb +8 -19
- data/lib/sequel/model/plugins.rb +111 -0
- data/lib/sequel/plugins/accessed_columns.rb +2 -0
- data/lib/sequel/plugins/active_model.rb +32 -7
- data/lib/sequel/plugins/after_initialize.rb +3 -1
- data/lib/sequel/plugins/association_dependencies.rb +27 -18
- data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
- data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
- data/lib/sequel/plugins/association_pks.rb +181 -83
- data/lib/sequel/plugins/association_proxies.rb +33 -9
- data/lib/sequel/plugins/auto_validations.rb +58 -23
- data/lib/sequel/plugins/before_after_save.rb +8 -0
- data/lib/sequel/plugins/blacklist_security.rb +23 -12
- data/lib/sequel/plugins/boolean_readers.rb +9 -6
- data/lib/sequel/plugins/boolean_subsets.rb +64 -0
- data/lib/sequel/plugins/caching.rb +27 -16
- data/lib/sequel/plugins/class_table_inheritance.rb +192 -94
- data/lib/sequel/plugins/column_conflicts.rb +18 -3
- data/lib/sequel/plugins/column_select.rb +9 -5
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +36 -24
- data/lib/sequel/plugins/constraint_validations.rb +37 -16
- data/lib/sequel/plugins/csv_serializer.rb +58 -35
- data/lib/sequel/plugins/dataset_associations.rb +60 -18
- data/lib/sequel/plugins/def_dataset_method.rb +90 -0
- data/lib/sequel/plugins/defaults_setter.rb +74 -13
- data/lib/sequel/plugins/delay_add_association.rb +4 -1
- data/lib/sequel/plugins/dirty.rb +65 -24
- data/lib/sequel/plugins/eager_each.rb +27 -3
- data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/error_splitter.rb +19 -12
- data/lib/sequel/plugins/finder.rb +246 -0
- data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
- data/lib/sequel/plugins/force_encoding.rb +9 -12
- data/lib/sequel/plugins/hook_class_methods.rb +39 -54
- data/lib/sequel/plugins/input_transformer.rb +20 -10
- data/lib/sequel/plugins/insert_conflict.rb +72 -0
- data/lib/sequel/plugins/insert_returning_select.rb +4 -2
- data/lib/sequel/plugins/instance_filters.rb +12 -8
- data/lib/sequel/plugins/instance_hooks.rb +36 -17
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +24 -13
- data/lib/sequel/plugins/json_serializer.rb +123 -47
- data/lib/sequel/plugins/lazy_attributes.rb +20 -14
- data/lib/sequel/plugins/list.rb +40 -26
- data/lib/sequel/plugins/many_through_many.rb +28 -12
- data/lib/sequel/plugins/modification_detection.rb +17 -5
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +8 -5
- data/lib/sequel/plugins/nested_attributes.rb +55 -28
- data/lib/sequel/plugins/optimistic_locking.rb +5 -3
- data/lib/sequel/plugins/pg_array_associations.rb +52 -18
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +348 -0
- data/lib/sequel/plugins/pg_row.rb +7 -51
- data/lib/sequel/plugins/prepared_statements.rb +53 -72
- data/lib/sequel/plugins/prepared_statements_safe.rb +13 -5
- data/lib/sequel/plugins/rcte_tree.rb +43 -63
- data/lib/sequel/plugins/serialization.rb +37 -44
- data/lib/sequel/plugins/serialization_modification_detection.rb +3 -1
- data/lib/sequel/plugins/sharding.rb +17 -10
- data/lib/sequel/plugins/single_table_inheritance.rb +62 -28
- data/lib/sequel/plugins/singular_table_names.rb +2 -0
- data/lib/sequel/plugins/skip_create_refresh.rb +5 -3
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/split_values.rb +13 -6
- data/lib/sequel/plugins/static_cache.rb +79 -53
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +5 -3
- data/lib/sequel/plugins/subclasses.rb +20 -2
- data/lib/sequel/plugins/subset_conditions.rb +48 -0
- data/lib/sequel/plugins/table_select.rb +4 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +120 -6
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/timestamps.rb +22 -8
- data/lib/sequel/plugins/touch.rb +21 -8
- data/lib/sequel/plugins/tree.rb +57 -30
- data/lib/sequel/plugins/typecast_on_load.rb +14 -4
- data/lib/sequel/plugins/unlimited_update.rb +3 -7
- data/lib/sequel/plugins/update_or_create.rb +6 -4
- data/lib/sequel/plugins/update_primary_key.rb +3 -1
- data/lib/sequel/plugins/update_refresh.rb +28 -15
- data/lib/sequel/plugins/uuid.rb +70 -0
- data/lib/sequel/plugins/validate_associated.rb +20 -0
- data/lib/sequel/plugins/validation_class_methods.rb +40 -19
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +49 -31
- data/lib/sequel/plugins/whitelist_security.rb +122 -0
- data/lib/sequel/plugins/xml_serializer.rb +31 -30
- data/lib/sequel/sql.rb +479 -329
- data/lib/sequel/timezones.rb +62 -32
- data/lib/sequel/version.rb +10 -3
- metadata +177 -477
- data/Rakefile +0 -165
- data/doc/active_record.rdoc +0 -912
- data/doc/release_notes/1.0.txt +0 -38
- data/doc/release_notes/1.1.txt +0 -143
- data/doc/release_notes/1.3.txt +0 -101
- data/doc/release_notes/1.4.0.txt +0 -53
- data/doc/release_notes/1.5.0.txt +0 -155
- data/doc/release_notes/2.0.0.txt +0 -298
- data/doc/release_notes/2.1.0.txt +0 -271
- data/doc/release_notes/2.10.0.txt +0 -328
- data/doc/release_notes/2.11.0.txt +0 -215
- data/doc/release_notes/2.12.0.txt +0 -534
- data/doc/release_notes/2.2.0.txt +0 -253
- data/doc/release_notes/2.3.0.txt +0 -88
- data/doc/release_notes/2.4.0.txt +0 -106
- data/doc/release_notes/2.5.0.txt +0 -137
- data/doc/release_notes/2.6.0.txt +0 -157
- data/doc/release_notes/2.7.0.txt +0 -166
- data/doc/release_notes/2.8.0.txt +0 -171
- data/doc/release_notes/2.9.0.txt +0 -97
- data/doc/release_notes/3.0.0.txt +0 -221
- data/doc/release_notes/3.1.0.txt +0 -406
- data/doc/release_notes/3.10.0.txt +0 -286
- data/doc/release_notes/3.11.0.txt +0 -254
- data/doc/release_notes/3.12.0.txt +0 -304
- data/doc/release_notes/3.13.0.txt +0 -210
- data/doc/release_notes/3.14.0.txt +0 -118
- data/doc/release_notes/3.15.0.txt +0 -78
- data/doc/release_notes/3.16.0.txt +0 -45
- data/doc/release_notes/3.17.0.txt +0 -58
- data/doc/release_notes/3.18.0.txt +0 -120
- data/doc/release_notes/3.19.0.txt +0 -67
- data/doc/release_notes/3.2.0.txt +0 -268
- data/doc/release_notes/3.20.0.txt +0 -41
- data/doc/release_notes/3.21.0.txt +0 -87
- data/doc/release_notes/3.22.0.txt +0 -39
- data/doc/release_notes/3.23.0.txt +0 -172
- data/doc/release_notes/3.24.0.txt +0 -420
- data/doc/release_notes/3.25.0.txt +0 -88
- data/doc/release_notes/3.26.0.txt +0 -88
- data/doc/release_notes/3.27.0.txt +0 -82
- data/doc/release_notes/3.28.0.txt +0 -304
- data/doc/release_notes/3.29.0.txt +0 -459
- data/doc/release_notes/3.3.0.txt +0 -192
- data/doc/release_notes/3.30.0.txt +0 -135
- data/doc/release_notes/3.31.0.txt +0 -146
- data/doc/release_notes/3.32.0.txt +0 -202
- data/doc/release_notes/3.33.0.txt +0 -157
- data/doc/release_notes/3.34.0.txt +0 -671
- data/doc/release_notes/3.35.0.txt +0 -144
- data/doc/release_notes/3.36.0.txt +0 -245
- data/doc/release_notes/3.37.0.txt +0 -338
- data/doc/release_notes/3.38.0.txt +0 -234
- data/doc/release_notes/3.39.0.txt +0 -237
- data/doc/release_notes/3.4.0.txt +0 -325
- data/doc/release_notes/3.40.0.txt +0 -73
- data/doc/release_notes/3.41.0.txt +0 -155
- data/doc/release_notes/3.42.0.txt +0 -74
- data/doc/release_notes/3.43.0.txt +0 -105
- data/doc/release_notes/3.44.0.txt +0 -152
- data/doc/release_notes/3.45.0.txt +0 -179
- data/doc/release_notes/3.46.0.txt +0 -122
- data/doc/release_notes/3.47.0.txt +0 -270
- data/doc/release_notes/3.48.0.txt +0 -477
- data/doc/release_notes/3.5.0.txt +0 -510
- data/doc/release_notes/3.6.0.txt +0 -366
- data/doc/release_notes/3.7.0.txt +0 -179
- data/doc/release_notes/3.8.0.txt +0 -151
- data/doc/release_notes/3.9.0.txt +0 -233
- data/doc/release_notes/4.0.0.txt +0 -262
- data/doc/release_notes/4.1.0.txt +0 -85
- data/doc/release_notes/4.10.0.txt +0 -226
- data/doc/release_notes/4.11.0.txt +0 -147
- data/doc/release_notes/4.12.0.txt +0 -105
- data/doc/release_notes/4.13.0.txt +0 -169
- data/doc/release_notes/4.14.0.txt +0 -68
- data/doc/release_notes/4.15.0.txt +0 -56
- data/doc/release_notes/4.16.0.txt +0 -36
- data/doc/release_notes/4.17.0.txt +0 -38
- data/doc/release_notes/4.18.0.txt +0 -36
- data/doc/release_notes/4.19.0.txt +0 -45
- data/doc/release_notes/4.2.0.txt +0 -129
- data/doc/release_notes/4.20.0.txt +0 -79
- data/doc/release_notes/4.21.0.txt +0 -94
- data/doc/release_notes/4.22.0.txt +0 -72
- data/doc/release_notes/4.23.0.txt +0 -65
- data/doc/release_notes/4.24.0.txt +0 -99
- data/doc/release_notes/4.25.0.txt +0 -181
- data/doc/release_notes/4.26.0.txt +0 -44
- data/doc/release_notes/4.3.0.txt +0 -40
- data/doc/release_notes/4.4.0.txt +0 -92
- data/doc/release_notes/4.5.0.txt +0 -34
- data/doc/release_notes/4.6.0.txt +0 -30
- data/doc/release_notes/4.7.0.txt +0 -103
- data/doc/release_notes/4.8.0.txt +0 -175
- data/doc/release_notes/4.9.0.txt +0 -190
- data/lib/sequel/adapters/cubrid.rb +0 -142
- data/lib/sequel/adapters/do.rb +0 -156
- data/lib/sequel/adapters/do/mysql.rb +0 -64
- data/lib/sequel/adapters/do/postgres.rb +0 -42
- data/lib/sequel/adapters/do/sqlite3.rb +0 -40
- data/lib/sequel/adapters/jdbc/as400.rb +0 -82
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -62
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -34
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -31
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -31
- data/lib/sequel/adapters/odbc/progress.rb +0 -8
- data/lib/sequel/adapters/shared/cubrid.rb +0 -243
- data/lib/sequel/adapters/shared/firebird.rb +0 -245
- data/lib/sequel/adapters/shared/informix.rb +0 -52
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -150
- data/lib/sequel/adapters/shared/progress.rb +0 -38
- data/lib/sequel/adapters/swift.rb +0 -158
- data/lib/sequel/adapters/swift/mysql.rb +0 -47
- data/lib/sequel/adapters/swift/postgres.rb +0 -45
- data/lib/sequel/adapters/swift/sqlite.rb +0 -47
- data/lib/sequel/adapters/utils/pg_types.rb +0 -68
- data/lib/sequel/dataset/mutation.rb +0 -109
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -3
- data/lib/sequel/extensions/filter_having.rb +0 -59
- data/lib/sequel/extensions/hash_aliases.rb +0 -45
- data/lib/sequel/extensions/meta_def.rb +0 -31
- data/lib/sequel/extensions/query_literals.rb +0 -80
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -22
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -118
- data/lib/sequel/extensions/set_overrides.rb +0 -72
- data/lib/sequel/no_core_ext.rb +0 -1
- data/lib/sequel/plugins/association_autoreloading.rb +0 -7
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -7
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -78
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -117
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -59
- data/lib/sequel/plugins/schema.rb +0 -80
- data/lib/sequel/plugins/scissors.rb +0 -33
- data/spec/adapters/db2_spec.rb +0 -160
- data/spec/adapters/firebird_spec.rb +0 -411
- data/spec/adapters/informix_spec.rb +0 -100
- data/spec/adapters/mssql_spec.rb +0 -706
- data/spec/adapters/mysql_spec.rb +0 -1287
- data/spec/adapters/oracle_spec.rb +0 -313
- data/spec/adapters/postgres_spec.rb +0 -3725
- data/spec/adapters/spec_helper.rb +0 -43
- data/spec/adapters/sqlanywhere_spec.rb +0 -170
- data/spec/adapters/sqlite_spec.rb +0 -653
- data/spec/bin_spec.rb +0 -254
- data/spec/core/connection_pool_spec.rb +0 -1016
- data/spec/core/database_spec.rb +0 -2531
- data/spec/core/dataset_spec.rb +0 -5098
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1243
- data/spec/core/mock_adapter_spec.rb +0 -462
- data/spec/core/object_graph_spec.rb +0 -303
- data/spec/core/placeholder_literalizer_spec.rb +0 -163
- data/spec/core/schema_generator_spec.rb +0 -179
- data/spec/core/schema_spec.rb +0 -1659
- data/spec/core/spec_helper.rb +0 -34
- data/spec/core/version_spec.rb +0 -7
- data/spec/core_extensions_spec.rb +0 -699
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -123
- data/spec/extensions/after_initialize_spec.rb +0 -24
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -117
- data/spec/extensions/association_pks_spec.rb +0 -365
- data/spec/extensions/association_proxies_spec.rb +0 -86
- data/spec/extensions/auto_validations_spec.rb +0 -192
- data/spec/extensions/blacklist_security_spec.rb +0 -88
- data/spec/extensions/blank_spec.rb +0 -69
- data/spec/extensions/boolean_readers_spec.rb +0 -93
- data/spec/extensions/caching_spec.rb +0 -270
- data/spec/extensions/class_table_inheritance_spec.rb +0 -420
- data/spec/extensions/column_conflicts_spec.rb +0 -60
- data/spec/extensions/column_select_spec.rb +0 -108
- data/spec/extensions/columns_introspection_spec.rb +0 -91
- data/spec/extensions/composition_spec.rb +0 -242
- data/spec/extensions/connection_validator_spec.rb +0 -120
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -274
- data/spec/extensions/constraint_validations_spec.rb +0 -325
- data/spec/extensions/core_refinements_spec.rb +0 -519
- data/spec/extensions/csv_serializer_spec.rb +0 -173
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -311
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -150
- data/spec/extensions/defaults_setter_spec.rb +0 -101
- data/spec/extensions/delay_add_association_spec.rb +0 -52
- data/spec/extensions/dirty_spec.rb +0 -180
- data/spec/extensions/eager_each_spec.rb +0 -42
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/eval_inspect_spec.rb +0 -73
- data/spec/extensions/filter_having_spec.rb +0 -40
- data/spec/extensions/force_encoding_spec.rb +0 -114
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/graph_each_spec.rb +0 -109
- data/spec/extensions/hash_aliases_spec.rb +0 -24
- data/spec/extensions/hook_class_methods_spec.rb +0 -429
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -54
- data/spec/extensions/insert_returning_select_spec.rb +0 -46
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -276
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -291
- data/spec/extensions/lazy_attributes_spec.rb +0 -170
- data/spec/extensions/list_spec.rb +0 -267
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2172
- data/spec/extensions/meta_def_spec.rb +0 -21
- data/spec/extensions/migration_spec.rb +0 -712
- data/spec/extensions/modification_detection_spec.rb +0 -80
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
- data/spec/extensions/named_timezones_spec.rb +0 -108
- data/spec/extensions/nested_attributes_spec.rb +0 -697
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -128
- data/spec/extensions/pagination_spec.rb +0 -118
- data/spec/extensions/pg_array_associations_spec.rb +0 -736
- data/spec/extensions/pg_array_ops_spec.rb +0 -143
- data/spec/extensions/pg_array_spec.rb +0 -395
- data/spec/extensions/pg_enum_spec.rb +0 -92
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
- data/spec/extensions/pg_hstore_spec.rb +0 -206
- data/spec/extensions/pg_inet_ops_spec.rb +0 -101
- data/spec/extensions/pg_inet_spec.rb +0 -52
- data/spec/extensions/pg_interval_spec.rb +0 -76
- data/spec/extensions/pg_json_ops_spec.rb +0 -229
- data/spec/extensions/pg_json_spec.rb +0 -218
- data/spec/extensions/pg_loose_count_spec.rb +0 -17
- data/spec/extensions/pg_range_ops_spec.rb +0 -58
- data/spec/extensions/pg_range_spec.rb +0 -404
- data/spec/extensions/pg_row_ops_spec.rb +0 -60
- data/spec/extensions/pg_row_plugin_spec.rb +0 -62
- data/spec/extensions/pg_row_spec.rb +0 -360
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
- data/spec/extensions/prepared_statements_spec.rb +0 -103
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
- data/spec/extensions/pretty_table_spec.rb +0 -92
- data/spec/extensions/query_literals_spec.rb +0 -183
- data/spec/extensions/query_spec.rb +0 -102
- data/spec/extensions/rcte_tree_spec.rb +0 -392
- data/spec/extensions/round_timestamps_spec.rb +0 -43
- data/spec/extensions/schema_caching_spec.rb +0 -41
- data/spec/extensions/schema_dumper_spec.rb +0 -789
- data/spec/extensions/schema_spec.rb +0 -117
- data/spec/extensions/scissors_spec.rb +0 -26
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -362
- data/spec/extensions/server_block_spec.rb +0 -90
- data/spec/extensions/set_overrides_spec.rb +0 -61
- data/spec/extensions/sharding_spec.rb +0 -198
- data/spec/extensions/shared_caching_spec.rb +0 -175
- data/spec/extensions/single_table_inheritance_spec.rb +0 -297
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -17
- data/spec/extensions/spec_helper.rb +0 -71
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -22
- data/spec/extensions/sql_expr_spec.rb +0 -60
- data/spec/extensions/static_cache_spec.rb +0 -361
- data/spec/extensions/string_date_time_spec.rb +0 -95
- data/spec/extensions/string_stripper_spec.rb +0 -68
- data/spec/extensions/subclasses_spec.rb +0 -66
- data/spec/extensions/table_select_spec.rb +0 -71
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -82
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/timestamps_spec.rb +0 -175
- data/spec/extensions/to_dot_spec.rb +0 -154
- data/spec/extensions/touch_spec.rb +0 -203
- data/spec/extensions/tree_spec.rb +0 -274
- data/spec/extensions/typecast_on_load_spec.rb +0 -80
- data/spec/extensions/unlimited_update_spec.rb +0 -20
- data/spec/extensions/update_or_create_spec.rb +0 -87
- data/spec/extensions/update_primary_key_spec.rb +0 -100
- data/spec/extensions/update_refresh_spec.rb +0 -53
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1027
- data/spec/extensions/validation_helpers_spec.rb +0 -541
- data/spec/extensions/xml_serializer_spec.rb +0 -207
- data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
- data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
- data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
- data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
- data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
- data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
- data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
- data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
- data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
- data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/reversible_migrations/001_reversible.rb +0 -5
- data/spec/files/reversible_migrations/002_reversible.rb +0 -5
- data/spec/files/reversible_migrations/003_reversible.rb +0 -5
- data/spec/files/reversible_migrations/004_reversible.rb +0 -5
- data/spec/files/reversible_migrations/005_reversible.rb +0 -10
- data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
- data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
- data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
- data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
- data/spec/guards_helper.rb +0 -55
- data/spec/integration/associations_test.rb +0 -2454
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1808
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -240
- data/spec/integration/model_test.rb +0 -226
- data/spec/integration/plugin_test.rb +0 -2240
- data/spec/integration/prepared_statement_test.rb +0 -467
- data/spec/integration/schema_test.rb +0 -817
- data/spec/integration/spec_helper.rb +0 -48
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -374
- data/spec/integration/type_test.rb +0 -133
- data/spec/model/association_reflection_spec.rb +0 -525
- data/spec/model/associations_spec.rb +0 -4426
- data/spec/model/base_spec.rb +0 -759
- data/spec/model/class_dataset_methods_spec.rb +0 -146
- data/spec/model/dataset_methods_spec.rb +0 -149
- data/spec/model/eager_loading_spec.rb +0 -2137
- data/spec/model/hooks_spec.rb +0 -604
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -982
- data/spec/model/plugins_spec.rb +0 -299
- data/spec/model/record_spec.rb +0 -2147
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -193
- data/spec/sequel_coverage.rb +0 -15
- data/spec/spec_config.rb +0 -10
|
@@ -1,11 +1,9 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
1
3
|
# These are extensions to core classes that Sequel enables by default.
|
|
2
4
|
# They make using Sequel's DSL easier by adding methods to Array,
|
|
3
5
|
# Hash, String, and Symbol to add methods that return Sequel
|
|
4
|
-
# expression objects.
|
|
5
|
-
#
|
|
6
|
-
# This extension is currently loaded by default, but that will no
|
|
7
|
-
# longer be true in Sequel 4. Starting in Sequel 4, you will
|
|
8
|
-
# need to load it manually via:
|
|
6
|
+
# expression objects. To load the extension:
|
|
9
7
|
#
|
|
10
8
|
# Sequel.extension :core_extensions
|
|
11
9
|
|
|
@@ -14,6 +12,8 @@ def Sequel.core_extensions?
|
|
|
14
12
|
true
|
|
15
13
|
end
|
|
16
14
|
|
|
15
|
+
Sequel.extension :symbol_as
|
|
16
|
+
|
|
17
17
|
# Sequel extends +Array+ to add methods to implement the SQL DSL.
|
|
18
18
|
# Most of these methods require that the array not be empty and that it
|
|
19
19
|
# must consist solely of other arrays that have exactly two elements.
|
|
@@ -21,8 +21,8 @@ class Array
|
|
|
21
21
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, not matching all of the
|
|
22
22
|
# conditions.
|
|
23
23
|
#
|
|
24
|
-
# ~[[:a, true]] # SQL: a IS NOT TRUE
|
|
25
|
-
# ~[[: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)))
|
|
26
26
|
def ~
|
|
27
27
|
Sequel.~(self)
|
|
28
28
|
end
|
|
@@ -30,7 +30,7 @@ class Array
|
|
|
30
30
|
# Return a <tt>Sequel::SQL::CaseExpression</tt> with this array as the conditions and the given
|
|
31
31
|
# default value and expression.
|
|
32
32
|
#
|
|
33
|
-
# [[{:
|
|
33
|
+
# [[{a: [2,3]}, 1]].case(0) # SQL: CASE WHEN (a IN (2, 3)) THEN 1 ELSE 0 END
|
|
34
34
|
# [[:a, 1], [:b, 2]].case(:d, :c) # SQL: CASE c WHEN a THEN 1 WHEN b THEN 2 ELSE d END
|
|
35
35
|
def case(*args)
|
|
36
36
|
::Sequel::SQL::CaseExpression.new(self, *args)
|
|
@@ -42,13 +42,12 @@ class Array
|
|
|
42
42
|
# this array as a value in a filter, but may be necessary if you are using it as a
|
|
43
43
|
# value with placeholder SQL:
|
|
44
44
|
#
|
|
45
|
-
# DB[:a].
|
|
46
|
-
# DB[:a].
|
|
47
|
-
# 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)))
|
|
48
48
|
def sql_value_list
|
|
49
49
|
::Sequel::SQL::ValueList.new(self)
|
|
50
50
|
end
|
|
51
|
-
alias sql_array sql_value_list
|
|
52
51
|
|
|
53
52
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, matching all of the
|
|
54
53
|
# conditions. Rarely do you need to call this explicitly, as Sequel generally
|
|
@@ -57,17 +56,17 @@ class Array
|
|
|
57
56
|
# and want to use the = operator instead of the IN operator (which is used by default for
|
|
58
57
|
# arrays of two element arrays).
|
|
59
58
|
#
|
|
60
|
-
# [[:a, true]].sql_expr # SQL: a IS TRUE
|
|
61
|
-
# [[: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)))
|
|
62
61
|
def sql_expr
|
|
63
|
-
Sequel
|
|
62
|
+
Sequel[self]
|
|
64
63
|
end
|
|
65
64
|
|
|
66
65
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, matching none
|
|
67
66
|
# of the conditions.
|
|
68
67
|
#
|
|
69
|
-
# [[:a, true]].sql_negate # SQL: a IS NOT TRUE
|
|
70
|
-
# [[: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)))
|
|
71
70
|
def sql_negate
|
|
72
71
|
Sequel.negate(self)
|
|
73
72
|
end
|
|
@@ -75,8 +74,8 @@ class Array
|
|
|
75
74
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, matching any of the
|
|
76
75
|
# conditions.
|
|
77
76
|
#
|
|
78
|
-
# [[:a, true]].sql_or # SQL: a IS TRUE
|
|
79
|
-
# [[: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)))
|
|
80
79
|
def sql_or
|
|
81
80
|
Sequel.or(self)
|
|
82
81
|
end
|
|
@@ -87,9 +86,9 @@ class Array
|
|
|
87
86
|
# concatenation.
|
|
88
87
|
#
|
|
89
88
|
# [:a].sql_string_join # SQL: a
|
|
90
|
-
# [:a, :b].sql_string_join # SQL: a || b
|
|
91
|
-
# [:a, 'b'].sql_string_join # SQL: a || 'b'
|
|
92
|
-
# ['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)
|
|
93
92
|
def sql_string_join(joiner=nil)
|
|
94
93
|
Sequel.join(self, joiner)
|
|
95
94
|
end
|
|
@@ -101,8 +100,8 @@ class Hash
|
|
|
101
100
|
# all of the conditions in this hash and the condition specified by
|
|
102
101
|
# the given argument.
|
|
103
102
|
#
|
|
104
|
-
# {:
|
|
105
|
-
# {:
|
|
103
|
+
# {a: 1} & :b # SQL: ((a = 1) AND b)
|
|
104
|
+
# {a: true} & ~:b # SQL: ((a IS TRUE) AND NOT b)
|
|
106
105
|
def &(ce)
|
|
107
106
|
::Sequel::SQL::BooleanExpression.new(:AND, self, ce)
|
|
108
107
|
end
|
|
@@ -111,8 +110,8 @@ class Hash
|
|
|
111
110
|
# all of the conditions in this hash or the condition specified by
|
|
112
111
|
# the given argument.
|
|
113
112
|
#
|
|
114
|
-
# {:
|
|
115
|
-
# {:
|
|
113
|
+
# {a: 1} | :b # SQL: ((a = 1) OR b)
|
|
114
|
+
# {a: true} | ~:b # SQL: ((a IS TRUE) OR NOT b)
|
|
116
115
|
def |(ce)
|
|
117
116
|
::Sequel::SQL::BooleanExpression.new(:OR, self, ce)
|
|
118
117
|
end
|
|
@@ -120,19 +119,17 @@ class Hash
|
|
|
120
119
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this hash, not matching all of the
|
|
121
120
|
# conditions.
|
|
122
121
|
#
|
|
123
|
-
# ~{:
|
|
124
|
-
# ~{:
|
|
122
|
+
# ~{a: true} # SQL: (a IS NOT TRUE)
|
|
123
|
+
# ~{a: 1, b: [2, 3]} # SQL: ((a != 1) OR (b NOT IN (2, 3)))
|
|
125
124
|
def ~
|
|
126
125
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR, true)
|
|
127
126
|
end
|
|
128
127
|
|
|
129
128
|
# Return a <tt>Sequel::SQL::CaseExpression</tt> with this hash as the conditions and the given
|
|
130
|
-
# default value.
|
|
131
|
-
# conditions should be orthogonal.
|
|
129
|
+
# default value.
|
|
132
130
|
#
|
|
133
|
-
# {{:
|
|
134
|
-
# {:
|
|
135
|
-
# # 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
|
|
136
133
|
def case(*args)
|
|
137
134
|
::Sequel::SQL::CaseExpression.new(to_a, *args)
|
|
138
135
|
end
|
|
@@ -141,8 +138,8 @@ class Hash
|
|
|
141
138
|
# conditions. Rarely do you need to call this explicitly, as Sequel generally
|
|
142
139
|
# assumes that hashes specify this type of condition.
|
|
143
140
|
#
|
|
144
|
-
# {:
|
|
145
|
-
# {:
|
|
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)))
|
|
146
143
|
def sql_expr
|
|
147
144
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self)
|
|
148
145
|
end
|
|
@@ -150,8 +147,8 @@ class Hash
|
|
|
150
147
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this hash, matching none
|
|
151
148
|
# of the conditions.
|
|
152
149
|
#
|
|
153
|
-
# {:
|
|
154
|
-
# {:
|
|
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)))
|
|
155
152
|
def sql_negate
|
|
156
153
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self, :AND, true)
|
|
157
154
|
end
|
|
@@ -159,8 +156,8 @@ class Hash
|
|
|
159
156
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this hash, matching any of the
|
|
160
157
|
# conditions.
|
|
161
158
|
#
|
|
162
|
-
# {:
|
|
163
|
-
# {:
|
|
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)))
|
|
164
161
|
def sql_or
|
|
165
162
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR)
|
|
166
163
|
end
|
|
@@ -174,16 +171,16 @@ class String
|
|
|
174
171
|
# Converts a string into a <tt>Sequel::LiteralString</tt>, in order to override string
|
|
175
172
|
# literalization, e.g.:
|
|
176
173
|
#
|
|
177
|
-
# DB[:items].
|
|
178
|
-
#
|
|
174
|
+
# DB[:items].where(abc: 'def')
|
|
175
|
+
# # "SELECT * FROM items WHERE (abc = 'def')"
|
|
179
176
|
#
|
|
180
|
-
# DB[:items].
|
|
181
|
-
#
|
|
177
|
+
# DB[:items].where(abc: 'def'.lit)
|
|
178
|
+
# # "SELECT * FROM items WHERE (abc = def)"
|
|
182
179
|
#
|
|
183
180
|
# You can also provide arguments, to create a <tt>Sequel::SQL::PlaceholderLiteralString</tt>:
|
|
184
181
|
#
|
|
185
|
-
#
|
|
186
|
-
#
|
|
182
|
+
# DB[:items].select{|o| o.count('DISTINCT ?'.lit(:a))}
|
|
183
|
+
# # "SELECT count(DISTINCT a) FROM items"
|
|
187
184
|
def lit(*args)
|
|
188
185
|
args.empty? ? Sequel::LiteralString.new(self) : Sequel::SQL::PlaceholderLiteralString.new(self, args)
|
|
189
186
|
end
|
|
@@ -197,7 +194,6 @@ end
|
|
|
197
194
|
|
|
198
195
|
# Sequel extends +Symbol+ to add methods to implement the SQL DSL.
|
|
199
196
|
class Symbol
|
|
200
|
-
include Sequel::SQL::AliasMethods
|
|
201
197
|
include Sequel::SQL::CastMethods
|
|
202
198
|
include Sequel::SQL::OrderMethods
|
|
203
199
|
include Sequel::SQL::BooleanMethods
|
|
@@ -207,19 +203,15 @@ class Symbol
|
|
|
207
203
|
include Sequel::SQL::SubscriptMethods
|
|
208
204
|
include Sequel::SQL::ComplexExpressionMethods
|
|
209
205
|
|
|
210
|
-
# Returns receiver wrapped in an <tt>Sequel::SQL::Identifier</tt>.
|
|
211
|
-
# prevent splitting the symbol.
|
|
206
|
+
# Returns receiver wrapped in an <tt>Sequel::SQL::Identifier</tt>.
|
|
212
207
|
#
|
|
213
|
-
# :
|
|
214
|
-
# :a__b.identifier # SQL: "a__b"
|
|
208
|
+
# :a.identifier # SQL: "a"
|
|
215
209
|
def identifier
|
|
216
210
|
Sequel::SQL::Identifier.new(self)
|
|
217
211
|
end
|
|
218
212
|
|
|
219
213
|
# Returns a <tt>Sequel::SQL::Function</tt> with this as the function name,
|
|
220
|
-
# and the given arguments.
|
|
221
|
-
# is less than 1.9.0. Ruby 1.9 defines <tt>Symbol#[]</tt>, and Sequel
|
|
222
|
-
# doesn't override methods defined by ruby itself.
|
|
214
|
+
# and the given arguments.
|
|
223
215
|
#
|
|
224
216
|
# :now.sql_function # SQL: now()
|
|
225
217
|
# :sum.sql_function(:a) # SQL: sum(a)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
1
3
|
# These are refinements to core classes that allow the Sequel
|
|
2
4
|
# DSL to be used without modifying the core classes directly.
|
|
3
5
|
# After loading the extension via:
|
|
@@ -8,15 +10,17 @@
|
|
|
8
10
|
#
|
|
9
11
|
# using Sequel::CoreRefinements
|
|
10
12
|
|
|
13
|
+
# :nocov:
|
|
11
14
|
raise(Sequel::Error, "Refinements require ruby 2.0.0 or greater") unless RUBY_VERSION >= '2.0.0'
|
|
15
|
+
# :nocov:
|
|
12
16
|
|
|
13
17
|
module Sequel::CoreRefinements
|
|
14
18
|
refine Array do
|
|
15
19
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, not matching all of the
|
|
16
20
|
# conditions.
|
|
17
21
|
#
|
|
18
|
-
# ~[[:a, true]] # SQL: a IS NOT TRUE
|
|
19
|
-
# ~[[:a, 1], [:b, [2, 3]]] # SQL: a != 1 OR b NOT IN (2, 3)
|
|
22
|
+
# ~[[:a, true]] # SQL: (a IS NOT TRUE)
|
|
23
|
+
# ~[[:a, 1], [:b, [2, 3]]] # SQL: ((a != 1) OR (b NOT IN (2, 3)))
|
|
20
24
|
def ~
|
|
21
25
|
Sequel.~(self)
|
|
22
26
|
end
|
|
@@ -24,7 +28,7 @@ module Sequel::CoreRefinements
|
|
|
24
28
|
# Return a <tt>Sequel::SQL::CaseExpression</tt> with this array as the conditions and the given
|
|
25
29
|
# default value and expression.
|
|
26
30
|
#
|
|
27
|
-
# [[{:
|
|
31
|
+
# [[{a: [2,3]}, 1]].case(0) # SQL: CASE WHEN (a IN (2, 3)) THEN 1 ELSE 0 END
|
|
28
32
|
# [[:a, 1], [:b, 2]].case(:d, :c) # SQL: CASE c WHEN a THEN 1 WHEN b THEN 2 ELSE d END
|
|
29
33
|
def case(*args)
|
|
30
34
|
::Sequel::SQL::CaseExpression.new(self, *args)
|
|
@@ -36,9 +40,9 @@ module Sequel::CoreRefinements
|
|
|
36
40
|
# this array as a value in a filter, but may be necessary if you are using it as a
|
|
37
41
|
# value with placeholder SQL:
|
|
38
42
|
#
|
|
39
|
-
# DB[:a].
|
|
40
|
-
# DB[:a].
|
|
41
|
-
# DB[:a].
|
|
43
|
+
# DB[:a].where([:a, :b]=>[[1, 2], [3, 4]]) # SQL: ((a, b) IN ((1, 2), (3, 4)))
|
|
44
|
+
# DB[:a].where('(a, b) IN ?', [[1, 2], [3, 4]]) # SQL: ((a, b) IN ((1 = 2) AND (3 = 4)))
|
|
45
|
+
# DB[:a].where('(a, b) IN ?', [[1, 2], [3, 4]].sql_value_list) # SQL: ((a, b) IN ((1, 2), (3, 4)))
|
|
42
46
|
def sql_value_list
|
|
43
47
|
::Sequel::SQL::ValueList.new(self)
|
|
44
48
|
end
|
|
@@ -50,17 +54,17 @@ module Sequel::CoreRefinements
|
|
|
50
54
|
# and want to use the = operator instead of the IN operator (which is used by default for
|
|
51
55
|
# arrays of two element arrays).
|
|
52
56
|
#
|
|
53
|
-
# [[:a, true]].sql_expr # SQL: a IS TRUE
|
|
54
|
-
# [[:a, 1], [:b, [2, 3]]].sql_expr # SQL: a = 1 AND b IN (2, 3)
|
|
57
|
+
# [[:a, true]].sql_expr # SQL: (a IS TRUE)
|
|
58
|
+
# [[:a, 1], [:b, [2, 3]]].sql_expr # SQL: ((a = 1) AND (b IN (2, 3)))
|
|
55
59
|
def sql_expr
|
|
56
|
-
Sequel
|
|
60
|
+
Sequel[self]
|
|
57
61
|
end
|
|
58
62
|
|
|
59
63
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, matching none
|
|
60
64
|
# of the conditions.
|
|
61
65
|
#
|
|
62
|
-
# [[:a, true]].sql_negate # SQL: a IS NOT TRUE
|
|
63
|
-
# [[:a, 1], [:b, [2, 3]]].sql_negate # SQL: a != 1 AND b NOT IN (2, 3)
|
|
66
|
+
# [[:a, true]].sql_negate # SQL: (a IS NOT TRUE)
|
|
67
|
+
# [[:a, 1], [:b, [2, 3]]].sql_negate # SQL: ((a != 1) AND (b NOT IN (2, 3)))
|
|
64
68
|
def sql_negate
|
|
65
69
|
Sequel.negate(self)
|
|
66
70
|
end
|
|
@@ -68,8 +72,8 @@ module Sequel::CoreRefinements
|
|
|
68
72
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this array, matching any of the
|
|
69
73
|
# conditions.
|
|
70
74
|
#
|
|
71
|
-
# [[:a, true]].sql_or # SQL: a IS TRUE
|
|
72
|
-
# [[:a, 1], [:b, [2, 3]]].sql_or # SQL: a = 1 OR b IN (2, 3)
|
|
75
|
+
# [[:a, true]].sql_or # SQL: (a IS TRUE)
|
|
76
|
+
# [[:a, 1], [:b, [2, 3]]].sql_or # SQL: ((a = 1) OR (b IN (2, 3)))
|
|
73
77
|
def sql_or
|
|
74
78
|
Sequel.or(self)
|
|
75
79
|
end
|
|
@@ -80,9 +84,9 @@ module Sequel::CoreRefinements
|
|
|
80
84
|
# concatenation.
|
|
81
85
|
#
|
|
82
86
|
# [:a].sql_string_join # SQL: a
|
|
83
|
-
# [:a, :b].sql_string_join # SQL: a || b
|
|
84
|
-
# [:a, 'b'].sql_string_join # SQL: a || 'b'
|
|
85
|
-
# ['a', :b].sql_string_join(' ') # SQL: 'a' || ' ' || b
|
|
87
|
+
# [:a, :b].sql_string_join # SQL: (a || b)
|
|
88
|
+
# [:a, 'b'].sql_string_join # SQL: (a || 'b')
|
|
89
|
+
# ['a', :b].sql_string_join(' ') # SQL: ('a' || ' ' || b)
|
|
86
90
|
def sql_string_join(joiner=nil)
|
|
87
91
|
Sequel.join(self, joiner)
|
|
88
92
|
end
|
|
@@ -93,8 +97,8 @@ module Sequel::CoreRefinements
|
|
|
93
97
|
# all of the conditions in this hash and the condition specified by
|
|
94
98
|
# the given argument.
|
|
95
99
|
#
|
|
96
|
-
# {:
|
|
97
|
-
# {:
|
|
100
|
+
# {a: 1} & :b # SQL: ((a = 1) AND b)
|
|
101
|
+
# {a: true} & ~:b # SQL: ((a IS TRUE) AND NOT b)
|
|
98
102
|
def &(ce)
|
|
99
103
|
::Sequel::SQL::BooleanExpression.new(:AND, self, ce)
|
|
100
104
|
end
|
|
@@ -103,8 +107,8 @@ module Sequel::CoreRefinements
|
|
|
103
107
|
# all of the conditions in this hash or the condition specified by
|
|
104
108
|
# the given argument.
|
|
105
109
|
#
|
|
106
|
-
# {:
|
|
107
|
-
# {:
|
|
110
|
+
# {a: 1} | :b # SQL: ((a = 1) OR b)
|
|
111
|
+
# {a: true} | ~:b # SQL: ((a IS TRUE) OR NOT b)
|
|
108
112
|
def |(ce)
|
|
109
113
|
::Sequel::SQL::BooleanExpression.new(:OR, self, ce)
|
|
110
114
|
end
|
|
@@ -112,19 +116,17 @@ module Sequel::CoreRefinements
|
|
|
112
116
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this hash, not matching all of the
|
|
113
117
|
# conditions.
|
|
114
118
|
#
|
|
115
|
-
# ~{:
|
|
116
|
-
# ~{:
|
|
119
|
+
# ~{a: true} # SQL: (a IS NOT TRUE)
|
|
120
|
+
# ~{a: 1, b: [2, 3]} # SQL: ((a != 1) OR (b NOT IN (2, 3)))
|
|
117
121
|
def ~
|
|
118
122
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR, true)
|
|
119
123
|
end
|
|
120
124
|
|
|
121
125
|
# Return a <tt>Sequel::SQL::CaseExpression</tt> with this hash as the conditions and the given
|
|
122
|
-
# default value.
|
|
123
|
-
# conditions should be orthogonal.
|
|
126
|
+
# default value.
|
|
124
127
|
#
|
|
125
|
-
# {{:
|
|
126
|
-
# {:
|
|
127
|
-
# # or: CASE c WHEN b THEN 2 WHEN a THEN 1 ELSE d END
|
|
128
|
+
# {{a: [2,3]}=>1}.case(0) # SQL: CASE WHEN (a IN (2, 3)) THEN 1 ELSE 0 END
|
|
129
|
+
# {a: 1, b: 2}.case(:d, :c) # SQL: CASE c WHEN a THEN 1 WHEN b THEN 2 ELSE d END
|
|
128
130
|
def case(*args)
|
|
129
131
|
::Sequel::SQL::CaseExpression.new(to_a, *args)
|
|
130
132
|
end
|
|
@@ -133,8 +135,8 @@ module Sequel::CoreRefinements
|
|
|
133
135
|
# conditions. Rarely do you need to call this explicitly, as Sequel generally
|
|
134
136
|
# assumes that hashes specify this type of condition.
|
|
135
137
|
#
|
|
136
|
-
# {:
|
|
137
|
-
# {:
|
|
138
|
+
# {a: true}.sql_expr # SQL: (a IS TRUE)
|
|
139
|
+
# {a: 1, b: [2, 3]}.sql_expr # SQL: ((a = 1) AND (b IN (2, 3)))
|
|
138
140
|
def sql_expr
|
|
139
141
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self)
|
|
140
142
|
end
|
|
@@ -142,8 +144,8 @@ module Sequel::CoreRefinements
|
|
|
142
144
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this hash, matching none
|
|
143
145
|
# of the conditions.
|
|
144
146
|
#
|
|
145
|
-
# {:
|
|
146
|
-
# {:
|
|
147
|
+
# {a: true}.sql_negate # SQL: (a IS NOT TRUE)
|
|
148
|
+
# {a: 1, b: [2, 3]}.sql_negate # SQL: ((a != 1) AND (b NOT IN (2, 3)))
|
|
147
149
|
def sql_negate
|
|
148
150
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self, :AND, true)
|
|
149
151
|
end
|
|
@@ -151,8 +153,8 @@ module Sequel::CoreRefinements
|
|
|
151
153
|
# Return a <tt>Sequel::SQL::BooleanExpression</tt> created from this hash, matching any of the
|
|
152
154
|
# conditions.
|
|
153
155
|
#
|
|
154
|
-
# {:
|
|
155
|
-
# {:
|
|
156
|
+
# {a: true}.sql_or # SQL: (a IS TRUE)
|
|
157
|
+
# {a: 1, b: [2, 3]}.sql_or # SQL: ((a = 1) OR (b IN (2, 3)))
|
|
156
158
|
def sql_or
|
|
157
159
|
::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR)
|
|
158
160
|
end
|
|
@@ -165,16 +167,16 @@ module Sequel::CoreRefinements
|
|
|
165
167
|
# Converts a string into a <tt>Sequel::LiteralString</tt>, in order to override string
|
|
166
168
|
# literalization, e.g.:
|
|
167
169
|
#
|
|
168
|
-
# DB[:items].
|
|
169
|
-
#
|
|
170
|
+
# DB[:items].where(abc: 'def')
|
|
171
|
+
# # "SELECT * FROM items WHERE (abc = 'def')"
|
|
170
172
|
#
|
|
171
|
-
# DB[:items].
|
|
172
|
-
#
|
|
173
|
+
# DB[:items].where(abc: 'def'.lit)
|
|
174
|
+
# # "SELECT * FROM items WHERE (abc = def)"
|
|
173
175
|
#
|
|
174
176
|
# You can also provide arguments, to create a <tt>Sequel::SQL::PlaceholderLiteralString</tt>:
|
|
175
177
|
#
|
|
176
|
-
#
|
|
177
|
-
#
|
|
178
|
+
# DB[:items].select{|o| o.count('DISTINCT ?'.lit(:a))}
|
|
179
|
+
# # "SELECT count(DISTINCT a) FROM items"
|
|
178
180
|
def lit(*args)
|
|
179
181
|
args.empty? ? Sequel::LiteralString.new(self) : Sequel::SQL::PlaceholderLiteralString.new(self, args)
|
|
180
182
|
end
|
|
@@ -197,19 +199,15 @@ module Sequel::CoreRefinements
|
|
|
197
199
|
include Sequel::SQL::SubscriptMethods
|
|
198
200
|
include Sequel::SQL::ComplexExpressionMethods
|
|
199
201
|
|
|
200
|
-
# Returns receiver wrapped in an <tt>Sequel::SQL::Identifier</tt>.
|
|
201
|
-
# prevent splitting the symbol.
|
|
202
|
+
# Returns receiver wrapped in an <tt>Sequel::SQL::Identifier</tt>.
|
|
202
203
|
#
|
|
203
|
-
# :
|
|
204
|
-
# :a__b.identifier # SQL: "a__b"
|
|
204
|
+
# :ab.identifier # SQL: "a"
|
|
205
205
|
def identifier
|
|
206
206
|
Sequel::SQL::Identifier.new(self)
|
|
207
207
|
end
|
|
208
208
|
|
|
209
209
|
# Returns a <tt>Sequel::SQL::Function</tt> with this as the function name,
|
|
210
|
-
# and the given arguments.
|
|
211
|
-
# is less than 1.9.0. Ruby 1.9 defines <tt>Symbol#[]</tt>, and Sequel
|
|
212
|
-
# doesn't override methods defined by ruby itself.
|
|
210
|
+
# and the given arguments.
|
|
213
211
|
#
|
|
214
212
|
# :now.sql_function # SQL: now()
|
|
215
213
|
# :sum.sql_function(:a) # SQL: sum(a)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
1
3
|
# The current_datetime_timestamp extension makes Dataset#current_datetime
|
|
2
4
|
# return an object that operates like Sequel.datetime_class.now, but will
|
|
3
5
|
# be literalized as CURRENT_TIMESTAMP.
|
|
@@ -20,6 +22,8 @@
|
|
|
20
22
|
# datasets of a given database.
|
|
21
23
|
#
|
|
22
24
|
# DB.extension(:current_datetime_timestamp)
|
|
25
|
+
#
|
|
26
|
+
# Related module: Sequel::CurrentDateTimeTimestamp
|
|
23
27
|
|
|
24
28
|
#
|
|
25
29
|
module Sequel
|
|
@@ -28,7 +32,7 @@ module Sequel
|
|
|
28
32
|
# Return an instance of Sequel.datetime_class that will be literalized
|
|
29
33
|
# as CURRENT_TIMESTAMP.
|
|
30
34
|
def current_datetime
|
|
31
|
-
|
|
35
|
+
(Sequel.datetime_class == ::Time ? Time : DateTime).now
|
|
32
36
|
end
|
|
33
37
|
|
|
34
38
|
private
|
|
@@ -49,9 +53,6 @@ module Sequel
|
|
|
49
53
|
|
|
50
54
|
# DateTime subclass literalized as CURRENT_TIMESTAMP
|
|
51
55
|
class DateTime < ::DateTime; end
|
|
52
|
-
|
|
53
|
-
# Mapping of Time/DateTime classes to subclasses literalized as CURRENT_TIMESTAMP
|
|
54
|
-
MAP = {::Time=>Time, ::DateTime=>DateTime}
|
|
55
56
|
end
|
|
56
57
|
|
|
57
58
|
Dataset.register_extension(:current_datetime_timestamp, CurrentDateTimeTimestamp::DatasetMethods)
|