sequel 4.44.0 → 4.45.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 +110 -0
- data/README.rdoc +8 -9
- data/doc/active_record.rdoc +2 -3
- data/doc/model_plugins.rdoc +1 -1
- data/doc/opening_databases.rdoc +0 -46
- data/doc/release_notes/4.45.0.txt +370 -0
- data/lib/sequel/adapters/cubrid.rb +2 -0
- data/lib/sequel/adapters/do.rb +2 -0
- data/lib/sequel/adapters/jdbc/as400.rb +2 -0
- data/lib/sequel/adapters/jdbc/cubrid.rb +2 -0
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +2 -0
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +2 -0
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +2 -0
- data/lib/sequel/adapters/jdbc/mysql.rb +1 -0
- data/lib/sequel/adapters/jdbc/postgresql.rb +5 -0
- data/lib/sequel/adapters/mysql.rb +1 -0
- data/lib/sequel/adapters/mysql2.rb +1 -0
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/odbc/progress.rb +2 -0
- data/lib/sequel/adapters/postgres.rb +0 -2
- data/lib/sequel/adapters/shared/cubrid.rb +2 -0
- data/lib/sequel/adapters/shared/firebird.rb +2 -0
- data/lib/sequel/adapters/shared/informix.rb +2 -0
- data/lib/sequel/adapters/shared/mssql.rb +47 -7
- data/lib/sequel/adapters/shared/mysql.rb +16 -1
- data/lib/sequel/adapters/shared/postgres.rb +9 -1
- data/lib/sequel/adapters/shared/progress.rb +2 -0
- data/lib/sequel/adapters/shared/sqlanywhere.rb +1 -1
- data/lib/sequel/adapters/swift.rb +2 -0
- data/lib/sequel/ast_transformer.rb +13 -6
- data/lib/sequel/core.rb +13 -16
- data/lib/sequel/database/connecting.rb +25 -10
- data/lib/sequel/database/dataset.rb +6 -1
- data/lib/sequel/database/dataset_defaults.rb +9 -2
- data/lib/sequel/database/misc.rb +10 -3
- data/lib/sequel/database/schema_methods.rb +4 -0
- data/lib/sequel/dataset/mutation.rb +8 -20
- data/lib/sequel/dataset/prepared_statements.rb +2 -0
- data/lib/sequel/dataset/query.rb +32 -7
- data/lib/sequel/dataset/sql.rb +13 -3
- data/lib/sequel/deprecated.rb +9 -1
- data/lib/sequel/exceptions.rb +37 -8
- data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +117 -0
- data/lib/sequel/extensions/date_arithmetic.rb +1 -0
- data/lib/sequel/extensions/identifier_mangling.rb +3 -2
- data/lib/sequel/extensions/pg_hstore.rb +1 -5
- data/lib/sequel/extensions/schema_dumper.rb +3 -1
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +2 -2
- data/lib/sequel/extensions/string_agg.rb +1 -0
- data/lib/sequel/model.rb +23 -10
- data/lib/sequel/model/associations.rb +17 -5
- data/lib/sequel/model/base.rb +115 -62
- data/lib/sequel/model/dataset_module.rb +10 -3
- data/lib/sequel/model/exceptions.rb +7 -5
- data/lib/sequel/plugins/association_pks.rb +13 -1
- data/lib/sequel/plugins/association_proxies.rb +8 -1
- data/lib/sequel/plugins/before_after_save.rb +1 -0
- data/lib/sequel/plugins/class_table_inheritance.rb +7 -3
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +10 -5
- data/lib/sequel/plugins/error_splitter.rb +1 -1
- data/lib/sequel/plugins/hook_class_methods.rb +39 -5
- data/lib/sequel/plugins/instance_hooks.rb +58 -5
- data/lib/sequel/plugins/lazy_attributes.rb +10 -5
- data/lib/sequel/plugins/nested_attributes.rb +10 -5
- data/lib/sequel/plugins/prepared_statements.rb +7 -0
- data/lib/sequel/plugins/prepared_statements_associations.rb +2 -0
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +2 -0
- data/lib/sequel/plugins/schema.rb +2 -0
- data/lib/sequel/plugins/scissors.rb +2 -0
- data/lib/sequel/plugins/serialization.rb +10 -5
- data/lib/sequel/plugins/split_values.rb +5 -1
- data/lib/sequel/plugins/static_cache.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +1 -1
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +1 -0
- data/lib/sequel/sql.rb +1 -1
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/mssql_spec.rb +31 -0
- data/spec/adapters/mysql_spec.rb +20 -2
- data/spec/adapters/postgres_spec.rb +43 -12
- data/spec/adapters/spec_helper.rb +5 -8
- data/spec/core/database_spec.rb +47 -12
- data/spec/core/dataset_mutation_spec.rb +22 -22
- data/spec/core/dataset_spec.rb +88 -20
- data/spec/core/deprecated_spec.rb +1 -1
- data/spec/core/expression_filters_spec.rb +1 -1
- data/spec/core/mock_adapter_spec.rb +0 -3
- data/spec/core/placeholder_literalizer_spec.rb +1 -1
- data/spec/core/schema_spec.rb +8 -1
- data/spec/core/spec_helper.rb +6 -1
- data/spec/core_extensions_spec.rb +4 -0
- data/spec/deprecation_helper.rb +17 -0
- data/spec/extensions/_deprecated_identifier_mangling_spec.rb +314 -0
- data/spec/extensions/association_pks_spec.rb +61 -13
- data/spec/extensions/association_proxies_spec.rb +3 -3
- data/spec/extensions/class_table_inheritance_spec.rb +39 -0
- data/spec/extensions/columns_updated_spec.rb +35 -0
- data/spec/extensions/composition_spec.rb +6 -1
- data/spec/extensions/hook_class_methods_spec.rb +114 -26
- data/spec/extensions/identifier_mangling_spec.rb +107 -73
- data/spec/extensions/instance_hooks_spec.rb +78 -14
- data/spec/extensions/lazy_attributes_spec.rb +8 -2
- data/spec/extensions/many_through_many_spec.rb +2 -2
- data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
- data/spec/extensions/nested_attributes_spec.rb +8 -2
- data/spec/extensions/pg_array_spec.rb +18 -4
- data/spec/extensions/prepared_statements_associations_spec.rb +48 -39
- data/spec/extensions/prepared_statements_with_pk_spec.rb +13 -11
- data/spec/extensions/query_spec.rb +1 -1
- data/spec/extensions/schema_dumper_spec.rb +34 -6
- data/spec/extensions/schema_spec.rb +13 -7
- data/spec/extensions/scissors_spec.rb +3 -1
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +4 -4
- data/spec/extensions/serialization_spec.rb +7 -1
- data/spec/extensions/set_overrides_spec.rb +2 -2
- data/spec/extensions/shared_caching_spec.rb +19 -15
- data/spec/extensions/spec_helper.rb +7 -3
- data/spec/extensions/split_values_spec.rb +45 -10
- data/spec/extensions/string_agg_spec.rb +2 -2
- data/spec/extensions/subset_conditions_spec.rb +3 -3
- data/spec/extensions/tactical_eager_loading_spec.rb +1 -1
- data/spec/extensions/validation_contexts_spec.rb +31 -0
- data/spec/guards_helper.rb +2 -0
- data/spec/integration/associations_test.rb +22 -20
- data/spec/integration/dataset_test.rb +25 -2
- data/spec/integration/model_test.rb +1 -1
- data/spec/integration/plugin_test.rb +11 -16
- data/spec/integration/prepared_statement_test.rb +40 -32
- data/spec/integration/spec_helper.rb +5 -8
- data/spec/model/association_reflection_spec.rb +4 -0
- data/spec/model/associations_spec.rb +37 -10
- data/spec/model/base_spec.rb +6 -0
- data/spec/model/hooks_spec.rb +56 -35
- data/spec/model/model_spec.rb +21 -5
- data/spec/model/record_spec.rb +14 -11
- data/spec/model/spec_helper.rb +7 -1
- data/spec/sequel_warning.rb +11 -0
- metadata +13 -3
data/lib/sequel/adapters/do.rb
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
|
+
Sequel::Deprecation.deprecate("The jdbc/as400 adapter", "Please consider maintaining it yourself as an external gem if you want to continue using it")
|
|
4
|
+
|
|
3
5
|
Sequel::JDBC.load_driver('com.ibm.as400.access.AS400JDBCDriver')
|
|
4
6
|
Sequel.require 'adapters/jdbc/transactions'
|
|
5
7
|
Sequel.require 'adapters/utils/emulate_offset_with_row_number'
|
|
@@ -27,6 +27,7 @@ module Sequel
|
|
|
27
27
|
# of the connection string, since the JDBC does no parsing on the
|
|
28
28
|
# given connection string by default.
|
|
29
29
|
def database_name
|
|
30
|
+
Sequel::Deprecation.deprecate("Database#database_name", "Instead, use .get{DATABASE{}}")
|
|
30
31
|
u = URI.parse(uri.sub(/\Ajdbc:/, ''))
|
|
31
32
|
(m = /\/(.*)/.match(u.path)) && m[1]
|
|
32
33
|
end
|
|
@@ -195,6 +195,11 @@ module Sequel
|
|
|
195
195
|
sql << APOS << db.synchronize(@opts[:server]){|c| c.escape_string(v)} << APOS
|
|
196
196
|
end
|
|
197
197
|
|
|
198
|
+
# SQL fragment for Sequel::SQLTime, containing just the time part
|
|
199
|
+
def literal_sqltime(v)
|
|
200
|
+
v.strftime("'%H:%M:%S#{sprintf(".%03d", (v.usec/1000.0).round)}'")
|
|
201
|
+
end
|
|
202
|
+
|
|
198
203
|
STRING_TYPE = Java::JavaSQL::Types::VARCHAR
|
|
199
204
|
ARRAY_TYPE = Java::JavaSQL::Types::ARRAY
|
|
200
205
|
PG_SPECIFIC_TYPES = [ARRAY_TYPE, Java::JavaSQL::Types::OTHER, Java::JavaSQL::Types::STRUCT]
|
|
@@ -282,6 +282,7 @@ module Sequel
|
|
|
282
282
|
# The database name when using the native adapter is always stored in
|
|
283
283
|
# the :database option.
|
|
284
284
|
def database_name
|
|
285
|
+
Sequel::Deprecation.deprecate("Database#database_name", "Instead, use .get{DATABASE{}}")
|
|
285
286
|
@opts[:database]
|
|
286
287
|
end
|
|
287
288
|
|
|
@@ -218,6 +218,7 @@ module Sequel
|
|
|
218
218
|
# The database name when using the native adapter is always stored in
|
|
219
219
|
# the :database option.
|
|
220
220
|
def database_name
|
|
221
|
+
Sequel::Deprecation.deprecate("Database#database_name", "Instead, use .get{DATABASE{}}")
|
|
221
222
|
@opts[:database]
|
|
222
223
|
end
|
|
223
224
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
Sequel.require 'adapters/shared/oracle'
|
|
4
|
+
|
|
5
|
+
Sequel.synchronize do
|
|
6
|
+
Sequel::ODBC::DATABASE_SETUP[:oracle] = proc do |db|
|
|
7
|
+
db.extend ::Sequel::Oracle::DatabaseMethods
|
|
8
|
+
db.extend_datasets ::Sequel::Oracle::DatasetMethods
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
@@ -141,8 +141,6 @@ module Sequel
|
|
|
141
141
|
# errors.
|
|
142
142
|
DISCONNECT_ERROR_RE = /\A#{Regexp.union(disconnect_errors)}/
|
|
143
143
|
|
|
144
|
-
self.translate_results = false if respond_to?(:translate_results=)
|
|
145
|
-
|
|
146
144
|
# Hash of prepared statements for this connection. Keys are
|
|
147
145
|
# string names of the server side prepared statement, and values
|
|
148
146
|
# are SQL strings.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
|
+
Sequel::Deprecation.deprecate("Sequel support for Cubrid", "Please consider maintaining it yourself as an external sequel adapter if you want to continue using it")
|
|
4
|
+
|
|
3
5
|
Sequel.require %w'split_alter_table unmodified_identifiers', 'adapters/utils'
|
|
4
6
|
|
|
5
7
|
module Sequel
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
|
+
Sequel::Deprecation.deprecate("Sequel support for Firebird", "Please consider maintaining it yourself as an external sequel adapter if you want to continue using it")
|
|
4
|
+
|
|
3
5
|
module Sequel
|
|
4
6
|
module Firebird
|
|
5
7
|
Sequel::Database.set_shared_adapter_scheme(:firebird, self)
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
|
+
Sequel::Deprecation.deprecate("Sequel support for Informix", "Please consider maintaining it yourself as an external sequel adapter if you want to continue using it")
|
|
4
|
+
|
|
3
5
|
module Sequel
|
|
4
6
|
module Informix
|
|
5
7
|
Sequel::Database.set_shared_adapter_scheme(:informix, self)
|
|
@@ -525,7 +525,7 @@ module Sequel
|
|
|
525
525
|
|
|
526
526
|
module DatasetMethods
|
|
527
527
|
include(Module.new do
|
|
528
|
-
Dataset.def_sql_method(self, :select, %w'with select distinct limit columns into from lock join where group having order
|
|
528
|
+
Dataset.def_sql_method(self, :select, %w'with select distinct limit columns into from lock join where group having compounds order')
|
|
529
529
|
end)
|
|
530
530
|
include EmulateOffsetWithRowNumber
|
|
531
531
|
|
|
@@ -576,9 +576,10 @@ module Sequel
|
|
|
576
576
|
FETCH_NEXT = " FETCH NEXT ".freeze
|
|
577
577
|
|
|
578
578
|
NON_SQL_OPTIONS = (Dataset::NON_SQL_OPTIONS + [:disable_insert_output, :mssql_unicode_strings]).freeze
|
|
579
|
+
LIMIT_ALL = Object.new.freeze
|
|
579
580
|
|
|
580
581
|
Dataset.def_mutation_method(:disable_insert_output, :output, :module=>self)
|
|
581
|
-
Dataset.def_sql_method(self, :delete, %w'with delete from output from2 where')
|
|
582
|
+
Dataset.def_sql_method(self, :delete, %w'with delete limit from output from2 where')
|
|
582
583
|
Dataset.def_sql_method(self, :insert, %w'with insert into columns output values')
|
|
583
584
|
Dataset.def_sql_method(self, :update, [['if is_2005_or_later?', %w'with update limit table set output from where'], ['else', %w'update table set output from where']])
|
|
584
585
|
|
|
@@ -847,8 +848,34 @@ module Sequel
|
|
|
847
848
|
(options_overlap(Sequel::Dataset::COUNT_FROM_SELF_OPTS) && !options_overlap([:limit])) ? unordered.from_self : super
|
|
848
849
|
end
|
|
849
850
|
|
|
851
|
+
# If the dataset using a order without a limit or offset or custom SQL,
|
|
852
|
+
# remove the order. Compounds on Microsoft SQL Server have undefined
|
|
853
|
+
# order unless the result is specifically ordered. Applying the current
|
|
854
|
+
# order before the compound doesn't work in all cases, such as when
|
|
855
|
+
# qualified identifiers are used. If you want to ensure a order
|
|
856
|
+
# for a compound dataset, apply the order after all compounds have been
|
|
857
|
+
# added.
|
|
858
|
+
def compound_from_self
|
|
859
|
+
if @opts[:offset] && !@opts[:limit] && !is_2012_or_later?
|
|
860
|
+
clone(:limit=>LIMIT_ALL).from_self
|
|
861
|
+
elsif @opts[:order] && !(@opts[:sql] || @opts[:limit] || @opts[:offset])
|
|
862
|
+
unordered
|
|
863
|
+
else
|
|
864
|
+
super
|
|
865
|
+
end
|
|
866
|
+
end
|
|
867
|
+
|
|
850
868
|
private
|
|
851
869
|
|
|
870
|
+
# Allow update and delete for unordered, limited datasets only.
|
|
871
|
+
def check_not_limited!(type)
|
|
872
|
+
return if @opts[:skip_limit_check] && type != :truncate
|
|
873
|
+
#SEQUEL5
|
|
874
|
+
#raise Sequel::InvalidOperation, "Dataset##{type} not suppored on ordered, limited datasets" if opts[:order] && opts[:limit]
|
|
875
|
+
Sequel::Deprecation.deprecate("Dataset##{type} on ordered, limited datasets", "Call unlimited to not use a limit, or unordered to not use an order, or skip_limit_check to ignore the limit") if @opts[:order] && @opts[:limit]
|
|
876
|
+
super if type == :truncate || @opts[:offset]
|
|
877
|
+
end
|
|
878
|
+
|
|
852
879
|
# Whether we are using SQL Server 2005 or later.
|
|
853
880
|
def is_2005_or_later?
|
|
854
881
|
server_version >= 9000000
|
|
@@ -986,18 +1013,31 @@ module Sequel
|
|
|
986
1013
|
def select_limit_sql(sql)
|
|
987
1014
|
if l = @opts[:limit]
|
|
988
1015
|
return if is_2012_or_later? && @opts[:order] && @opts[:offset]
|
|
1016
|
+
shared_limit_sql(sql, l)
|
|
1017
|
+
end
|
|
1018
|
+
end
|
|
989
1019
|
|
|
990
|
-
|
|
1020
|
+
def shared_limit_sql(sql, l)
|
|
1021
|
+
if is_2005_or_later?
|
|
1022
|
+
if l == LIMIT_ALL
|
|
1023
|
+
sql << " TOP (100) PERCENT"
|
|
1024
|
+
else
|
|
991
1025
|
sql << TOP_PAREN
|
|
992
1026
|
literal_append(sql, l)
|
|
993
1027
|
sql << PAREN_CLOSE
|
|
994
|
-
else
|
|
995
|
-
sql << TOP
|
|
996
|
-
literal_append(sql, l)
|
|
997
1028
|
end
|
|
1029
|
+
else
|
|
1030
|
+
sql << TOP
|
|
1031
|
+
literal_append(sql, l)
|
|
1032
|
+
end
|
|
1033
|
+
end
|
|
1034
|
+
|
|
1035
|
+
def update_limit_sql(sql)
|
|
1036
|
+
if l = @opts[:limit]
|
|
1037
|
+
shared_limit_sql(sql, l)
|
|
998
1038
|
end
|
|
999
1039
|
end
|
|
1000
|
-
alias update_limit_sql
|
|
1040
|
+
alias delete_limit_sql update_limit_sql
|
|
1001
1041
|
|
|
1002
1042
|
# Support different types of locking styles
|
|
1003
1043
|
def select_lock_sql(sql)
|
|
@@ -110,7 +110,16 @@ module Sequel
|
|
|
110
110
|
remove_indexes = []
|
|
111
111
|
m = output_identifier_meth
|
|
112
112
|
im = input_identifier_meth
|
|
113
|
-
|
|
113
|
+
schema, table = schema_and_table(table)
|
|
114
|
+
|
|
115
|
+
table = Sequel::SQL::Identifier.new(table)
|
|
116
|
+
sql = "SHOW INDEX FROM #{literal(table)}"
|
|
117
|
+
if schema
|
|
118
|
+
schema = Sequel::SQL::Identifier.new(schema)
|
|
119
|
+
sql += " FROM #{literal(schema)}"
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
metadata_dataset.with_sql(sql).each do |r|
|
|
114
123
|
name = r[:Key_name]
|
|
115
124
|
next if name == PRIMARY
|
|
116
125
|
name = m.call(name)
|
|
@@ -181,6 +190,7 @@ module Sequel
|
|
|
181
190
|
# Changes the database in use by issuing a USE statement. I would be
|
|
182
191
|
# very careful if I used this.
|
|
183
192
|
def use(db_name)
|
|
193
|
+
Sequel::Deprecation.deprecate("Database#use", "Create a new Sequel::Database instance instead of using Database#use")
|
|
184
194
|
disconnect
|
|
185
195
|
@opts[:database] = db_name if self << "USE #{db_name}"
|
|
186
196
|
@schemas = {}
|
|
@@ -862,6 +872,11 @@ module Sequel
|
|
|
862
872
|
|
|
863
873
|
private
|
|
864
874
|
|
|
875
|
+
# Allow update and delete for limited datasets, unless there is an offset.
|
|
876
|
+
def check_not_limited!(type)
|
|
877
|
+
super if type == :truncate || @opts[:offset]
|
|
878
|
+
end
|
|
879
|
+
|
|
865
880
|
# Consider the first table in the joined dataset is the table to delete
|
|
866
881
|
# from, but include the others for the purposes of selecting rows.
|
|
867
882
|
def delete_from_sql(sql)
|
|
@@ -182,7 +182,12 @@ module Sequel
|
|
|
182
182
|
# a block is given, it is used as the conversion proc, otherwise
|
|
183
183
|
# the conversion proc is looked up in the PG_NAMED_TYPES hash.
|
|
184
184
|
def add_named_conversion_proc(name, &block)
|
|
185
|
-
|
|
185
|
+
unless block
|
|
186
|
+
if block = PG_NAMED_TYPES[name]
|
|
187
|
+
Sequel::Deprecation.deprecate("Sequel::PG_NAMED_TYPES", "Call Database#add_named_conversion_proc directly for each database you want to support the #{name} type")
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
add_named_conversion_procs(conversion_procs, name=>block)
|
|
186
191
|
end
|
|
187
192
|
|
|
188
193
|
# Commit an existing prepared transaction with the given transaction
|
|
@@ -1009,6 +1014,9 @@ module Sequel
|
|
|
1009
1014
|
def get_conversion_procs
|
|
1010
1015
|
procs = PG_TYPES.dup
|
|
1011
1016
|
procs[1184] = procs[1114] = method(:to_application_timestamp)
|
|
1017
|
+
unless PG_NAMED_TYPES.empty?
|
|
1018
|
+
Sequel::Deprecation.deprecate("Sequel::PG_NAMED_TYPES", "Call Database#add_named_conversion_proc directly for each Database instance where you want to support the following type(s): #{PG_NAMED_TYPES.keys.join(', ')}")
|
|
1019
|
+
end
|
|
1012
1020
|
add_named_conversion_procs(procs, PG_NAMED_TYPES)
|
|
1013
1021
|
procs
|
|
1014
1022
|
end
|
|
@@ -289,7 +289,7 @@ module Sequel
|
|
|
289
289
|
ONLY_OFFSET = " TOP 2147483647".freeze
|
|
290
290
|
|
|
291
291
|
Dataset.def_sql_method(self, :insert, %w'with insert into columns values')
|
|
292
|
-
Dataset.def_sql_method(self, :select, %w'with select distinct limit columns into from join where group having order
|
|
292
|
+
Dataset.def_sql_method(self, :select, %w'with select distinct limit columns into from join where group having compounds order lock')
|
|
293
293
|
|
|
294
294
|
# Whether to convert smallint to boolean arguments for this dataset.
|
|
295
295
|
# Defaults to the SqlAnywhere module setting.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
|
+
Sequel::Deprecation.deprecate("The swift adapter", "Please consider maintaining it yourself as an external gem if you want to continue using it")
|
|
4
|
+
|
|
3
5
|
module Sequel
|
|
4
6
|
# Module holding the Swift DB support for Sequel. Swift DB is a
|
|
5
7
|
# collection of drivers used in Swift ORM.
|
|
@@ -89,11 +89,16 @@ module Sequel
|
|
|
89
89
|
# Handles qualifying existing datasets, so that unqualified columns
|
|
90
90
|
# in the dataset are qualified with a given table name.
|
|
91
91
|
class Qualifier < ASTTransformer
|
|
92
|
-
#
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
92
|
+
# Set the table used to qualify unqualified columns
|
|
93
|
+
def initialize(table, unused=nil)
|
|
94
|
+
if unused
|
|
95
|
+
# :nocov:
|
|
96
|
+
Sequel::Deprecation.deprecate("Passing two arguments to Sequel::Qualifier.new", 'Pass only the second arguument specifying the table used for qualification')
|
|
97
|
+
@table = unused
|
|
98
|
+
# :nocov:
|
|
99
|
+
else
|
|
100
|
+
@table = table
|
|
101
|
+
end
|
|
97
102
|
end
|
|
98
103
|
|
|
99
104
|
private
|
|
@@ -105,7 +110,7 @@ module Sequel
|
|
|
105
110
|
def v(o)
|
|
106
111
|
case o
|
|
107
112
|
when Symbol
|
|
108
|
-
t, column, aliaz =
|
|
113
|
+
t, column, aliaz = Sequel.split_symbol(o)
|
|
109
114
|
if t
|
|
110
115
|
o
|
|
111
116
|
elsif aliaz
|
|
@@ -160,6 +165,7 @@ module Sequel
|
|
|
160
165
|
|
|
161
166
|
# Intialize an empty +binds+ hash.
|
|
162
167
|
def initialize
|
|
168
|
+
Sequel::Deprecation.deprecate("Sequel::Unbinder", 'There is no replacement')
|
|
163
169
|
@binds = {}
|
|
164
170
|
end
|
|
165
171
|
|
|
@@ -205,4 +211,5 @@ module Sequel
|
|
|
205
211
|
end
|
|
206
212
|
end
|
|
207
213
|
end
|
|
214
|
+
Sequel::Deprecation.deprecate_constant(self, :Unbinder)
|
|
208
215
|
end
|
data/lib/sequel/core.rb
CHANGED
|
@@ -25,8 +25,6 @@ module Sequel
|
|
|
25
25
|
@convert_two_digit_years = true
|
|
26
26
|
@datetime_class = Time
|
|
27
27
|
@split_symbols = true
|
|
28
|
-
|
|
29
|
-
# Whether Sequel is being run in single threaded mode
|
|
30
28
|
@single_threaded = false
|
|
31
29
|
|
|
32
30
|
class << self
|
|
@@ -51,6 +49,15 @@ module Sequel
|
|
|
51
49
|
# they often implement them differently (e.g. + using seconds on +Time+ and
|
|
52
50
|
# days on +DateTime+).
|
|
53
51
|
attr_accessor :datetime_class
|
|
52
|
+
|
|
53
|
+
# Set whether sequel is being used in single threaded mode. by default,
|
|
54
|
+
# Sequel uses a thread-safe connection pool, which isn't as fast as the
|
|
55
|
+
# single threaded connection pool, and also has some additional thread
|
|
56
|
+
# safety checks. If your program will only have one thread,
|
|
57
|
+
# and speed is a priority, you should set this to true:
|
|
58
|
+
#
|
|
59
|
+
# Sequel.single_threaded = true
|
|
60
|
+
attr_accessor :single_threaded
|
|
54
61
|
end
|
|
55
62
|
|
|
56
63
|
# Returns true if the passed object could be a specifier of conditions, false otherwise.
|
|
@@ -152,6 +159,7 @@ module Sequel
|
|
|
152
159
|
#
|
|
153
160
|
# Other String instance methods work as well.
|
|
154
161
|
def self.identifier_input_method=(value)
|
|
162
|
+
# SEQUEL5: Remove
|
|
155
163
|
Database.identifier_input_method = value
|
|
156
164
|
end
|
|
157
165
|
|
|
@@ -168,6 +176,7 @@ module Sequel
|
|
|
168
176
|
#
|
|
169
177
|
# Other String instance methods work as well.
|
|
170
178
|
def self.identifier_output_method=(value)
|
|
179
|
+
# SEQUEL5: Remove
|
|
171
180
|
Database.identifier_output_method = value
|
|
172
181
|
end
|
|
173
182
|
|
|
@@ -194,6 +203,7 @@ module Sequel
|
|
|
194
203
|
#
|
|
195
204
|
# Sequel.quote_identifiers = false
|
|
196
205
|
def self.quote_identifiers=(value)
|
|
206
|
+
# SEQUEL5: Remove
|
|
197
207
|
Database.quote_identifiers = value
|
|
198
208
|
end
|
|
199
209
|
|
|
@@ -218,18 +228,6 @@ module Sequel
|
|
|
218
228
|
Array(files).each{|f| super("#{File.dirname(__FILE__).untaint}/#{"#{subdir}/" if subdir}#{f}")}
|
|
219
229
|
end
|
|
220
230
|
|
|
221
|
-
# Set whether Sequel is being used in single threaded mode. By default,
|
|
222
|
-
# Sequel uses a thread-safe connection pool, which isn't as fast as the
|
|
223
|
-
# single threaded connection pool, and also has some additional thread
|
|
224
|
-
# safety checks. If your program will only have one thread,
|
|
225
|
-
# and speed is a priority, you should set this to true:
|
|
226
|
-
#
|
|
227
|
-
# Sequel.single_threaded = true
|
|
228
|
-
def self.single_threaded=(value)
|
|
229
|
-
@single_threaded = value
|
|
230
|
-
Database.single_threaded = value
|
|
231
|
-
end
|
|
232
|
-
|
|
233
231
|
COLUMN_REF_RE1 = /\A((?:(?!__).)+)__((?:(?!___).)+)___(.+)\z/.freeze
|
|
234
232
|
COLUMN_REF_RE2 = /\A((?:(?!___).)+)___(.+)\z/.freeze
|
|
235
233
|
COLUMN_REF_RE3 = /\A((?:(?!__).)+)__(.+)\z/.freeze
|
|
@@ -358,14 +356,13 @@ module Sequel
|
|
|
358
356
|
|
|
359
357
|
# Uses a transaction on all given databases with the given options. This:
|
|
360
358
|
#
|
|
361
|
-
# Sequel.transaction([DB1, DB2, DB3]){
|
|
359
|
+
# Sequel.transaction([DB1, DB2, DB3]){}
|
|
362
360
|
#
|
|
363
361
|
# is equivalent to:
|
|
364
362
|
#
|
|
365
363
|
# DB1.transaction do
|
|
366
364
|
# DB2.transaction do
|
|
367
365
|
# DB3.transaction do
|
|
368
|
-
# ...
|
|
369
366
|
# end
|
|
370
367
|
# end
|
|
371
368
|
# end
|