sequel 4.41.0 → 4.42.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +98 -0
- data/README.rdoc +23 -10
- data/doc/active_record.rdoc +4 -4
- data/doc/advanced_associations.rdoc +2 -2
- data/doc/association_basics.rdoc +5 -2
- data/doc/cheat_sheet.rdoc +3 -3
- data/doc/core_extensions.rdoc +2 -2
- data/doc/dataset_basics.rdoc +4 -4
- data/doc/dataset_filtering.rdoc +1 -1
- data/doc/migration.rdoc +19 -1
- data/doc/prepared_statements.rdoc +2 -2
- data/doc/release_notes/4.42.0.txt +221 -0
- data/doc/testing.rdoc +3 -1
- data/lib/sequel/adapters/ado/access.rb +0 -1
- data/lib/sequel/adapters/ado/mssql.rb +0 -1
- data/lib/sequel/adapters/do/mysql.rb +0 -1
- data/lib/sequel/adapters/do/postgres.rb +0 -1
- data/lib/sequel/adapters/do/sqlite3.rb +0 -1
- data/lib/sequel/adapters/ibmdb.rb +21 -25
- data/lib/sequel/adapters/jdbc.rb +8 -16
- data/lib/sequel/adapters/jdbc/as400.rb +0 -1
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -1
- data/lib/sequel/adapters/jdbc/db2.rb +0 -1
- data/lib/sequel/adapters/jdbc/derby.rb +0 -1
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -1
- data/lib/sequel/adapters/jdbc/h2.rb +0 -1
- data/lib/sequel/adapters/jdbc/hsqldb.rb +0 -1
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -1
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -1
- data/lib/sequel/adapters/jdbc/jtds.rb +0 -1
- data/lib/sequel/adapters/jdbc/mssql.rb +0 -1
- data/lib/sequel/adapters/jdbc/mysql.rb +0 -1
- data/lib/sequel/adapters/jdbc/oracle.rb +0 -1
- data/lib/sequel/adapters/jdbc/postgresql.rb +0 -13
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +0 -1
- data/lib/sequel/adapters/jdbc/sqlite.rb +0 -1
- data/lib/sequel/adapters/jdbc/sqlserver.rb +3 -4
- data/lib/sequel/adapters/mock.rb +54 -12
- data/lib/sequel/adapters/mysql.rb +1 -1
- data/lib/sequel/adapters/mysql2.rb +11 -17
- data/lib/sequel/adapters/odbc/mssql.rb +0 -1
- data/lib/sequel/adapters/oracle.rb +8 -20
- data/lib/sequel/adapters/postgres.rb +11 -29
- data/lib/sequel/adapters/shared/access.rb +5 -12
- data/lib/sequel/adapters/shared/cubrid.rb +4 -13
- data/lib/sequel/adapters/shared/db2.rb +4 -2
- data/lib/sequel/adapters/shared/firebird.rb +2 -4
- data/lib/sequel/adapters/shared/informix.rb +4 -2
- data/lib/sequel/adapters/shared/mssql.rb +3 -5
- data/lib/sequel/adapters/shared/mysql.rb +4 -14
- data/lib/sequel/adapters/shared/oracle.rb +1 -3
- data/lib/sequel/adapters/shared/postgres.rb +16 -38
- data/lib/sequel/adapters/shared/progress.rb +0 -2
- data/lib/sequel/adapters/shared/sqlanywhere.rb +0 -2
- data/lib/sequel/adapters/shared/sqlite.rb +20 -16
- data/lib/sequel/adapters/sqlite.rb +8 -20
- data/lib/sequel/adapters/swift/mysql.rb +0 -1
- data/lib/sequel/adapters/swift/postgres.rb +0 -1
- data/lib/sequel/adapters/swift/sqlite.rb +0 -1
- data/lib/sequel/adapters/tinytds.rb +4 -12
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +1 -1
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -2
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +11 -34
- data/lib/sequel/adapters/utils/stored_procedures.rb +9 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +26 -0
- data/lib/sequel/ast_transformer.rb +2 -2
- data/lib/sequel/database/dataset.rb +1 -1
- data/lib/sequel/database/dataset_defaults.rb +0 -66
- data/lib/sequel/database/features.rb +6 -0
- data/lib/sequel/database/misc.rb +31 -17
- data/lib/sequel/database/query.rb +7 -4
- data/lib/sequel/database/schema_methods.rb +1 -1
- data/lib/sequel/dataset.rb +8 -8
- data/lib/sequel/dataset/actions.rb +140 -46
- data/lib/sequel/dataset/features.rb +1 -5
- data/lib/sequel/dataset/graph.rb +7 -8
- data/lib/sequel/dataset/misc.rb +127 -56
- data/lib/sequel/dataset/mutation.rb +9 -20
- data/lib/sequel/dataset/placeholder_literalizer.rb +10 -1
- data/lib/sequel/dataset/prepared_statements.rb +102 -46
- data/lib/sequel/dataset/query.rb +155 -72
- data/lib/sequel/dataset/sql.rb +26 -9
- data/lib/sequel/extensions/columns_introspection.rb +3 -1
- data/lib/sequel/extensions/core_extensions.rb +5 -5
- data/lib/sequel/extensions/core_refinements.rb +5 -5
- data/lib/sequel/extensions/duplicate_columns_handler.rb +4 -2
- data/lib/sequel/extensions/freeze_datasets.rb +69 -0
- data/lib/sequel/extensions/identifier_mangling.rb +196 -0
- data/lib/sequel/extensions/looser_typecasting.rb +11 -7
- data/lib/sequel/extensions/migration.rb +1 -1
- data/lib/sequel/extensions/null_dataset.rb +5 -2
- data/lib/sequel/extensions/pagination.rb +42 -23
- data/lib/sequel/extensions/pg_enum.rb +3 -3
- data/lib/sequel/extensions/query.rb +3 -3
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +15 -8
- data/lib/sequel/model/associations.rb +25 -8
- data/lib/sequel/model/base.rb +88 -29
- data/lib/sequel/model/dataset_module.rb +37 -0
- data/lib/sequel/plugins/association_pks.rb +4 -4
- data/lib/sequel/plugins/class_table_inheritance.rb +2 -2
- data/lib/sequel/plugins/constraint_validations.rb +1 -2
- data/lib/sequel/plugins/csv_serializer.rb +2 -2
- data/lib/sequel/plugins/dataset_associations.rb +8 -8
- data/lib/sequel/plugins/eager_each.rb +2 -2
- data/lib/sequel/plugins/instance_filters.rb +1 -1
- data/lib/sequel/plugins/json_serializer.rb +2 -2
- data/lib/sequel/plugins/lazy_attributes.rb +1 -1
- data/lib/sequel/plugins/list.rb +4 -4
- data/lib/sequel/plugins/prepared_statements.rb +2 -4
- data/lib/sequel/plugins/prepared_statements_associations.rb +1 -3
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +1 -1
- data/lib/sequel/plugins/rcte_tree.rb +13 -13
- data/lib/sequel/plugins/sharding.rb +1 -1
- data/lib/sequel/plugins/single_table_inheritance.rb +9 -4
- data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
- data/lib/sequel/plugins/validation_class_methods.rb +1 -1
- data/lib/sequel/plugins/validation_helpers.rb +1 -1
- data/lib/sequel/plugins/xml_serializer.rb +2 -2
- data/lib/sequel/sql.rb +69 -36
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/db2_spec.rb +10 -0
- data/spec/adapters/firebird_spec.rb +1 -1
- data/spec/adapters/mssql_spec.rb +4 -5
- data/spec/adapters/mysql_spec.rb +9 -9
- data/spec/adapters/postgres_spec.rb +67 -68
- data/spec/adapters/spec_helper.rb +6 -1
- data/spec/adapters/sqlite_spec.rb +29 -15
- data/spec/core/connection_pool_spec.rb +14 -14
- data/spec/core/database_spec.rb +38 -180
- data/spec/core/dataset_mutation_spec.rb +253 -0
- data/spec/core/dataset_spec.rb +394 -537
- data/spec/core/expression_filters_spec.rb +34 -32
- data/spec/core/mock_adapter_spec.rb +27 -35
- data/spec/core/placeholder_literalizer_spec.rb +2 -4
- data/spec/core/schema_generator_spec.rb +4 -4
- data/spec/core/schema_spec.rb +1 -2
- data/spec/core_extensions_spec.rb +22 -29
- data/spec/extensions/active_model_spec.rb +6 -6
- data/spec/extensions/association_dependencies_spec.rb +2 -2
- data/spec/extensions/blacklist_security_spec.rb +3 -3
- data/spec/extensions/boolean_readers_spec.rb +12 -12
- data/spec/extensions/caching_spec.rb +13 -10
- data/spec/extensions/class_table_inheritance_spec.rb +38 -43
- data/spec/extensions/column_conflicts_spec.rb +1 -3
- data/spec/extensions/columns_introspection_spec.rb +2 -3
- data/spec/extensions/composition_spec.rb +5 -3
- data/spec/extensions/constraint_validations_plugin_spec.rb +5 -5
- data/spec/extensions/constraint_validations_spec.rb +14 -8
- data/spec/extensions/core_refinements_spec.rb +22 -29
- data/spec/extensions/csv_serializer_spec.rb +7 -6
- data/spec/extensions/date_arithmetic_spec.rb +15 -15
- data/spec/extensions/defaults_setter_spec.rb +2 -2
- data/spec/extensions/delay_add_association_spec.rb +1 -1
- data/spec/extensions/dirty_spec.rb +19 -10
- data/spec/extensions/duplicate_columns_handler_spec.rb +12 -18
- data/spec/extensions/eager_each_spec.rb +12 -16
- data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
- data/spec/extensions/eval_inspect_spec.rb +4 -3
- data/spec/extensions/force_encoding_spec.rb +12 -12
- data/spec/extensions/freeze_datasets_spec.rb +31 -0
- data/spec/extensions/graph_each_spec.rb +6 -18
- data/spec/extensions/hook_class_methods_spec.rb +7 -7
- data/spec/extensions/identifier_mangling_spec.rb +307 -0
- data/spec/extensions/instance_filters_spec.rb +5 -6
- data/spec/extensions/instance_hooks_spec.rb +12 -12
- data/spec/extensions/json_serializer_spec.rb +12 -15
- data/spec/extensions/lazy_attributes_spec.rb +4 -4
- data/spec/extensions/list_spec.rb +19 -21
- data/spec/extensions/many_through_many_spec.rb +108 -163
- data/spec/extensions/meta_def_spec.rb +7 -2
- data/spec/extensions/migration_spec.rb +10 -12
- data/spec/extensions/mssql_optimistic_locking_spec.rb +4 -3
- data/spec/extensions/named_timezones_spec.rb +4 -3
- data/spec/extensions/nested_attributes_spec.rb +2 -2
- data/spec/extensions/null_dataset_spec.rb +17 -12
- data/spec/extensions/optimistic_locking_spec.rb +4 -5
- data/spec/extensions/pagination_spec.rb +8 -10
- data/spec/extensions/pg_array_associations_spec.rb +28 -27
- data/spec/extensions/pg_array_ops_spec.rb +2 -1
- data/spec/extensions/pg_array_spec.rb +6 -2
- data/spec/extensions/pg_enum_spec.rb +5 -3
- data/spec/extensions/pg_hstore_ops_spec.rb +3 -1
- data/spec/extensions/pg_hstore_spec.rb +7 -6
- data/spec/extensions/pg_inet_ops_spec.rb +2 -1
- data/spec/extensions/pg_inet_spec.rb +2 -1
- data/spec/extensions/pg_interval_spec.rb +2 -1
- data/spec/extensions/pg_json_ops_spec.rb +2 -1
- data/spec/extensions/pg_json_spec.rb +6 -3
- data/spec/extensions/pg_loose_count_spec.rb +1 -0
- data/spec/extensions/pg_range_ops_spec.rb +3 -1
- data/spec/extensions/pg_range_spec.rb +9 -5
- data/spec/extensions/pg_row_ops_spec.rb +2 -1
- data/spec/extensions/pg_row_plugin_spec.rb +4 -6
- data/spec/extensions/pg_row_spec.rb +5 -3
- data/spec/extensions/pg_static_cache_updater_spec.rb +2 -1
- data/spec/extensions/pg_typecast_on_load_spec.rb +1 -1
- data/spec/extensions/prepared_statements_associations_spec.rb +1 -1
- data/spec/extensions/prepared_statements_spec.rb +12 -11
- data/spec/extensions/pretty_table_spec.rb +1 -1
- data/spec/extensions/query_spec.rb +8 -5
- data/spec/extensions/rcte_tree_spec.rb +39 -39
- data/spec/extensions/round_timestamps_spec.rb +2 -2
- data/spec/extensions/schema_dumper_spec.rb +3 -2
- data/spec/extensions/schema_spec.rb +2 -2
- data/spec/extensions/scissors_spec.rb +1 -2
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +30 -17
- data/spec/extensions/serialization_modification_detection_spec.rb +2 -2
- data/spec/extensions/serialization_spec.rb +15 -13
- data/spec/extensions/set_overrides_spec.rb +14 -8
- data/spec/extensions/sharding_spec.rb +9 -18
- data/spec/extensions/shared_caching_spec.rb +3 -4
- data/spec/extensions/single_table_inheritance_spec.rb +11 -11
- data/spec/extensions/skip_create_refresh_spec.rb +2 -1
- data/spec/extensions/spec_helper.rb +1 -1
- data/spec/extensions/split_values_spec.rb +2 -2
- data/spec/extensions/sql_comments_spec.rb +6 -0
- data/spec/extensions/static_cache_spec.rb +7 -9
- data/spec/extensions/string_agg_spec.rb +30 -29
- data/spec/extensions/tactical_eager_loading_spec.rb +4 -5
- data/spec/extensions/thread_local_timezones_spec.rb +2 -2
- data/spec/extensions/timestamps_spec.rb +28 -3
- data/spec/extensions/to_dot_spec.rb +1 -2
- data/spec/extensions/tree_spec.rb +33 -29
- data/spec/extensions/typecast_on_load_spec.rb +1 -1
- data/spec/extensions/unlimited_update_spec.rb +1 -0
- data/spec/extensions/update_primary_key_spec.rb +11 -7
- data/spec/extensions/update_refresh_spec.rb +1 -1
- data/spec/extensions/uuid_spec.rb +0 -1
- data/spec/extensions/validate_associated_spec.rb +1 -1
- data/spec/extensions/validation_class_methods_spec.rb +10 -10
- data/spec/extensions/validation_helpers_spec.rb +10 -10
- data/spec/extensions/xml_serializer_spec.rb +7 -3
- data/spec/integration/associations_test.rb +31 -31
- data/spec/integration/dataset_test.rb +17 -19
- data/spec/integration/eager_loader_test.rb +24 -24
- data/spec/integration/model_test.rb +6 -6
- data/spec/integration/plugin_test.rb +43 -43
- data/spec/integration/prepared_statement_test.rb +6 -6
- data/spec/integration/schema_test.rb +63 -52
- data/spec/integration/spec_helper.rb +6 -1
- data/spec/integration/transaction_test.rb +13 -13
- data/spec/model/association_reflection_spec.rb +17 -17
- data/spec/model/associations_spec.rb +101 -96
- data/spec/model/base_spec.rb +175 -49
- data/spec/model/class_dataset_methods_spec.rb +5 -9
- data/spec/model/dataset_methods_spec.rb +5 -5
- data/spec/model/eager_loading_spec.rb +209 -235
- data/spec/model/hooks_spec.rb +15 -15
- data/spec/model/model_spec.rb +28 -21
- data/spec/model/plugins_spec.rb +4 -5
- data/spec/model/record_spec.rb +59 -57
- data/spec/model/spec_helper.rb +1 -1
- data/spec/model/validations_spec.rb +6 -6
- data/spec/spec_config.rb +1 -1
- metadata +10 -2
data/doc/testing.rdoc
CHANGED
@@ -156,9 +156,11 @@ SEQUEL_COLUMNS_INTROSPECTION :: Use the columns_introspection extension when run
|
|
156
156
|
SEQUEL_CONNECTION_VALIDATOR :: Use the connection validator extension when running the specs
|
157
157
|
SEQUEL_DUPLICATE_COLUMNS_HANDLER :: Use the duplicate columns handler extension with value given when running the specs
|
158
158
|
SEQUEL_ERROR_SQL :: Use the error_sql extension when running the specs
|
159
|
+
SEQUEL_FREEZE_DATASETS :: Use the freeze_datasets extension when running the specs
|
159
160
|
SEQUEL_NO_AUTO_LITERAL_STRINGS :: Use the no_auto_string_literals extension when running the specs
|
160
161
|
SEQUEL_NO_CACHE_ASSOCIATIONS :: Don't cache association metadata when running the specs
|
161
162
|
SEQUEL_NO_CHECK_SQLS :: Don't check for specific SQL syntax when running the specs
|
162
|
-
|
163
|
+
SEQUEL_NO_MANGLE :: Don't use the identifier_mangling extension when runnsing the specs
|
163
164
|
SEQUEL_NO_PENDING :: Don't skip any specs, try running all specs (note, can cause lockups for some adapters)
|
165
|
+
SEQUEL_NO_SPLIT_SYMBOLS :: Turn off symbol splitting when running the specs
|
164
166
|
SKIPPED_TEST_WARN :: Warn when skipping any tests because libraries aren't available
|
@@ -20,7 +20,6 @@ module Sequel
|
|
20
20
|
# Methods to add to Database instances that access PostgreSQL via
|
21
21
|
# DataObjects.
|
22
22
|
module DatabaseMethods
|
23
|
-
extend Sequel::Database::ResetIdentifierMangling
|
24
23
|
include Sequel::Postgres::DatabaseMethods
|
25
24
|
|
26
25
|
# Add the primary_keys and primary_key_sequences instance variables,
|
@@ -308,10 +308,8 @@ module Sequel
|
|
308
308
|
# dataset, since the DB2 metadata does not use
|
309
309
|
# boolean columns, and some smallint columns are
|
310
310
|
# accidently treated as booleans.
|
311
|
-
def
|
312
|
-
|
313
|
-
ds.convert_smallint_to_bool = false
|
314
|
-
ds
|
311
|
+
def _metadata_dataset
|
312
|
+
super.with_convert_smallint_to_bool(false)
|
315
313
|
end
|
316
314
|
|
317
315
|
# Format Numeric, Date, and Time types specially for use
|
@@ -359,31 +357,31 @@ module Sequel
|
|
359
357
|
# Extend given dataset with this module so subselects inside subselects in
|
360
358
|
# prepared statements work.
|
361
359
|
def subselect_sql_append(sql, ds)
|
362
|
-
ps = ds.to_prepared_statement(:select).
|
363
|
-
|
360
|
+
ps = ds.to_prepared_statement(:select).
|
361
|
+
clone(:append_sql=>sql, :prepared_args=>prepared_args).
|
362
|
+
with_extend(CallableStatementMethods)
|
364
363
|
ps = ps.bind(@opts[:bind_vars]) if @opts[:bind_vars]
|
365
|
-
ps.prepared_args = prepared_args
|
366
364
|
ps.prepared_sql
|
367
365
|
end
|
368
366
|
end
|
369
367
|
|
370
368
|
PreparedStatementMethods = prepared_statements_module(:prepare_bind, Sequel::Dataset::UnnumberedArgumentMapper)
|
371
369
|
|
372
|
-
#
|
373
|
-
def
|
374
|
-
|
375
|
-
ps.extend(CallableStatementMethods)
|
376
|
-
ps.call(bind_arguments, &block)
|
370
|
+
# Override the default IBMDB.convert_smallint_to_bool setting for this dataset.
|
371
|
+
def convert_smallint_to_bool=(v)
|
372
|
+
@opts[:convert_smallint_to_bool] = v
|
377
373
|
end
|
378
374
|
|
379
375
|
# Whether to convert smallint to boolean arguments for this dataset.
|
380
376
|
# Defaults to the IBMDB module setting.
|
381
377
|
def convert_smallint_to_bool
|
382
|
-
|
378
|
+
opts.has_key?(:convert_smallint_to_bool) ? opts[:convert_smallint_to_bool] : IBMDB.convert_smallint_to_bool
|
383
379
|
end
|
384
380
|
|
385
|
-
#
|
386
|
-
|
381
|
+
# Return a cloned dataset with the convert_smallint_to_bool option set.
|
382
|
+
def with_convert_smallint_to_bool(v)
|
383
|
+
clone(:convert_smallint_to_bool=>v)
|
384
|
+
end
|
387
385
|
|
388
386
|
# Fetch the rows from the database and yield plain hashes.
|
389
387
|
def fetch_rows(sql)
|
@@ -414,16 +412,14 @@ module Sequel
|
|
414
412
|
self
|
415
413
|
end
|
416
414
|
|
417
|
-
|
418
|
-
|
419
|
-
def
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
end
|
426
|
-
ps
|
415
|
+
private
|
416
|
+
|
417
|
+
def bound_variable_modules
|
418
|
+
[CallableStatementMethods]
|
419
|
+
end
|
420
|
+
|
421
|
+
def prepared_statement_modules
|
422
|
+
[PreparedStatementMethods]
|
427
423
|
end
|
428
424
|
end
|
429
425
|
end
|
data/lib/sequel/adapters/jdbc.rb
CHANGED
@@ -712,16 +712,16 @@ module Sequel
|
|
712
712
|
end
|
713
713
|
|
714
714
|
StoredProcedureMethods = prepared_statements_module(
|
715
|
-
"sql = @sproc_name; opts = Hash[opts]; opts[:args] = @sproc_args; opts[:sproc] = true",
|
715
|
+
"sql = @opts[:sproc_name]; opts = Hash[opts]; opts[:args] = @opts[:sproc_args]; opts[:sproc] = true",
|
716
716
|
Sequel::Dataset::StoredProcedureMethods,
|
717
717
|
%w"execute execute_dui") do
|
718
718
|
private
|
719
719
|
|
720
720
|
# Same as execute, explicit due to intricacies of alias and super.
|
721
721
|
def execute_insert(sql, opts=OPTS)
|
722
|
-
sql = @sproc_name
|
722
|
+
sql = @opts[:sproc_name]
|
723
723
|
opts = Hash[opts]
|
724
|
-
opts[:args] = @sproc_args
|
724
|
+
opts[:args] = @opts[:sproc_args]
|
725
725
|
opts[:sproc] = true
|
726
726
|
opts[:type] = :insert
|
727
727
|
super
|
@@ -739,18 +739,6 @@ module Sequel
|
|
739
739
|
self
|
740
740
|
end
|
741
741
|
|
742
|
-
# Create a named prepared statement that is stored in the
|
743
|
-
# database (and connection) for reuse.
|
744
|
-
def prepare(type, name=nil, *values)
|
745
|
-
ps = to_prepared_statement(type, values)
|
746
|
-
ps.extend(PreparedStatementMethods)
|
747
|
-
if name
|
748
|
-
ps.prepared_statement_name = name
|
749
|
-
db.set_prepared_statement(name, ps)
|
750
|
-
end
|
751
|
-
ps
|
752
|
-
end
|
753
|
-
|
754
742
|
# Set the fetch size on JDBC ResultSets created from this dataset.
|
755
743
|
def with_fetch_size(size)
|
756
744
|
clone(:fetch_size=>size)
|
@@ -766,7 +754,7 @@ module Sequel
|
|
766
754
|
|
767
755
|
# Extend the dataset with the JDBC stored procedure methods.
|
768
756
|
def prepare_extend_sproc(ds)
|
769
|
-
ds.
|
757
|
+
ds.with_extend(StoredProcedureMethods)
|
770
758
|
end
|
771
759
|
|
772
760
|
# The type conversion proc to use for the given column number i,
|
@@ -784,6 +772,10 @@ module Sequel
|
|
784
772
|
map[type]
|
785
773
|
end
|
786
774
|
|
775
|
+
def prepared_statement_modules
|
776
|
+
[PreparedStatementMethods]
|
777
|
+
end
|
778
|
+
|
787
779
|
# Split out from fetch rows to allow processing of JDBC result sets
|
788
780
|
# that don't come from issuing an SQL string.
|
789
781
|
def process_result_set(result)
|
@@ -18,7 +18,6 @@ module Sequel
|
|
18
18
|
module AS400
|
19
19
|
# Instance methods for AS400 Database objects accessed via JDBC.
|
20
20
|
module DatabaseMethods
|
21
|
-
extend Sequel::Database::ResetIdentifierMangling
|
22
21
|
include Sequel::JDBC::Transactions
|
23
22
|
|
24
23
|
TRANSACTION_BEGIN = 'Transaction.begin'.freeze
|
@@ -37,7 +37,6 @@ module Sequel
|
|
37
37
|
module DB2
|
38
38
|
# Database instance methods for DB2 databases accessed via JDBC.
|
39
39
|
module DatabaseMethods
|
40
|
-
extend Sequel::Database::ResetIdentifierMangling
|
41
40
|
PRIMARY_KEY_INDEX_RE = /\Asql\d+\z/i.freeze
|
42
41
|
|
43
42
|
include Sequel::DB2::DatabaseMethods
|
@@ -17,7 +17,6 @@ module Sequel
|
|
17
17
|
module Derby
|
18
18
|
# Instance methods for Derby Database objects accessed via JDBC.
|
19
19
|
module DatabaseMethods
|
20
|
-
extend Sequel::Database::ResetIdentifierMangling
|
21
20
|
PRIMARY_KEY_INDEX_RE = /\Asql\d+\z/i.freeze
|
22
21
|
|
23
22
|
include ::Sequel::JDBC::Transactions
|
@@ -19,7 +19,6 @@ module Sequel
|
|
19
19
|
module Firebird
|
20
20
|
# Database instance methods for Firebird databases accessed via JDBC.
|
21
21
|
module DatabaseMethods
|
22
|
-
extend Sequel::Database::ResetIdentifierMangling
|
23
22
|
include Sequel::Firebird::DatabaseMethods
|
24
23
|
include Sequel::JDBC::Transactions
|
25
24
|
|
@@ -16,7 +16,6 @@ module Sequel
|
|
16
16
|
module H2
|
17
17
|
# Instance methods for H2 Database objects accessed via JDBC.
|
18
18
|
module DatabaseMethods
|
19
|
-
extend Sequel::Database::ResetIdentifierMangling
|
20
19
|
PRIMARY_KEY_INDEX_RE = /\Aprimary_key/i.freeze
|
21
20
|
|
22
21
|
# Commit an existing prepared transaction with the given transaction
|
@@ -17,7 +17,6 @@ module Sequel
|
|
17
17
|
module HSQLDB
|
18
18
|
# Instance methods for HSQLDB Database objects accessed via JDBC.
|
19
19
|
module DatabaseMethods
|
20
|
-
extend Sequel::Database::ResetIdentifierMangling
|
21
20
|
PRIMARY_KEY_INDEX_RE = /\Asys_idx_sys_pk_/i.freeze
|
22
21
|
|
23
22
|
include ::Sequel::JDBC::Transactions
|
@@ -19,7 +19,6 @@ module Sequel
|
|
19
19
|
module Progress
|
20
20
|
# Database instance methods for Progress databases accessed via JDBC.
|
21
21
|
module DatabaseMethods
|
22
|
-
extend Sequel::Database::ResetIdentifierMangling
|
23
22
|
include Sequel::Progress::DatabaseMethods
|
24
23
|
include Sequel::JDBC::Transactions
|
25
24
|
|
@@ -9,7 +9,6 @@ module Sequel
|
|
9
9
|
module MSSQL
|
10
10
|
# Database instance methods for MSSQL databases accessed via JDBC.
|
11
11
|
module DatabaseMethods
|
12
|
-
extend Sequel::Database::ResetIdentifierMangling
|
13
12
|
PRIMARY_KEY_INDEX_RE = /\Apk__/i.freeze
|
14
13
|
ATAT_IDENTITY = 'SELECT @@IDENTITY'.freeze
|
15
14
|
SCOPE_IDENTITY = 'SELECT SCOPE_IDENTITY()'.freeze
|
@@ -18,7 +18,6 @@ module Sequel
|
|
18
18
|
module MySQL
|
19
19
|
# Database instance methods for MySQL databases accessed via JDBC.
|
20
20
|
module DatabaseMethods
|
21
|
-
extend Sequel::Database::ResetIdentifierMangling
|
22
21
|
include Sequel::MySQL::DatabaseMethods
|
23
22
|
LAST_INSERT_ID = 'SELECT LAST_INSERT_ID()'.freeze
|
24
23
|
|
@@ -33,7 +33,6 @@ module Sequel
|
|
33
33
|
module Oracle
|
34
34
|
# Instance methods for Oracle Database objects accessed via JDBC.
|
35
35
|
module DatabaseMethods
|
36
|
-
extend Sequel::Database::ResetIdentifierMangling
|
37
36
|
PRIMARY_KEY_INDEX_RE = /\Asys_/i.freeze
|
38
37
|
|
39
38
|
include Sequel::Oracle::DatabaseMethods
|
@@ -41,7 +41,6 @@ module Sequel
|
|
41
41
|
# Methods to add to Database instances that access PostgreSQL via
|
42
42
|
# JDBC.
|
43
43
|
module DatabaseMethods
|
44
|
-
extend Sequel::Database::ResetIdentifierMangling
|
45
44
|
include Sequel::Postgres::DatabaseMethods
|
46
45
|
|
47
46
|
# Add the primary_keys and primary_key_sequences instance variables,
|
@@ -189,18 +188,6 @@ module Sequel
|
|
189
188
|
include Sequel::Postgres::DatasetMethods
|
190
189
|
APOS = Dataset::APOS
|
191
190
|
|
192
|
-
# Add the shared PostgreSQL prepared statement methods
|
193
|
-
def prepare(type, name=nil, *values)
|
194
|
-
ps = to_prepared_statement(type, values)
|
195
|
-
ps.extend(JDBC::Dataset::PreparedStatementMethods)
|
196
|
-
ps.extend(::Sequel::Postgres::DatasetMethods::PreparedStatementMethods)
|
197
|
-
if name
|
198
|
-
ps.prepared_statement_name = name
|
199
|
-
db.set_prepared_statement(name, ps)
|
200
|
-
end
|
201
|
-
ps
|
202
|
-
end
|
203
|
-
|
204
191
|
private
|
205
192
|
|
206
193
|
# Literalize strings similar to the native postgres adapter
|
@@ -39,7 +39,6 @@ module Sequel
|
|
39
39
|
module SqlAnywhere
|
40
40
|
# Database instance methods for Sybase databases accessed via JDBC.
|
41
41
|
module DatabaseMethods
|
42
|
-
extend Sequel::Database::ResetIdentifierMangling
|
43
42
|
include Sequel::SqlAnywhere::DatabaseMethods
|
44
43
|
include Sequel::JDBC::Transactions
|
45
44
|
|
@@ -18,7 +18,6 @@ module Sequel
|
|
18
18
|
module SQLite
|
19
19
|
# Instance methods for SQLite Database objects accessed via JDBC.
|
20
20
|
module DatabaseMethods
|
21
|
-
extend Sequel::Database::ResetIdentifierMangling
|
22
21
|
include Sequel::SQLite::DatabaseMethods
|
23
22
|
LAST_INSERT_ROWID = 'SELECT last_insert_rowid()'.freeze
|
24
23
|
FOREIGN_KEY_ERROR_RE = /query does not return ResultSet/.freeze
|
@@ -19,7 +19,6 @@ module Sequel
|
|
19
19
|
module SQLServer
|
20
20
|
# Database instance methods for SQLServer databases accessed via JDBC.
|
21
21
|
module DatabaseMethods
|
22
|
-
extend Sequel::Database::ResetIdentifierMangling
|
23
22
|
include Sequel::JDBC::MSSQL::DatabaseMethods
|
24
23
|
|
25
24
|
# Work around a bug in SQL Server JDBC Driver 3.0, where the metadata
|
@@ -48,12 +47,12 @@ module Sequel
|
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
51
|
-
|
50
|
+
private
|
51
|
+
|
52
|
+
def _metadata_dataset
|
52
53
|
super.extend(MetadataDatasetMethods)
|
53
54
|
end
|
54
55
|
|
55
|
-
private
|
56
|
-
|
57
56
|
def disconnect_error?(exception, opts)
|
58
57
|
super || (exception.message =~ /connection is closed/)
|
59
58
|
end
|
data/lib/sequel/adapters/mock.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
|
+
Sequel.require 'adapters/utils/unmodified_identifiers'
|
4
|
+
|
3
5
|
module Sequel
|
4
6
|
module Mock
|
5
7
|
# Connection class for Sequel's mock adapter.
|
@@ -134,7 +136,7 @@ module Sequel
|
|
134
136
|
case v
|
135
137
|
when Integer
|
136
138
|
if ds
|
137
|
-
ds.autoid
|
139
|
+
ds.send(:cache_set, :_autoid, ds.autoid + 1) if ds.autoid.is_a?(Integer)
|
138
140
|
else
|
139
141
|
@autoid += 1
|
140
142
|
end
|
@@ -259,6 +261,11 @@ module Sequel
|
|
259
261
|
end
|
260
262
|
end
|
261
263
|
|
264
|
+
unless @shared_adapter
|
265
|
+
extend UnmodifiedIdentifiers::DatabaseMethods
|
266
|
+
extend_datasets UnmodifiedIdentifiers::DatasetMethods
|
267
|
+
end
|
268
|
+
|
262
269
|
self.autoid = opts[:autoid]
|
263
270
|
self.columns = opts[:columns]
|
264
271
|
self.fetch = opts[:fetch]
|
@@ -290,14 +297,6 @@ module Sequel
|
|
290
297
|
shared_adapter? ? super : false
|
291
298
|
end
|
292
299
|
|
293
|
-
def identifier_input_method_default
|
294
|
-
shared_adapter? ? super : nil
|
295
|
-
end
|
296
|
-
|
297
|
-
def identifier_output_method_default
|
298
|
-
shared_adapter? ? super : nil
|
299
|
-
end
|
300
|
-
|
301
300
|
def shared_adapter?
|
302
301
|
@shared_adapter
|
303
302
|
end
|
@@ -306,14 +305,38 @@ module Sequel
|
|
306
305
|
class Dataset < Sequel::Dataset
|
307
306
|
Database::DatasetClass = self
|
308
307
|
|
308
|
+
# The autoid setting for this dataset, if it has been overridden
|
309
|
+
def autoid
|
310
|
+
cache_get(:_autoid) || @opts[:autoid]
|
311
|
+
end
|
312
|
+
|
309
313
|
# Override the databases's autoid setting for this dataset
|
310
|
-
|
314
|
+
def autoid=(v)
|
315
|
+
cache_set(:_autoid, nil)
|
316
|
+
@opts[:autoid] = v
|
317
|
+
end
|
318
|
+
|
319
|
+
# The fetch setting for this dataset, if it has been overridden
|
320
|
+
def _fetch
|
321
|
+
cache_get(:_fetch) || @opts[:fetch]
|
322
|
+
end
|
311
323
|
|
312
324
|
# Override the databases's fetch setting for this dataset
|
313
|
-
|
325
|
+
def _fetch=(v)
|
326
|
+
cache_set(:_fetch, nil)
|
327
|
+
@opts[:fetch] = v
|
328
|
+
end
|
329
|
+
|
330
|
+
# The numrows setting for this dataset, if it has been overridden
|
331
|
+
def numrows
|
332
|
+
cache_get(:_numrows) || @opts[:numrows]
|
333
|
+
end
|
314
334
|
|
315
335
|
# Override the databases's numrows setting for this dataset
|
316
|
-
|
336
|
+
def numrows=(v)
|
337
|
+
cache_set(:_numrows, nil)
|
338
|
+
@opts[:numrows] = v
|
339
|
+
end
|
317
340
|
|
318
341
|
# If arguments are provided, use them to set the columns
|
319
342
|
# for this dataset and return self. Otherwise, use the
|
@@ -331,6 +354,25 @@ module Sequel
|
|
331
354
|
execute(sql, &block)
|
332
355
|
end
|
333
356
|
|
357
|
+
def quote_identifiers?
|
358
|
+
@opts.fetch(:quote_identifiers, db.send(:quote_identifiers_default))
|
359
|
+
end
|
360
|
+
|
361
|
+
# Return cloned dataset with the autoid setting modified
|
362
|
+
def with_autoid(autoid)
|
363
|
+
clone(:autoid=>autoid)
|
364
|
+
end
|
365
|
+
|
366
|
+
# Return cloned dataset with the fetch setting modified
|
367
|
+
def with_fetch(fetch)
|
368
|
+
clone(:fetch=>fetch)
|
369
|
+
end
|
370
|
+
|
371
|
+
# Return cloned dataset with the numrows setting modified
|
372
|
+
def with_numrows(numrows)
|
373
|
+
clone(:numrows=>numrows)
|
374
|
+
end
|
375
|
+
|
334
376
|
private
|
335
377
|
|
336
378
|
def execute(sql, opts=OPTS, &block)
|