sequel 4.44.0 → 4.45.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|