sequel 3.48.0 → 4.0.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 +114 -0
- data/Rakefile +10 -7
- data/doc/association_basics.rdoc +25 -23
- data/doc/code_order.rdoc +7 -0
- data/doc/core_extensions.rdoc +0 -10
- data/doc/object_model.rdoc +4 -1
- data/doc/querying.rdoc +3 -3
- data/doc/release_notes/4.0.0.txt +262 -0
- data/doc/security.rdoc +0 -28
- data/doc/testing.rdoc +8 -14
- data/lib/sequel/adapters/ado.rb +7 -11
- data/lib/sequel/adapters/ado/access.rb +8 -8
- data/lib/sequel/adapters/ado/mssql.rb +4 -4
- data/lib/sequel/adapters/amalgalite.rb +6 -6
- data/lib/sequel/adapters/cubrid.rb +7 -7
- data/lib/sequel/adapters/db2.rb +5 -9
- data/lib/sequel/adapters/dbi.rb +2 -6
- data/lib/sequel/adapters/do.rb +4 -4
- data/lib/sequel/adapters/firebird.rb +4 -4
- data/lib/sequel/adapters/ibmdb.rb +8 -8
- data/lib/sequel/adapters/informix.rb +2 -10
- data/lib/sequel/adapters/jdbc.rb +17 -17
- data/lib/sequel/adapters/jdbc/as400.rb +2 -2
- data/lib/sequel/adapters/jdbc/cubrid.rb +1 -1
- data/lib/sequel/adapters/jdbc/db2.rb +1 -1
- data/lib/sequel/adapters/jdbc/derby.rb +1 -1
- data/lib/sequel/adapters/jdbc/h2.rb +2 -2
- data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -1
- data/lib/sequel/adapters/jdbc/informix.rb +1 -1
- data/lib/sequel/adapters/jdbc/mssql.rb +2 -2
- data/lib/sequel/adapters/jdbc/mysql.rb +1 -1
- data/lib/sequel/adapters/jdbc/oracle.rb +5 -1
- data/lib/sequel/adapters/jdbc/postgresql.rb +3 -3
- data/lib/sequel/adapters/jdbc/sqlite.rb +3 -3
- data/lib/sequel/adapters/jdbc/transactions.rb +3 -3
- data/lib/sequel/adapters/mock.rb +7 -7
- data/lib/sequel/adapters/mysql.rb +3 -3
- data/lib/sequel/adapters/mysql2.rb +4 -4
- data/lib/sequel/adapters/odbc.rb +2 -6
- data/lib/sequel/adapters/odbc/mssql.rb +1 -1
- data/lib/sequel/adapters/openbase.rb +1 -5
- data/lib/sequel/adapters/oracle.rb +13 -17
- data/lib/sequel/adapters/postgres.rb +20 -25
- data/lib/sequel/adapters/shared/cubrid.rb +3 -3
- data/lib/sequel/adapters/shared/db2.rb +2 -2
- data/lib/sequel/adapters/shared/firebird.rb +7 -7
- data/lib/sequel/adapters/shared/mssql.rb +9 -9
- data/lib/sequel/adapters/shared/mysql.rb +29 -13
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +7 -7
- data/lib/sequel/adapters/shared/oracle.rb +22 -13
- data/lib/sequel/adapters/shared/postgres.rb +61 -46
- data/lib/sequel/adapters/shared/sqlite.rb +9 -9
- data/lib/sequel/adapters/sqlite.rb +17 -11
- data/lib/sequel/adapters/swift.rb +3 -3
- data/lib/sequel/adapters/swift/mysql.rb +1 -1
- data/lib/sequel/adapters/swift/sqlite.rb +1 -1
- data/lib/sequel/adapters/tinytds.rb +8 -8
- data/lib/sequel/ast_transformer.rb +3 -1
- data/lib/sequel/connection_pool.rb +4 -2
- data/lib/sequel/connection_pool/sharded_single.rb +2 -2
- data/lib/sequel/connection_pool/sharded_threaded.rb +5 -5
- data/lib/sequel/connection_pool/threaded.rb +7 -7
- data/lib/sequel/core.rb +4 -67
- data/lib/sequel/database.rb +1 -0
- data/lib/sequel/database/connecting.rb +2 -8
- data/lib/sequel/database/dataset.rb +2 -7
- data/lib/sequel/database/dataset_defaults.rb +0 -18
- data/lib/sequel/database/features.rb +4 -4
- data/lib/sequel/database/misc.rb +6 -8
- data/lib/sequel/database/query.rb +5 -61
- data/lib/sequel/database/schema_generator.rb +22 -20
- data/lib/sequel/database/schema_methods.rb +48 -20
- data/lib/sequel/database/transactions.rb +7 -17
- data/lib/sequel/dataset.rb +2 -0
- data/lib/sequel/dataset/actions.rb +23 -91
- data/lib/sequel/dataset/features.rb +1 -4
- data/lib/sequel/dataset/graph.rb +3 -47
- data/lib/sequel/dataset/misc.rb +4 -33
- data/lib/sequel/dataset/prepared_statements.rb +3 -1
- data/lib/sequel/dataset/query.rb +116 -240
- data/lib/sequel/dataset/sql.rb +19 -97
- data/lib/sequel/deprecated.rb +0 -16
- data/lib/sequel/exceptions.rb +0 -3
- data/lib/sequel/extensions/_pretty_table.rb +1 -1
- data/lib/sequel/extensions/columns_introspection.rb +1 -12
- data/lib/sequel/extensions/constraint_validations.rb +3 -3
- data/lib/sequel/extensions/core_extensions.rb +0 -9
- data/lib/sequel/extensions/date_arithmetic.rb +1 -2
- data/lib/sequel/extensions/graph_each.rb +11 -0
- data/lib/sequel/extensions/migration.rb +5 -5
- data/lib/sequel/extensions/null_dataset.rb +11 -13
- data/lib/sequel/extensions/pagination.rb +3 -6
- data/lib/sequel/extensions/pg_array.rb +6 -4
- data/lib/sequel/extensions/pg_array_ops.rb +35 -1
- data/lib/sequel/extensions/pg_json.rb +12 -2
- data/lib/sequel/extensions/pg_json_ops.rb +266 -0
- data/lib/sequel/extensions/pg_range.rb +2 -2
- data/lib/sequel/extensions/pg_range_ops.rb +0 -8
- data/lib/sequel/extensions/pg_row.rb +2 -2
- data/lib/sequel/extensions/pretty_table.rb +0 -4
- data/lib/sequel/extensions/query.rb +3 -8
- data/lib/sequel/extensions/schema_caching.rb +0 -7
- data/lib/sequel/extensions/schema_dumper.rb +10 -17
- data/lib/sequel/extensions/select_remove.rb +0 -4
- data/lib/sequel/extensions/set_overrides.rb +28 -0
- data/lib/sequel/extensions/to_dot.rb +6 -10
- data/lib/sequel/model.rb +6 -7
- data/lib/sequel/model/associations.rb +127 -182
- data/lib/sequel/model/base.rb +88 -211
- data/lib/sequel/model/errors.rb +0 -13
- data/lib/sequel/model/plugins.rb +2 -2
- data/lib/sequel/no_core_ext.rb +0 -1
- data/lib/sequel/plugins/after_initialize.rb +11 -17
- data/lib/sequel/plugins/association_autoreloading.rb +1 -47
- data/lib/sequel/plugins/association_dependencies.rb +2 -2
- data/lib/sequel/plugins/auto_validations.rb +2 -8
- data/lib/sequel/plugins/blacklist_security.rb +32 -2
- data/lib/sequel/plugins/caching.rb +1 -1
- data/lib/sequel/plugins/class_table_inheritance.rb +2 -2
- data/lib/sequel/plugins/composition.rb +10 -8
- data/lib/sequel/plugins/constraint_validations.rb +2 -2
- data/lib/sequel/plugins/dataset_associations.rb +4 -0
- data/lib/sequel/plugins/defaults_setter.rb +8 -6
- data/lib/sequel/plugins/dirty.rb +6 -6
- data/lib/sequel/plugins/force_encoding.rb +13 -8
- data/lib/sequel/plugins/hook_class_methods.rb +1 -7
- data/lib/sequel/plugins/json_serializer.rb +13 -74
- data/lib/sequel/plugins/lazy_attributes.rb +2 -4
- data/lib/sequel/plugins/list.rb +1 -1
- data/lib/sequel/plugins/many_through_many.rb +4 -11
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +1 -49
- data/lib/sequel/plugins/nested_attributes.rb +1 -1
- data/lib/sequel/plugins/optimistic_locking.rb +3 -5
- data/lib/sequel/plugins/pg_array_associations.rb +453 -0
- data/lib/sequel/plugins/pg_typecast_on_load.rb +23 -7
- data/lib/sequel/plugins/prepared_statements.rb +1 -1
- data/lib/sequel/plugins/prepared_statements_associations.rb +20 -14
- data/lib/sequel/plugins/prepared_statements_safe.rb +2 -2
- data/lib/sequel/plugins/rcte_tree.rb +1 -1
- data/lib/sequel/plugins/serialization.rb +5 -4
- data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
- data/lib/sequel/plugins/sharding.rb +7 -1
- data/lib/sequel/plugins/single_table_inheritance.rb +1 -1
- data/lib/sequel/plugins/timestamps.rb +1 -1
- data/lib/sequel/plugins/touch.rb +2 -2
- data/lib/sequel/plugins/tree.rb +1 -1
- data/lib/sequel/plugins/typecast_on_load.rb +19 -4
- data/lib/sequel/plugins/validation_class_methods.rb +0 -30
- data/lib/sequel/plugins/validation_helpers.rb +13 -31
- data/lib/sequel/plugins/xml_serializer.rb +18 -57
- data/lib/sequel/sql.rb +20 -22
- data/lib/sequel/version.rb +2 -2
- data/spec/adapters/db2_spec.rb +14 -23
- data/spec/adapters/firebird_spec.rb +25 -29
- data/spec/adapters/informix_spec.rb +11 -14
- data/spec/adapters/mssql_spec.rb +71 -77
- data/spec/adapters/mysql_spec.rb +165 -172
- data/spec/adapters/oracle_spec.rb +36 -39
- data/spec/adapters/postgres_spec.rb +175 -100
- data/spec/adapters/spec_helper.rb +13 -11
- data/spec/adapters/sqlite_spec.rb +36 -44
- data/spec/core/connection_pool_spec.rb +2 -1
- data/spec/core/database_spec.rb +55 -55
- data/spec/core/dataset_spec.rb +45 -249
- data/spec/core/deprecated_spec.rb +0 -8
- data/spec/core/expression_filters_spec.rb +23 -5
- data/spec/core/object_graph_spec.rb +4 -66
- data/spec/core/schema_spec.rb +35 -12
- data/spec/core/spec_helper.rb +3 -2
- data/spec/core_extensions_spec.rb +17 -19
- data/spec/extensions/arbitrary_servers_spec.rb +2 -3
- data/spec/extensions/association_dependencies_spec.rb +14 -14
- data/spec/extensions/auto_validations_spec.rb +7 -0
- data/spec/extensions/blacklist_security_spec.rb +5 -5
- data/spec/extensions/blank_spec.rb +2 -0
- data/spec/extensions/class_table_inheritance_spec.rb +2 -2
- data/spec/extensions/columns_introspection_spec.rb +2 -29
- data/spec/extensions/composition_spec.rb +10 -17
- data/spec/extensions/core_refinements_spec.rb +5 -1
- data/spec/extensions/dataset_associations_spec.rb +18 -0
- data/spec/extensions/date_arithmetic_spec.rb +2 -2
- data/spec/extensions/defaults_setter_spec.rb +9 -9
- data/spec/extensions/dirty_spec.rb +0 -5
- data/spec/extensions/eval_inspect_spec.rb +2 -0
- data/spec/extensions/force_encoding_spec.rb +2 -18
- data/spec/extensions/hash_aliases_spec.rb +8 -0
- data/spec/extensions/hook_class_methods_spec.rb +39 -58
- data/spec/extensions/inflector_spec.rb +2 -0
- data/spec/extensions/instance_filters_spec.rb +8 -8
- data/spec/extensions/json_serializer_spec.rb +1 -41
- data/spec/extensions/list_spec.rb +1 -1
- data/spec/extensions/many_through_many_spec.rb +106 -109
- data/spec/extensions/migration_spec.rb +2 -0
- data/spec/extensions/named_timezones_spec.rb +1 -0
- data/spec/extensions/pg_array_associations_spec.rb +603 -0
- data/spec/extensions/pg_array_ops_spec.rb +25 -0
- data/spec/extensions/pg_array_spec.rb +9 -1
- data/spec/extensions/pg_hstore_ops_spec.rb +13 -0
- data/spec/extensions/pg_hstore_spec.rb +1 -0
- data/spec/extensions/pg_json_ops_spec.rb +131 -0
- data/spec/extensions/pg_json_spec.rb +10 -4
- data/spec/extensions/pg_range_ops_spec.rb +2 -5
- data/spec/extensions/pg_range_spec.rb +6 -2
- data/spec/extensions/pg_row_ops_spec.rb +2 -0
- data/spec/extensions/prepared_statements_associations_spec.rb +26 -5
- data/spec/extensions/rcte_tree_spec.rb +15 -15
- data/spec/extensions/schema_dumper_spec.rb +0 -1
- data/spec/extensions/schema_spec.rb +9 -9
- data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
- data/spec/extensions/serialization_spec.rb +18 -29
- data/spec/extensions/set_overrides_spec.rb +4 -0
- data/spec/extensions/{many_to_one_pk_lookup_spec.rb → shared_caching_spec.rb} +1 -4
- data/spec/extensions/single_table_inheritance_spec.rb +4 -4
- data/spec/extensions/spec_helper.rb +8 -9
- data/spec/extensions/sql_expr_spec.rb +2 -0
- data/spec/extensions/string_date_time_spec.rb +2 -0
- data/spec/extensions/string_stripper_spec.rb +2 -0
- data/spec/extensions/tactical_eager_loading_spec.rb +12 -12
- data/spec/extensions/thread_local_timezones_spec.rb +2 -0
- data/spec/extensions/timestamps_spec.rb +1 -1
- data/spec/extensions/to_dot_spec.rb +1 -1
- data/spec/extensions/touch_spec.rb +24 -24
- data/spec/extensions/tree_spec.rb +7 -7
- data/spec/extensions/typecast_on_load_spec.rb +8 -1
- data/spec/extensions/update_primary_key_spec.rb +10 -10
- data/spec/extensions/validation_class_methods_spec.rb +10 -39
- data/spec/extensions/validation_helpers_spec.rb +29 -47
- data/spec/extensions/xml_serializer_spec.rb +1 -23
- data/spec/integration/associations_test.rb +231 -40
- data/spec/integration/database_test.rb +1 -1
- data/spec/integration/dataset_test.rb +64 -64
- data/spec/integration/eager_loader_test.rb +28 -28
- data/spec/integration/migrator_test.rb +1 -1
- data/spec/integration/model_test.rb +2 -2
- data/spec/integration/plugin_test.rb +21 -21
- data/spec/integration/prepared_statement_test.rb +7 -7
- data/spec/integration/schema_test.rb +115 -110
- data/spec/integration/spec_helper.rb +17 -27
- data/spec/integration/timezone_test.rb +1 -1
- data/spec/integration/transaction_test.rb +10 -10
- data/spec/integration/type_test.rb +2 -2
- data/spec/model/association_reflection_spec.rb +2 -28
- data/spec/model/associations_spec.rb +239 -188
- data/spec/model/base_spec.rb +27 -68
- data/spec/model/dataset_methods_spec.rb +4 -4
- data/spec/model/eager_loading_spec.rb +160 -172
- data/spec/model/hooks_spec.rb +62 -79
- data/spec/model/model_spec.rb +36 -51
- data/spec/model/plugins_spec.rb +5 -19
- data/spec/model/record_spec.rb +125 -151
- data/spec/model/spec_helper.rb +8 -6
- data/spec/model/validations_spec.rb +4 -17
- data/spec/spec_config.rb +2 -10
- metadata +50 -56
- data/lib/sequel/deprecated_core_extensions.rb +0 -135
- data/lib/sequel/extensions/pg_auto_parameterize.rb +0 -185
- data/lib/sequel/extensions/pg_statement_cache.rb +0 -318
- data/lib/sequel/plugins/identity_map.rb +0 -260
- data/lib/sequel_core.rb +0 -2
- data/lib/sequel_model.rb +0 -2
- data/spec/extensions/association_autoreloading_spec.rb +0 -102
- data/spec/extensions/identity_map_spec.rb +0 -337
- data/spec/extensions/pg_auto_parameterize_spec.rb +0 -70
- data/spec/extensions/pg_statement_cache_spec.rb +0 -208
- data/spec/rcov.opts +0 -8
- data/spec/spec_config.rb.example +0 -10
|
@@ -210,7 +210,7 @@ module Sequel
|
|
|
210
210
|
end
|
|
211
211
|
|
|
212
212
|
# Execute the given SQL on the database.
|
|
213
|
-
def execute(sql, opts=
|
|
213
|
+
def execute(sql, opts=OPTS, &block)
|
|
214
214
|
if sql.is_a?(Symbol)
|
|
215
215
|
execute_prepared_statement(sql, opts, &block)
|
|
216
216
|
else
|
|
@@ -222,7 +222,7 @@ module Sequel
|
|
|
222
222
|
|
|
223
223
|
# Execute the given SQL on the database, returning the last inserted
|
|
224
224
|
# identity value.
|
|
225
|
-
def execute_insert(sql, opts=
|
|
225
|
+
def execute_insert(sql, opts=OPTS)
|
|
226
226
|
synchronize(opts[:server]) do |c|
|
|
227
227
|
if sql.is_a?(Symbol)
|
|
228
228
|
execute_prepared_statement(sql, opts)
|
|
@@ -304,14 +304,14 @@ module Sequel
|
|
|
304
304
|
|
|
305
305
|
# IBM_DB uses an autocommit setting instead of sending SQL queries.
|
|
306
306
|
# So starting a transaction just turns autocommit off.
|
|
307
|
-
def begin_transaction(conn, opts=
|
|
307
|
+
def begin_transaction(conn, opts=OPTS)
|
|
308
308
|
log_yield(TRANSACTION_BEGIN){conn.autocommit = false}
|
|
309
309
|
set_transaction_isolation(conn, opts)
|
|
310
310
|
end
|
|
311
311
|
|
|
312
312
|
# This commits transaction in progress on the
|
|
313
313
|
# connection and sets autocommit back on.
|
|
314
|
-
def commit_transaction(conn, opts=
|
|
314
|
+
def commit_transaction(conn, opts=OPTS)
|
|
315
315
|
log_yield(TRANSACTION_COMMIT){conn.commit}
|
|
316
316
|
end
|
|
317
317
|
|
|
@@ -355,7 +355,7 @@ module Sequel
|
|
|
355
355
|
|
|
356
356
|
# This rolls back the transaction in progress on the
|
|
357
357
|
# connection and sets autocommit back on.
|
|
358
|
-
def rollback_transaction(conn, opts=
|
|
358
|
+
def rollback_transaction(conn, opts=OPTS)
|
|
359
359
|
log_yield(TRANSACTION_ROLLBACK){conn.rollback}
|
|
360
360
|
end
|
|
361
361
|
|
|
@@ -392,17 +392,17 @@ module Sequel
|
|
|
392
392
|
|
|
393
393
|
private
|
|
394
394
|
# Execute the prepared statement with arguments instead of the given SQL.
|
|
395
|
-
def execute(sql, opts=
|
|
395
|
+
def execute(sql, opts=OPTS, &block)
|
|
396
396
|
super(prepared_statement_name, {:arguments=>bind_arguments}.merge(opts), &block)
|
|
397
397
|
end
|
|
398
398
|
|
|
399
399
|
# Execute the prepared statment with arguments instead of the given SQL.
|
|
400
|
-
def execute_dui(sql, opts=
|
|
400
|
+
def execute_dui(sql, opts=OPTS, &block)
|
|
401
401
|
super(prepared_statement_name, {:arguments=>bind_arguments}.merge(opts), &block)
|
|
402
402
|
end
|
|
403
403
|
|
|
404
404
|
# Execute the prepared statement with arguments instead of the given SQL.
|
|
405
|
-
def execute_insert(sql, opts=
|
|
405
|
+
def execute_insert(sql, opts=OPTS, &block)
|
|
406
406
|
super(prepared_statement_name, {:arguments=>bind_arguments}.merge(opts), &block)
|
|
407
407
|
end
|
|
408
408
|
|
|
@@ -14,21 +14,13 @@ module Sequel
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
# Returns number of rows affected
|
|
17
|
-
def execute_dui(sql, opts=
|
|
17
|
+
def execute_dui(sql, opts=OPTS)
|
|
18
18
|
synchronize(opts[:server]){|c| log_yield(sql){c.immediate(sql)}}
|
|
19
19
|
end
|
|
20
|
-
def do(*a, &block)
|
|
21
|
-
Sequel::Deprecation.deprecate('Database#do', 'Please use Database#execute_dui')
|
|
22
|
-
execute_dui(*a, &block)
|
|
23
|
-
end
|
|
24
20
|
|
|
25
|
-
def execute(sql, opts=
|
|
21
|
+
def execute(sql, opts=OPTS)
|
|
26
22
|
synchronize(opts[:server]){|c| yield log_yield(sql){c.cursor(sql)}}
|
|
27
23
|
end
|
|
28
|
-
def query(*a, &block)
|
|
29
|
-
Sequel::Deprecation.deprecate('Database#query', 'Please use Database#execute')
|
|
30
|
-
execute(*a, &block)
|
|
31
|
-
end
|
|
32
24
|
end
|
|
33
25
|
|
|
34
26
|
class Dataset < Sequel::Dataset
|
data/lib/sequel/adapters/jdbc.rb
CHANGED
|
@@ -179,7 +179,7 @@ module Sequel
|
|
|
179
179
|
|
|
180
180
|
# Execute the given stored procedure with the give name. If a block is
|
|
181
181
|
# given, the stored procedure should return rows.
|
|
182
|
-
def call_sproc(name, opts =
|
|
182
|
+
def call_sproc(name, opts = OPTS)
|
|
183
183
|
args = opts[:args] || []
|
|
184
184
|
sql = "{call #{name}(#{args.map{'?'}.join(',')})}"
|
|
185
185
|
synchronize(opts[:server]) do |conn|
|
|
@@ -252,7 +252,7 @@ module Sequel
|
|
|
252
252
|
|
|
253
253
|
# Execute the given SQL. If a block is given, if should be a SELECT
|
|
254
254
|
# statement or something else that returns rows.
|
|
255
|
-
def execute(sql, opts=
|
|
255
|
+
def execute(sql, opts=OPTS, &block)
|
|
256
256
|
return call_sproc(sql, opts, &block) if opts[:sproc]
|
|
257
257
|
return execute_prepared_statement(sql, opts, &block) if [Symbol, Dataset].any?{|c| sql.is_a?(c)}
|
|
258
258
|
synchronize(opts[:server]) do |conn|
|
|
@@ -277,18 +277,18 @@ module Sequel
|
|
|
277
277
|
|
|
278
278
|
# Execute the given DDL SQL, which should not return any
|
|
279
279
|
# values or rows.
|
|
280
|
-
def execute_ddl(sql, opts=
|
|
280
|
+
def execute_ddl(sql, opts=OPTS)
|
|
281
281
|
execute(sql, {:type=>:ddl}.merge(opts))
|
|
282
282
|
end
|
|
283
283
|
|
|
284
284
|
# Execute the given INSERT SQL, returning the last inserted
|
|
285
285
|
# row id.
|
|
286
|
-
def execute_insert(sql, opts=
|
|
286
|
+
def execute_insert(sql, opts=OPTS)
|
|
287
287
|
execute(sql, {:type=>:insert}.merge(opts))
|
|
288
288
|
end
|
|
289
289
|
|
|
290
290
|
# Use the JDBC metadata to get the index information for the table.
|
|
291
|
-
def indexes(table, opts=
|
|
291
|
+
def indexes(table, opts=OPTS)
|
|
292
292
|
m = output_identifier_meth
|
|
293
293
|
im = input_identifier_meth
|
|
294
294
|
schema, table = schema_and_table(table)
|
|
@@ -311,7 +311,7 @@ module Sequel
|
|
|
311
311
|
end
|
|
312
312
|
|
|
313
313
|
# All tables in this database
|
|
314
|
-
def tables(opts=
|
|
314
|
+
def tables(opts=OPTS)
|
|
315
315
|
get_tables('TABLE', opts)
|
|
316
316
|
end
|
|
317
317
|
|
|
@@ -319,14 +319,14 @@ module Sequel
|
|
|
319
319
|
# using the :uri, :url, or :database options. You don't
|
|
320
320
|
# need to worry about this if you use Sequel.connect
|
|
321
321
|
# with the JDBC connectrion strings.
|
|
322
|
-
def uri(opts=
|
|
322
|
+
def uri(opts=OPTS)
|
|
323
323
|
opts = @opts.merge(opts)
|
|
324
324
|
ur = opts[:uri] || opts[:url] || opts[:database]
|
|
325
325
|
ur =~ /^\Ajdbc:/ ? ur : "jdbc:#{ur}"
|
|
326
326
|
end
|
|
327
327
|
|
|
328
328
|
# All views in this database
|
|
329
|
-
def views(opts=
|
|
329
|
+
def views(opts=OPTS)
|
|
330
330
|
get_tables('VIEW', opts)
|
|
331
331
|
end
|
|
332
332
|
|
|
@@ -387,7 +387,7 @@ module Sequel
|
|
|
387
387
|
# statement, use that statement instead of creating another.
|
|
388
388
|
# Otherwise, prepare a new statement for the connection, bind the
|
|
389
389
|
# variables, and execute it.
|
|
390
|
-
def execute_prepared_statement(name, opts=
|
|
390
|
+
def execute_prepared_statement(name, opts=OPTS)
|
|
391
391
|
args = opts[:arguments]
|
|
392
392
|
if name.is_a?(Dataset)
|
|
393
393
|
ps = name
|
|
@@ -561,7 +561,7 @@ module Sequel
|
|
|
561
561
|
end
|
|
562
562
|
|
|
563
563
|
# Parse the table schema for the given table.
|
|
564
|
-
def schema_parse_table(table, opts=
|
|
564
|
+
def schema_parse_table(table, opts=OPTS)
|
|
565
565
|
m = output_identifier_meth(opts[:dataset])
|
|
566
566
|
im = input_identifier_meth(opts[:dataset])
|
|
567
567
|
ds = dataset
|
|
@@ -585,7 +585,7 @@ module Sequel
|
|
|
585
585
|
ts << [m.call(h[:column_name]), s]
|
|
586
586
|
end
|
|
587
587
|
if schemas.length > 1
|
|
588
|
-
|
|
588
|
+
raise Error, 'Schema parsing in the jdbc adapter resulted in columns being returned for a table with the same name in multiple schemas. Please explicitly qualify your table with a schema.'
|
|
589
589
|
end
|
|
590
590
|
ts
|
|
591
591
|
end
|
|
@@ -623,17 +623,17 @@ module Sequel
|
|
|
623
623
|
|
|
624
624
|
# Execute the prepared SQL using the stored type and
|
|
625
625
|
# arguments derived from the hash passed to call.
|
|
626
|
-
def execute(sql, opts=
|
|
626
|
+
def execute(sql, opts=OPTS, &block)
|
|
627
627
|
super(self, {:arguments=>bind_arguments}.merge(opts), &block)
|
|
628
628
|
end
|
|
629
629
|
|
|
630
630
|
# Same as execute, explicit due to intricacies of alias and super.
|
|
631
|
-
def execute_dui(sql, opts=
|
|
631
|
+
def execute_dui(sql, opts=OPTS, &block)
|
|
632
632
|
super(self, {:arguments=>bind_arguments}.merge(opts), &block)
|
|
633
633
|
end
|
|
634
634
|
|
|
635
635
|
# Same as execute, explicit due to intricacies of alias and super.
|
|
636
|
-
def execute_insert(sql, opts=
|
|
636
|
+
def execute_insert(sql, opts=OPTS, &block)
|
|
637
637
|
super(self, {:arguments=>bind_arguments, :type=>:insert}.merge(opts), &block)
|
|
638
638
|
end
|
|
639
639
|
end
|
|
@@ -646,17 +646,17 @@ module Sequel
|
|
|
646
646
|
private
|
|
647
647
|
|
|
648
648
|
# Execute the database stored procedure with the stored arguments.
|
|
649
|
-
def execute(sql, opts=
|
|
649
|
+
def execute(sql, opts=OPTS, &block)
|
|
650
650
|
super(@sproc_name, {:args=>@sproc_args, :sproc=>true}.merge(opts), &block)
|
|
651
651
|
end
|
|
652
652
|
|
|
653
653
|
# Same as execute, explicit due to intricacies of alias and super.
|
|
654
|
-
def execute_dui(sql, opts=
|
|
654
|
+
def execute_dui(sql, opts=OPTS, &block)
|
|
655
655
|
super(@sproc_name, {:args=>@sproc_args, :sproc=>true}.merge(opts), &block)
|
|
656
656
|
end
|
|
657
657
|
|
|
658
658
|
# Same as execute, explicit due to intricacies of alias and super.
|
|
659
|
-
def execute_insert(sql, opts=
|
|
659
|
+
def execute_insert(sql, opts=OPTS, &block)
|
|
660
660
|
super(@sproc_name, {:args=>@sproc_args, :sproc=>true, :type=>:insert}.merge(opts), &block)
|
|
661
661
|
end
|
|
662
662
|
end
|
|
@@ -20,7 +20,7 @@ module Sequel
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
# TODO: Fix for AS400
|
|
23
|
-
def last_insert_id(conn, opts=
|
|
23
|
+
def last_insert_id(conn, opts=OPTS)
|
|
24
24
|
nil
|
|
25
25
|
end
|
|
26
26
|
|
|
@@ -32,7 +32,7 @@ module Sequel
|
|
|
32
32
|
private
|
|
33
33
|
|
|
34
34
|
# Use JDBC connection's setAutoCommit to false to start transactions
|
|
35
|
-
def begin_transaction(conn, opts=
|
|
35
|
+
def begin_transaction(conn, opts=OPTS)
|
|
36
36
|
set_transaction_isolation(conn, opts)
|
|
37
37
|
super
|
|
38
38
|
end
|
|
@@ -117,7 +117,7 @@ module Sequel
|
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
# Use IDENTITY_VAL_LOCAL() to get the last inserted id.
|
|
120
|
-
def last_insert_id(conn, opts=
|
|
120
|
+
def last_insert_id(conn, opts=OPTS)
|
|
121
121
|
statement(conn) do |stmt|
|
|
122
122
|
sql = 'SELECT IDENTITY_VAL_LOCAL() FROM sysibm.sysdummy1'
|
|
123
123
|
rs = log_yield(sql){stmt.executeQuery(sql)}
|
|
@@ -48,7 +48,7 @@ module Sequel
|
|
|
48
48
|
|
|
49
49
|
# If the :prepare option is given and we aren't in a savepoint,
|
|
50
50
|
# prepare the transaction for a two-phase commit.
|
|
51
|
-
def commit_transaction(conn, opts=
|
|
51
|
+
def commit_transaction(conn, opts=OPTS)
|
|
52
52
|
if (s = opts[:prepare]) && _trans(conn)[:savepoint_level] <= 1
|
|
53
53
|
log_connection_execute(conn, "PREPARE COMMIT #{s}")
|
|
54
54
|
else
|
|
@@ -115,7 +115,7 @@ module Sequel
|
|
|
115
115
|
end
|
|
116
116
|
|
|
117
117
|
# Use IDENTITY() to get the last inserted id.
|
|
118
|
-
def last_insert_id(conn, opts=
|
|
118
|
+
def last_insert_id(conn, opts=OPTS)
|
|
119
119
|
statement(conn) do |stmt|
|
|
120
120
|
sql = 'SELECT IDENTITY();'
|
|
121
121
|
rs = log_yield(sql){stmt.executeQuery(sql)}
|
|
@@ -22,7 +22,7 @@ module Sequel
|
|
|
22
22
|
private
|
|
23
23
|
|
|
24
24
|
# Get the last inserted id using SCOPE_IDENTITY().
|
|
25
|
-
def last_insert_id(conn, opts=
|
|
25
|
+
def last_insert_id(conn, opts=OPTS)
|
|
26
26
|
statement(conn) do |stmt|
|
|
27
27
|
sql = opts[:prepared] ? ATAT_IDENTITY : SCOPE_IDENTITY
|
|
28
28
|
rs = log_yield(sql){stmt.executeQuery(sql)}
|
|
@@ -33,7 +33,7 @@ module Sequel
|
|
|
33
33
|
|
|
34
34
|
# Call the generic JDBC version instead of MSSQL version,
|
|
35
35
|
# since the JDBC version handles primary keys.
|
|
36
|
-
def schema_parse_table(table, opts=
|
|
36
|
+
def schema_parse_table(table, opts=OPTS)
|
|
37
37
|
jdbc_schema_parse_table(table, opts)
|
|
38
38
|
end
|
|
39
39
|
|
|
@@ -27,6 +27,10 @@ module Sequel
|
|
|
27
27
|
false
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
def disconnect_error?(exception, opts)
|
|
31
|
+
super || exception.message =~ /\AClosed Connection/
|
|
32
|
+
end
|
|
33
|
+
|
|
30
34
|
def last_insert_id(conn, opts)
|
|
31
35
|
unless sequence = opts[:sequence]
|
|
32
36
|
if t = opts[:table]
|
|
@@ -105,7 +109,7 @@ module Sequel
|
|
|
105
109
|
end
|
|
106
110
|
|
|
107
111
|
def convert_type_oracle_timestamptz(v)
|
|
108
|
-
convert_type_oracle_timestamp(db.synchronize{|c| v.timestampValue(c)})
|
|
112
|
+
convert_type_oracle_timestamp(db.synchronize(@opts[:server]){|c| v.timestampValue(c)})
|
|
109
113
|
end
|
|
110
114
|
|
|
111
115
|
def convert_type_proc(v)
|
|
@@ -21,7 +21,7 @@ module Sequel
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
# See Sequel::Postgres::Adapter#copy_into
|
|
24
|
-
def copy_into(table, opts=
|
|
24
|
+
def copy_into(table, opts=OPTS)
|
|
25
25
|
data = opts[:data]
|
|
26
26
|
data = Array(data) if data.is_a?(String)
|
|
27
27
|
|
|
@@ -58,7 +58,7 @@ module Sequel
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
# See Sequel::Postgres::Adapter#copy_table
|
|
61
|
-
def copy_table(table, opts=
|
|
61
|
+
def copy_table(table, opts=OPTS)
|
|
62
62
|
synchronize(opts[:server]) do |conn|
|
|
63
63
|
copy_manager = org.postgresql.copy.CopyManager.new(conn)
|
|
64
64
|
copier = copy_manager.copy_out(copy_table_sql(table, opts))
|
|
@@ -181,7 +181,7 @@ module Sequel
|
|
|
181
181
|
|
|
182
182
|
# Literalize strings similar to the native postgres adapter
|
|
183
183
|
def literal_string_append(sql, v)
|
|
184
|
-
sql << APOS << db.synchronize{|c| c.escape_string(v)} << APOS
|
|
184
|
+
sql << APOS << db.synchronize(@opts[:server]){|c| c.escape_string(v)} << APOS
|
|
185
185
|
end
|
|
186
186
|
end
|
|
187
187
|
end
|
|
@@ -13,7 +13,7 @@ module Sequel
|
|
|
13
13
|
|
|
14
14
|
# Swallow pointless exceptions when the foreign key list pragma
|
|
15
15
|
# doesn't return any rows.
|
|
16
|
-
def foreign_key_list(table, opts=
|
|
16
|
+
def foreign_key_list(table, opts=OPTS)
|
|
17
17
|
super
|
|
18
18
|
rescue Sequel::DatabaseError => e
|
|
19
19
|
raise unless e.message =~ FOREIGN_KEY_ERROR_RE
|
|
@@ -22,7 +22,7 @@ module Sequel
|
|
|
22
22
|
|
|
23
23
|
# Swallow pointless exceptions when the index list pragma
|
|
24
24
|
# doesn't return any rows.
|
|
25
|
-
def indexes(table, opts=
|
|
25
|
+
def indexes(table, opts=OPTS)
|
|
26
26
|
super
|
|
27
27
|
rescue Sequel::DatabaseError => e
|
|
28
28
|
raise unless e.message =~ FOREIGN_KEY_ERROR_RE
|
|
@@ -37,7 +37,7 @@ module Sequel
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
# Use last_insert_rowid() to get the last inserted id.
|
|
40
|
-
def last_insert_id(conn, opts=
|
|
40
|
+
def last_insert_id(conn, opts=OPTS)
|
|
41
41
|
statement(conn) do |stmt|
|
|
42
42
|
rs = stmt.executeQuery(LAST_INSERT_ROWID)
|
|
43
43
|
rs.next
|
|
@@ -44,7 +44,7 @@ module Sequel
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
# Use JDBC connection's setAutoCommit to false to start transactions
|
|
47
|
-
def begin_transaction(conn, opts=
|
|
47
|
+
def begin_transaction(conn, opts=OPTS)
|
|
48
48
|
if supports_savepoints?
|
|
49
49
|
th = _trans(conn)
|
|
50
50
|
if sps = th[:savepoints]
|
|
@@ -62,7 +62,7 @@ module Sequel
|
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
# Use JDBC connection's commit method to commit transactions
|
|
65
|
-
def commit_transaction(conn, opts=
|
|
65
|
+
def commit_transaction(conn, opts=OPTS)
|
|
66
66
|
if supports_savepoints?
|
|
67
67
|
sps = _trans(conn)[:savepoints]
|
|
68
68
|
if sps.empty?
|
|
@@ -92,7 +92,7 @@ module Sequel
|
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
# Use JDBC connection's rollback method to rollback transactions
|
|
95
|
-
def rollback_transaction(conn, opts=
|
|
95
|
+
def rollback_transaction(conn, opts=OPTS)
|
|
96
96
|
if supports_savepoints?
|
|
97
97
|
sps = _trans(conn)[:savepoints]
|
|
98
98
|
if sps.empty?
|
data/lib/sequel/adapters/mock.rb
CHANGED
|
@@ -142,18 +142,18 @@ module Sequel
|
|
|
142
142
|
# Store the sql used for later retrieval with #sqls, and return
|
|
143
143
|
# the appropriate value using either the #autoid, #fetch, or
|
|
144
144
|
# #numrows methods.
|
|
145
|
-
def execute(sql, opts=
|
|
145
|
+
def execute(sql, opts=OPTS, &block)
|
|
146
146
|
synchronize(opts[:server]){|c| _execute(c, sql, opts, &block)}
|
|
147
147
|
end
|
|
148
148
|
alias execute_ddl execute
|
|
149
149
|
|
|
150
150
|
# Store the sql used, and return the value of the #numrows method.
|
|
151
|
-
def execute_dui(sql, opts=
|
|
151
|
+
def execute_dui(sql, opts=OPTS)
|
|
152
152
|
execute(sql, opts.merge(:meth=>:numrows))
|
|
153
153
|
end
|
|
154
154
|
|
|
155
155
|
# Store the sql used, and return the value of the #autoid method.
|
|
156
|
-
def execute_insert(sql, opts=
|
|
156
|
+
def execute_insert(sql, opts=OPTS)
|
|
157
157
|
execute(sql, opts.merge(:meth=>:autoid))
|
|
158
158
|
end
|
|
159
159
|
|
|
@@ -186,7 +186,7 @@ module Sequel
|
|
|
186
186
|
end
|
|
187
187
|
end
|
|
188
188
|
|
|
189
|
-
def _execute(c, sql, opts=
|
|
189
|
+
def _execute(c, sql, opts=OPTS, &block)
|
|
190
190
|
sql += " -- args: #{opts[:arguments].inspect}" if opts[:arguments]
|
|
191
191
|
sql += " -- #{@opts[:append]}" if @opts[:append]
|
|
192
192
|
sql += " -- #{c.server.is_a?(Symbol) ? c.server : c.server.inspect}" if c.server != :default
|
|
@@ -362,15 +362,15 @@ module Sequel
|
|
|
362
362
|
|
|
363
363
|
private
|
|
364
364
|
|
|
365
|
-
def execute(sql, opts=
|
|
365
|
+
def execute(sql, opts=OPTS, &block)
|
|
366
366
|
super(sql, opts.merge(:dataset=>self), &block)
|
|
367
367
|
end
|
|
368
368
|
|
|
369
|
-
def execute_dui(sql, opts=
|
|
369
|
+
def execute_dui(sql, opts=OPTS, &block)
|
|
370
370
|
super(sql, opts.merge(:dataset=>self), &block)
|
|
371
371
|
end
|
|
372
372
|
|
|
373
|
-
def execute_insert(sql, opts=
|
|
373
|
+
def execute_insert(sql, opts=OPTS, &block)
|
|
374
374
|
super(sql, opts.merge(:dataset=>self), &block)
|
|
375
375
|
end
|
|
376
376
|
end
|