sequel 4.41.0 → 4.42.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 +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)
|