sequel 3.47.0 → 3.48.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +230 -0
- data/README.rdoc +31 -40
- data/Rakefile +1 -14
- data/doc/active_record.rdoc +29 -29
- data/doc/association_basics.rdoc +4 -13
- data/doc/cheat_sheet.rdoc +8 -6
- data/doc/code_order.rdoc +89 -0
- data/doc/core_extensions.rdoc +3 -3
- data/doc/dataset_basics.rdoc +7 -8
- data/doc/dataset_filtering.rdoc +7 -2
- data/doc/mass_assignment.rdoc +2 -3
- data/doc/migration.rdoc +8 -8
- data/doc/model_hooks.rdoc +11 -7
- data/doc/object_model.rdoc +2 -2
- data/doc/opening_databases.rdoc +5 -14
- data/doc/prepared_statements.rdoc +5 -9
- data/doc/querying.rdoc +23 -28
- data/doc/reflection.rdoc +11 -0
- data/doc/release_notes/3.48.0.txt +477 -0
- data/doc/schema_modification.rdoc +12 -5
- data/doc/security.rdoc +2 -2
- data/doc/sharding.rdoc +1 -2
- data/doc/sql.rdoc +10 -13
- data/doc/testing.rdoc +8 -4
- data/doc/transactions.rdoc +2 -2
- data/doc/validations.rdoc +40 -17
- data/doc/virtual_rows.rdoc +2 -2
- data/lib/sequel/adapters/ado.rb +25 -20
- data/lib/sequel/adapters/ado/access.rb +1 -0
- data/lib/sequel/adapters/ado/mssql.rb +1 -0
- data/lib/sequel/adapters/db2.rb +9 -7
- data/lib/sequel/adapters/dbi.rb +16 -16
- data/lib/sequel/adapters/do.rb +17 -18
- data/lib/sequel/adapters/do/mysql.rb +1 -0
- data/lib/sequel/adapters/do/postgres.rb +2 -0
- data/lib/sequel/adapters/do/sqlite.rb +1 -0
- data/lib/sequel/adapters/firebird.rb +5 -7
- data/lib/sequel/adapters/ibmdb.rb +23 -20
- data/lib/sequel/adapters/informix.rb +8 -2
- data/lib/sequel/adapters/jdbc.rb +39 -35
- data/lib/sequel/adapters/jdbc/as400.rb +1 -0
- data/lib/sequel/adapters/jdbc/cubrid.rb +1 -0
- data/lib/sequel/adapters/jdbc/db2.rb +1 -0
- data/lib/sequel/adapters/jdbc/derby.rb +1 -0
- data/lib/sequel/adapters/jdbc/firebird.rb +1 -0
- data/lib/sequel/adapters/jdbc/h2.rb +1 -0
- data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -0
- data/lib/sequel/adapters/jdbc/informix.rb +1 -0
- data/lib/sequel/adapters/jdbc/jtds.rb +1 -0
- data/lib/sequel/adapters/jdbc/mssql.rb +1 -0
- data/lib/sequel/adapters/jdbc/mysql.rb +1 -0
- data/lib/sequel/adapters/jdbc/oracle.rb +1 -0
- data/lib/sequel/adapters/jdbc/postgresql.rb +2 -0
- data/lib/sequel/adapters/jdbc/progress.rb +1 -0
- data/lib/sequel/adapters/jdbc/sqlite.rb +1 -0
- data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -0
- data/lib/sequel/adapters/mock.rb +30 -31
- data/lib/sequel/adapters/mysql.rb +6 -7
- data/lib/sequel/adapters/mysql2.rb +5 -6
- data/lib/sequel/adapters/odbc.rb +22 -20
- data/lib/sequel/adapters/odbc/mssql.rb +1 -0
- data/lib/sequel/adapters/openbase.rb +4 -1
- data/lib/sequel/adapters/oracle.rb +10 -8
- data/lib/sequel/adapters/postgres.rb +12 -10
- data/lib/sequel/adapters/shared/access.rb +6 -0
- data/lib/sequel/adapters/shared/cubrid.rb +2 -0
- data/lib/sequel/adapters/shared/db2.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 +14 -8
- data/lib/sequel/adapters/shared/mysql.rb +6 -0
- data/lib/sequel/adapters/shared/oracle.rb +2 -0
- data/lib/sequel/adapters/shared/postgres.rb +14 -4
- data/lib/sequel/adapters/shared/progress.rb +1 -0
- data/lib/sequel/adapters/shared/sqlite.rb +4 -3
- data/lib/sequel/adapters/sqlite.rb +6 -7
- data/lib/sequel/adapters/swift.rb +20 -21
- data/lib/sequel/adapters/swift/mysql.rb +1 -0
- data/lib/sequel/adapters/swift/postgres.rb +2 -0
- data/lib/sequel/adapters/swift/sqlite.rb +1 -0
- data/lib/sequel/adapters/tinytds.rb +5 -6
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +68 -0
- data/lib/sequel/connection_pool.rb +1 -1
- data/lib/sequel/core.rb +57 -50
- data/lib/sequel/database/connecting.rb +9 -10
- data/lib/sequel/database/dataset.rb +11 -6
- data/lib/sequel/database/dataset_defaults.rb +61 -69
- data/lib/sequel/database/features.rb +21 -0
- data/lib/sequel/database/misc.rb +23 -3
- data/lib/sequel/database/query.rb +13 -7
- data/lib/sequel/database/schema_methods.rb +6 -6
- data/lib/sequel/database/transactions.rb +1 -0
- data/lib/sequel/dataset/actions.rb +51 -38
- data/lib/sequel/dataset/features.rb +1 -0
- data/lib/sequel/dataset/graph.rb +9 -33
- data/lib/sequel/dataset/misc.rb +30 -5
- data/lib/sequel/dataset/mutation.rb +2 -3
- data/lib/sequel/dataset/prepared_statements.rb +1 -1
- data/lib/sequel/dataset/query.rb +91 -27
- data/lib/sequel/dataset/sql.rb +40 -6
- data/lib/sequel/deprecated.rb +74 -0
- data/lib/sequel/deprecated_core_extensions.rb +135 -0
- data/lib/sequel/extensions/columns_introspection.rb +1 -5
- data/lib/sequel/extensions/core_extensions.rb +10 -3
- data/lib/sequel/extensions/date_arithmetic.rb +1 -0
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +33 -0
- data/lib/sequel/extensions/filter_having.rb +58 -0
- data/lib/sequel/extensions/graph_each.rb +63 -0
- data/lib/sequel/extensions/hash_aliases.rb +44 -0
- data/lib/sequel/extensions/looser_typecasting.rb +14 -3
- data/lib/sequel/extensions/migration.rb +2 -3
- data/lib/sequel/extensions/named_timezones.rb +14 -1
- data/lib/sequel/extensions/null_dataset.rb +7 -1
- data/lib/sequel/extensions/pagination.rb +15 -5
- data/lib/sequel/extensions/pg_auto_parameterize.rb +1 -0
- data/lib/sequel/extensions/pg_hstore_ops.rb +48 -14
- data/lib/sequel/extensions/pg_json.rb +7 -7
- data/lib/sequel/extensions/pg_range_ops.rb +8 -2
- data/lib/sequel/extensions/pg_statement_cache.rb +1 -0
- data/lib/sequel/extensions/pretty_table.rb +13 -4
- data/lib/sequel/extensions/query.rb +21 -4
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +22 -0
- data/lib/sequel/extensions/schema_caching.rb +10 -7
- data/lib/sequel/extensions/schema_dumper.rb +35 -48
- data/lib/sequel/extensions/select_remove.rb +13 -4
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +117 -0
- data/lib/sequel/extensions/set_overrides.rb +43 -0
- data/lib/sequel/extensions/to_dot.rb +6 -0
- data/lib/sequel/model.rb +12 -6
- data/lib/sequel/model/associations.rb +80 -38
- data/lib/sequel/model/base.rb +137 -52
- data/lib/sequel/model/errors.rb +7 -2
- data/lib/sequel/plugins/active_model.rb +13 -0
- data/lib/sequel/plugins/after_initialize.rb +43 -0
- data/lib/sequel/plugins/association_proxies.rb +63 -7
- data/lib/sequel/plugins/auto_validations.rb +56 -16
- data/lib/sequel/plugins/blacklist_security.rb +63 -0
- data/lib/sequel/plugins/class_table_inheritance.rb +9 -0
- data/lib/sequel/plugins/constraint_validations.rb +50 -8
- data/lib/sequel/plugins/dataset_associations.rb +2 -0
- data/lib/sequel/plugins/hook_class_methods.rb +7 -1
- data/lib/sequel/plugins/identity_map.rb +4 -0
- data/lib/sequel/plugins/json_serializer.rb +32 -13
- data/lib/sequel/plugins/optimistic_locking.rb +1 -1
- data/lib/sequel/plugins/rcte_tree.rb +4 -4
- data/lib/sequel/plugins/scissors.rb +33 -0
- data/lib/sequel/plugins/serialization.rb +1 -1
- data/lib/sequel/plugins/single_table_inheritance.rb +6 -0
- data/lib/sequel/plugins/tree.rb +5 -1
- data/lib/sequel/plugins/validation_class_methods.rb +2 -1
- data/lib/sequel/plugins/validation_helpers.rb +15 -11
- data/lib/sequel/plugins/xml_serializer.rb +12 -3
- data/lib/sequel/sql.rb +12 -2
- data/lib/sequel/timezones.rb +1 -1
- data/lib/sequel/version.rb +1 -1
- data/lib/sequel_core.rb +1 -0
- data/lib/sequel_model.rb +1 -0
- data/spec/adapters/mssql_spec.rb +24 -57
- data/spec/adapters/postgres_spec.rb +27 -55
- data/spec/adapters/spec_helper.rb +1 -1
- data/spec/adapters/sqlite_spec.rb +1 -1
- data/spec/bin_spec.rb +251 -0
- data/spec/core/database_spec.rb +46 -32
- data/spec/core/dataset_spec.rb +233 -181
- data/spec/core/deprecated_spec.rb +78 -0
- data/spec/core/expression_filters_spec.rb +3 -4
- data/spec/core/mock_adapter_spec.rb +9 -9
- data/spec/core/object_graph_spec.rb +9 -19
- data/spec/core/schema_spec.rb +3 -1
- data/spec/core/spec_helper.rb +19 -0
- data/spec/core_extensions_spec.rb +80 -30
- data/spec/extensions/after_initialize_spec.rb +24 -0
- data/spec/extensions/association_proxies_spec.rb +37 -1
- data/spec/extensions/auto_validations_spec.rb +20 -4
- data/spec/extensions/blacklist_security_spec.rb +87 -0
- data/spec/extensions/boolean_readers_spec.rb +2 -1
- data/spec/extensions/class_table_inheritance_spec.rb +7 -0
- data/spec/extensions/columns_introspection_spec.rb +3 -3
- data/spec/extensions/constraint_validations_plugin_spec.rb +83 -5
- data/spec/extensions/core_refinements_spec.rb +7 -7
- data/spec/extensions/dataset_associations_spec.rb +2 -2
- data/spec/extensions/date_arithmetic_spec.rb +1 -1
- data/spec/extensions/defaults_setter_spec.rb +2 -1
- data/spec/extensions/empty_array_ignore_nulls_spec.rb +24 -0
- data/spec/extensions/filter_having_spec.rb +40 -0
- data/spec/extensions/graph_each_spec.rb +109 -0
- data/spec/extensions/hash_aliases_spec.rb +16 -0
- data/spec/extensions/hook_class_methods_spec.rb +2 -2
- data/spec/extensions/identity_map_spec.rb +3 -3
- data/spec/extensions/json_serializer_spec.rb +19 -19
- data/spec/extensions/lazy_attributes_spec.rb +1 -0
- data/spec/extensions/list_spec.rb +13 -13
- data/spec/extensions/looser_typecasting_spec.rb +10 -3
- data/spec/extensions/many_through_many_spec.rb +1 -1
- data/spec/extensions/migration_spec.rb +7 -7
- data/spec/extensions/named_timezones_spec.rb +6 -0
- data/spec/extensions/nested_attributes_spec.rb +2 -2
- data/spec/extensions/null_dataset_spec.rb +1 -1
- data/spec/extensions/pagination_spec.rb +2 -2
- data/spec/extensions/pg_hstore_ops_spec.rb +75 -0
- data/spec/extensions/pg_range_ops_spec.rb +4 -2
- data/spec/extensions/pg_row_plugin_spec.rb +1 -1
- data/spec/extensions/pretty_table_spec.rb +1 -1
- data/spec/extensions/query_literals_spec.rb +1 -1
- data/spec/extensions/query_spec.rb +3 -3
- data/spec/extensions/schema_caching_spec.rb +3 -3
- data/spec/extensions/schema_dumper_spec.rb +27 -2
- data/spec/extensions/schema_spec.rb +2 -2
- data/spec/extensions/scissors_spec.rb +26 -0
- data/spec/extensions/select_remove_spec.rb +1 -1
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +102 -0
- data/spec/extensions/set_overrides_spec.rb +45 -0
- data/spec/extensions/single_table_inheritance_spec.rb +10 -0
- data/spec/extensions/spec_helper.rb +24 -1
- data/spec/extensions/static_cache_spec.rb +1 -1
- data/spec/extensions/string_stripper_spec.rb +2 -1
- data/spec/extensions/to_dot_spec.rb +1 -1
- data/spec/extensions/typecast_on_load_spec.rb +3 -2
- data/spec/extensions/update_primary_key_spec.rb +2 -2
- data/spec/extensions/validation_class_methods_spec.rb +19 -19
- data/spec/extensions/validation_helpers_spec.rb +30 -21
- data/spec/extensions/xml_serializer_spec.rb +5 -5
- data/spec/integration/associations_test.rb +10 -30
- data/spec/integration/dataset_test.rb +20 -24
- data/spec/integration/eager_loader_test.rb +5 -5
- data/spec/integration/model_test.rb +3 -3
- data/spec/integration/plugin_test.rb +7 -39
- data/spec/integration/schema_test.rb +4 -38
- data/spec/integration/spec_helper.rb +2 -1
- data/spec/model/association_reflection_spec.rb +70 -5
- data/spec/model/associations_spec.rb +11 -11
- data/spec/model/base_spec.rb +25 -8
- data/spec/model/class_dataset_methods_spec.rb +143 -0
- data/spec/model/dataset_methods_spec.rb +1 -1
- data/spec/model/eager_loading_spec.rb +25 -25
- data/spec/model/hooks_spec.rb +1 -1
- data/spec/model/model_spec.rb +22 -7
- data/spec/model/plugins_spec.rb +1 -6
- data/spec/model/record_spec.rb +37 -29
- data/spec/model/spec_helper.rb +23 -1
- data/spec/model/validations_spec.rb +15 -17
- metadata +32 -3
@@ -16,6 +16,7 @@ module Sequel
|
|
16
16
|
module DB2
|
17
17
|
# Database instance methods for DB2 databases accessed via JDBC.
|
18
18
|
module DatabaseMethods
|
19
|
+
extend Sequel::Database::ResetIdentifierMangling
|
19
20
|
PRIMARY_KEY_INDEX_RE = /\Asql\d+\z/i.freeze
|
20
21
|
|
21
22
|
include Sequel::DB2::DatabaseMethods
|
@@ -8,6 +8,7 @@ module Sequel
|
|
8
8
|
module Firebird
|
9
9
|
# Database instance methods for Firebird databases accessed via JDBC.
|
10
10
|
module DatabaseMethods
|
11
|
+
extend Sequel::Database::ResetIdentifierMangling
|
11
12
|
include Sequel::Firebird::DatabaseMethods
|
12
13
|
include Sequel::JDBC::Transactions
|
13
14
|
|
@@ -4,6 +4,7 @@ module Sequel
|
|
4
4
|
module H2
|
5
5
|
# Instance methods for H2 Database objects accessed via JDBC.
|
6
6
|
module DatabaseMethods
|
7
|
+
extend Sequel::Database::ResetIdentifierMangling
|
7
8
|
PRIMARY_KEY_INDEX_RE = /\Aprimary_key/i.freeze
|
8
9
|
|
9
10
|
# Commit an existing prepared transaction with the given transaction
|
@@ -6,6 +6,7 @@ module Sequel
|
|
6
6
|
module HSQLDB
|
7
7
|
# Instance methods for HSQLDB Database objects accessed via JDBC.
|
8
8
|
module DatabaseMethods
|
9
|
+
extend Sequel::Database::ResetIdentifierMangling
|
9
10
|
PRIMARY_KEY_INDEX_RE = /\Asys_idx_sys_pk_/i.freeze
|
10
11
|
|
11
12
|
include ::Sequel::JDBC::Transactions
|
@@ -12,6 +12,7 @@ module Sequel
|
|
12
12
|
module MSSQL
|
13
13
|
# Database instance methods for MSSQL databases accessed via JDBC.
|
14
14
|
module DatabaseMethods
|
15
|
+
extend Sequel::Database::ResetIdentifierMangling
|
15
16
|
PRIMARY_KEY_INDEX_RE = /\Apk__/i.freeze
|
16
17
|
ATAT_IDENTITY = 'SELECT @@IDENTITY'.freeze
|
17
18
|
SCOPE_IDENTITY = 'SELECT SCOPE_IDENTITY()'.freeze
|
@@ -7,6 +7,7 @@ module Sequel
|
|
7
7
|
module MySQL
|
8
8
|
# Database instance methods for MySQL databases accessed via JDBC.
|
9
9
|
module DatabaseMethods
|
10
|
+
extend Sequel::Database::ResetIdentifierMangling
|
10
11
|
include Sequel::MySQL::DatabaseMethods
|
11
12
|
LAST_INSERT_ID = 'SELECT LAST_INSERT_ID()'.freeze
|
12
13
|
|
@@ -10,11 +10,13 @@ module Sequel
|
|
10
10
|
# Methods to add to Database instances that access PostgreSQL via
|
11
11
|
# JDBC.
|
12
12
|
module DatabaseMethods
|
13
|
+
extend Sequel::Database::ResetIdentifierMangling
|
13
14
|
include Sequel::Postgres::DatabaseMethods
|
14
15
|
|
15
16
|
# Add the primary_keys and primary_key_sequences instance variables,
|
16
17
|
# so we can get the correct return values for inserted rows.
|
17
18
|
def self.extended(db)
|
19
|
+
super
|
18
20
|
db.send(:initialize_postgres_adapter)
|
19
21
|
end
|
20
22
|
|
@@ -8,6 +8,7 @@ module Sequel
|
|
8
8
|
module Progress
|
9
9
|
# Database instance methods for Progress databases accessed via JDBC.
|
10
10
|
module DatabaseMethods
|
11
|
+
extend Sequel::Database::ResetIdentifierMangling
|
11
12
|
include Sequel::Progress::DatabaseMethods
|
12
13
|
include Sequel::JDBC::Transactions
|
13
14
|
|
@@ -6,6 +6,7 @@ module Sequel
|
|
6
6
|
module SQLite
|
7
7
|
# Instance methods for SQLite Database objects accessed via JDBC.
|
8
8
|
module DatabaseMethods
|
9
|
+
extend Sequel::Database::ResetIdentifierMangling
|
9
10
|
include Sequel::SQLite::DatabaseMethods
|
10
11
|
LAST_INSERT_ROWID = 'SELECT last_insert_rowid()'.freeze
|
11
12
|
FOREIGN_KEY_ERROR_RE = /query does not return ResultSet/.freeze
|
@@ -7,6 +7,7 @@ module Sequel
|
|
7
7
|
module SQLServer
|
8
8
|
# Database instance methods for SQLServer databases accessed via JDBC.
|
9
9
|
module DatabaseMethods
|
10
|
+
extend Sequel::Database::ResetIdentifierMangling
|
10
11
|
include Sequel::JDBC::MSSQL::DatabaseMethods
|
11
12
|
|
12
13
|
# Work around a bug in SQL Server JDBC Driver 3.0, where the metadata
|
data/lib/sequel/adapters/mock.rb
CHANGED
@@ -131,37 +131,6 @@ module Sequel
|
|
131
131
|
# Mock the server version, useful when using the shared adapters
|
132
132
|
attr_accessor :server_version
|
133
133
|
|
134
|
-
# Additional options supported:
|
135
|
-
#
|
136
|
-
# :autoid :: Call #autoid= with the value
|
137
|
-
# :columns :: Call #columns= with the value
|
138
|
-
# :fetch :: Call #fetch= with the value
|
139
|
-
# :numrows :: Call #numrows= with the value
|
140
|
-
# :extend :: A module the object is extended with.
|
141
|
-
# :sqls :: The array to store the SQL queries in.
|
142
|
-
def initialize(opts={})
|
143
|
-
super
|
144
|
-
opts = @opts
|
145
|
-
@sqls = opts[:sqls] || []
|
146
|
-
if mod_name = SHARED_ADAPTERS[opts[:host]]
|
147
|
-
@shared_adapter = true
|
148
|
-
require "sequel/adapters/shared/#{opts[:host]}"
|
149
|
-
extend Sequel.const_get(mod_name)::DatabaseMethods
|
150
|
-
extend_datasets Sequel.const_get(mod_name)::DatasetMethods
|
151
|
-
if pr = SHARED_ADAPTER_SETUP[opts[:host]]
|
152
|
-
pr.call(self)
|
153
|
-
end
|
154
|
-
else
|
155
|
-
@shared_adapter = false
|
156
|
-
end
|
157
|
-
self.autoid = opts[:autoid]
|
158
|
-
self.columns = opts[:columns]
|
159
|
-
self.fetch = opts[:fetch]
|
160
|
-
self.numrows = opts[:numrows]
|
161
|
-
extend(opts[:extend]) if opts[:extend]
|
162
|
-
sqls
|
163
|
-
end
|
164
|
-
|
165
134
|
# Return a related Connection option connecting to the given shard.
|
166
135
|
def connect(server)
|
167
136
|
Connection.new(self, server, server_opts(server))
|
@@ -297,6 +266,36 @@ module Sequel
|
|
297
266
|
_nextres(v, sql, 0)
|
298
267
|
end
|
299
268
|
|
269
|
+
# Additional options supported:
|
270
|
+
#
|
271
|
+
# :autoid :: Call #autoid= with the value
|
272
|
+
# :columns :: Call #columns= with the value
|
273
|
+
# :fetch :: Call #fetch= with the value
|
274
|
+
# :numrows :: Call #numrows= with the value
|
275
|
+
# :extend :: A module the object is extended with.
|
276
|
+
# :sqls :: The array to store the SQL queries in.
|
277
|
+
def adapter_initialize
|
278
|
+
opts = @opts
|
279
|
+
@sqls = opts[:sqls] || []
|
280
|
+
if mod_name = SHARED_ADAPTERS[opts[:host]]
|
281
|
+
@shared_adapter = true
|
282
|
+
require "sequel/adapters/shared/#{opts[:host]}"
|
283
|
+
extend Sequel.const_get(mod_name)::DatabaseMethods
|
284
|
+
extend_datasets Sequel.const_get(mod_name)::DatasetMethods
|
285
|
+
if pr = SHARED_ADAPTER_SETUP[opts[:host]]
|
286
|
+
pr.call(self)
|
287
|
+
end
|
288
|
+
else
|
289
|
+
@shared_adapter = false
|
290
|
+
end
|
291
|
+
self.autoid = opts[:autoid]
|
292
|
+
self.columns = opts[:columns]
|
293
|
+
self.fetch = opts[:fetch]
|
294
|
+
self.numrows = opts[:numrows]
|
295
|
+
extend(opts[:extend]) if opts[:extend]
|
296
|
+
sqls
|
297
|
+
end
|
298
|
+
|
300
299
|
def columns(ds, sql, cs=@columns)
|
301
300
|
case cs
|
302
301
|
when Array
|
@@ -59,13 +59,6 @@ module Sequel
|
|
59
59
|
# it returns the strings as is.
|
60
60
|
attr_reader :convert_invalid_date_time
|
61
61
|
|
62
|
-
def initialize(opts={})
|
63
|
-
super
|
64
|
-
@conversion_procs = MYSQL_TYPES.dup
|
65
|
-
self.convert_tinyint_to_bool = Sequel::MySQL.convert_tinyint_to_bool
|
66
|
-
self.convert_invalid_date_time = Sequel::MySQL.convert_invalid_date_time
|
67
|
-
end
|
68
|
-
|
69
62
|
# Connect to the database. In addition to the usual database options,
|
70
63
|
# the following options have effect:
|
71
64
|
#
|
@@ -221,6 +214,12 @@ module Sequel
|
|
221
214
|
end
|
222
215
|
end
|
223
216
|
|
217
|
+
def adapter_initialize
|
218
|
+
@conversion_procs = MYSQL_TYPES.dup
|
219
|
+
self.convert_tinyint_to_bool = Sequel::MySQL.convert_tinyint_to_bool
|
220
|
+
self.convert_invalid_date_time = Sequel::MySQL.convert_invalid_date_time
|
221
|
+
end
|
222
|
+
|
224
223
|
# Try to get an accurate number of rows matched using the query
|
225
224
|
# info. Fall back to affected_rows if there was no match, but
|
226
225
|
# that may be inaccurate.
|
@@ -14,12 +14,6 @@ module Sequel
|
|
14
14
|
# Whether to convert tinyint columns to bool for this database
|
15
15
|
attr_accessor :convert_tinyint_to_bool
|
16
16
|
|
17
|
-
# Set the convert_tinyint_to_bool setting based on the default value.
|
18
|
-
def initialize(opts={})
|
19
|
-
super
|
20
|
-
self.convert_tinyint_to_bool = Sequel::MySQL.convert_tinyint_to_bool
|
21
|
-
end
|
22
|
-
|
23
17
|
# Connect to the database. In addition to the usual database options,
|
24
18
|
# the following options have effect:
|
25
19
|
#
|
@@ -89,6 +83,11 @@ module Sequel
|
|
89
83
|
end
|
90
84
|
end
|
91
85
|
|
86
|
+
# Set the convert_tinyint_to_bool setting based on the default value.
|
87
|
+
def adapter_initialize
|
88
|
+
self.convert_tinyint_to_bool = Sequel::MySQL.convert_tinyint_to_bool
|
89
|
+
end
|
90
|
+
|
92
91
|
# MySQL connections use the query method to execute SQL without a result
|
93
92
|
def connection_execute_method
|
94
93
|
:query
|
data/lib/sequel/adapters/odbc.rb
CHANGED
@@ -9,25 +9,6 @@ module Sequel
|
|
9
9
|
DRV_NAME_GUARDS = '{%s}'.freeze
|
10
10
|
DISCONNECT_ERRORS = /\A08S01/.freeze
|
11
11
|
|
12
|
-
def initialize(opts)
|
13
|
-
super
|
14
|
-
case @opts[:db_type]
|
15
|
-
when 'mssql'
|
16
|
-
Sequel.ts_require 'adapters/odbc/mssql'
|
17
|
-
extend Sequel::ODBC::MSSQL::DatabaseMethods
|
18
|
-
@dataset_class = Sequel::ODBC::MSSQL::Dataset
|
19
|
-
set_mssql_unicode_strings
|
20
|
-
when 'progress'
|
21
|
-
Sequel.ts_require 'adapters/shared/progress'
|
22
|
-
extend Sequel::Progress::DatabaseMethods
|
23
|
-
extend_datasets(Sequel::Progress::DatasetMethods)
|
24
|
-
when 'db2'
|
25
|
-
Sequel.ts_require 'adapters/shared/db2'
|
26
|
-
extend ::Sequel::DB2::DatabaseMethods
|
27
|
-
extend_datasets ::Sequel::DB2::DatasetMethods
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
12
|
def connect(server)
|
32
13
|
opts = server_opts(server)
|
33
14
|
if opts.include? :driver
|
@@ -75,10 +56,31 @@ module Sequel
|
|
75
56
|
end
|
76
57
|
end
|
77
58
|
end
|
78
|
-
|
59
|
+
def do(*a, &block)
|
60
|
+
Sequel::Deprecation.deprecate('Database#do', 'Please use Database#execute_dui')
|
61
|
+
execute_dui(*a, &block)
|
62
|
+
end
|
79
63
|
|
80
64
|
private
|
81
65
|
|
66
|
+
def adapter_initialize
|
67
|
+
case @opts[:db_type]
|
68
|
+
when 'mssql'
|
69
|
+
Sequel.require 'adapters/odbc/mssql'
|
70
|
+
extend Sequel::ODBC::MSSQL::DatabaseMethods
|
71
|
+
self.dataset_class = Sequel::ODBC::MSSQL::Dataset
|
72
|
+
set_mssql_unicode_strings
|
73
|
+
when 'progress'
|
74
|
+
Sequel.require 'adapters/shared/progress'
|
75
|
+
extend Sequel::Progress::DatabaseMethods
|
76
|
+
extend_datasets(Sequel::Progress::DatasetMethods)
|
77
|
+
when 'db2'
|
78
|
+
Sequel.require 'adapters/shared/db2'
|
79
|
+
extend ::Sequel::DB2::DatabaseMethods
|
80
|
+
extend_datasets ::Sequel::DB2::DatasetMethods
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
82
84
|
def connection_execute_method
|
83
85
|
:do
|
84
86
|
end
|
@@ -21,13 +21,6 @@ module Sequel
|
|
21
21
|
# Hash of conversion procs for this database.
|
22
22
|
attr_reader :conversion_procs
|
23
23
|
|
24
|
-
def initialize(opts={})
|
25
|
-
super
|
26
|
-
@autosequence = opts[:autosequence]
|
27
|
-
@primary_key_sequences = {}
|
28
|
-
@conversion_procs = ORACLE_TYPES.dup
|
29
|
-
end
|
30
|
-
|
31
24
|
def connect(server)
|
32
25
|
opts = server_opts(server)
|
33
26
|
if opts[:database]
|
@@ -71,7 +64,10 @@ module Sequel
|
|
71
64
|
def execute(sql, opts={}, &block)
|
72
65
|
_execute(nil, sql, opts, &block)
|
73
66
|
end
|
74
|
-
|
67
|
+
def do(*a, &block)
|
68
|
+
Sequel::Deprecation.deprecate('Database#do', 'Please use Database#execute')
|
69
|
+
execute_dui(*a, &block)
|
70
|
+
end
|
75
71
|
|
76
72
|
def execute_insert(sql, opts={})
|
77
73
|
_execute(:insert, sql, opts)
|
@@ -109,6 +105,12 @@ module Sequel
|
|
109
105
|
end
|
110
106
|
end
|
111
107
|
|
108
|
+
def adapter_initialize
|
109
|
+
@autosequence = @opts[:autosequence]
|
110
|
+
@primary_key_sequences = {}
|
111
|
+
@conversion_procs = ORACLE_TYPES.dup
|
112
|
+
end
|
113
|
+
|
112
114
|
PS_TYPES = {'string'.freeze=>String, 'integer'.freeze=>Integer, 'float'.freeze=>Float,
|
113
115
|
'decimal'.freeze=>Float, 'date'.freeze=>Time, 'datetime'.freeze=>Time,
|
114
116
|
'time'.freeze=>Time, 'boolean'.freeze=>String, 'blob'.freeze=>OCI8::BLOB}
|
@@ -175,16 +175,6 @@ module Sequel
|
|
175
175
|
# as a string, or :float to convert to an infinite float.
|
176
176
|
attr_reader :convert_infinite_timestamps
|
177
177
|
|
178
|
-
# Add the primary_keys and primary_key_sequences instance variables,
|
179
|
-
# so we can get the correct return values for inserted rows.
|
180
|
-
def initialize(*args)
|
181
|
-
super
|
182
|
-
@use_iso_date_format = typecast_value_boolean(@opts.fetch(:use_iso_date_format, Postgres.use_iso_date_format))
|
183
|
-
initialize_postgres_adapter
|
184
|
-
conversion_procs[1082] = TYPE_TRANSLATOR.method(:date) if @use_iso_date_format
|
185
|
-
self.convert_infinite_timestamps = @opts[:convert_infinite_timestamps]
|
186
|
-
end
|
187
|
-
|
188
178
|
# Convert given argument so that it can be used directly by pg. Currently, pg doesn't
|
189
179
|
# handle fractional seconds in Time/DateTime or blobs with "\0", and it won't ever
|
190
180
|
# handle Sequel::SQLTime values correctly. Only public for use by the adapter, shouldn't
|
@@ -471,6 +461,15 @@ module Sequel
|
|
471
461
|
conn.exec_prepared(ps_name, args)
|
472
462
|
end
|
473
463
|
|
464
|
+
# Add the primary_keys and primary_key_sequences instance variables,
|
465
|
+
# so we can get the correct return values for inserted rows.
|
466
|
+
def adapter_initialize
|
467
|
+
@use_iso_date_format = typecast_value_boolean(@opts.fetch(:use_iso_date_format, Postgres.use_iso_date_format))
|
468
|
+
initialize_postgres_adapter
|
469
|
+
conversion_procs[1082] = TYPE_TRANSLATOR.method(:date) if @use_iso_date_format
|
470
|
+
self.convert_infinite_timestamps = @opts[:convert_infinite_timestamps]
|
471
|
+
end
|
472
|
+
|
474
473
|
# Convert exceptions raised from the block into DatabaseErrors.
|
475
474
|
def check_database_errors
|
476
475
|
begin
|
@@ -650,6 +649,9 @@ module Sequel
|
|
650
649
|
prepared_args << y
|
651
650
|
i = prepared_args.length
|
652
651
|
end
|
652
|
+
if type
|
653
|
+
Sequel::Deprecation.deprecate('Specifying prepared statement argument types via the __type suffix', "If a manual cast is really need, surround the prepared statement argument in Sequel.cast")
|
654
|
+
end
|
653
655
|
LiteralString.new("#{prepared_arg_placeholder}#{i}#{"::#{type}" if type}")
|
654
656
|
end
|
655
657
|
|
@@ -1,6 +1,10 @@
|
|
1
1
|
module Sequel
|
2
|
+
require 'adapters/utils/emulate_offset_with_reverse_and_count'
|
3
|
+
|
2
4
|
module Access
|
3
5
|
module DatabaseMethods
|
6
|
+
extend Sequel::Database::ResetIdentifierMangling
|
7
|
+
|
4
8
|
# Access uses type :access as the database_type
|
5
9
|
def database_type
|
6
10
|
:access
|
@@ -84,6 +88,8 @@ module Sequel
|
|
84
88
|
end
|
85
89
|
|
86
90
|
module DatasetMethods
|
91
|
+
include EmulateOffsetWithReverseAndCount
|
92
|
+
|
87
93
|
SELECT_CLAUSE_METHODS = Dataset.clause_methods(:select, %w'select distinct limit columns into from join where group order having compounds')
|
88
94
|
DATE_FORMAT = '#%Y-%m-%d#'.freeze
|
89
95
|
TIMESTAMP_FORMAT = '#%Y-%m-%d %H:%M:%S#'.freeze
|