Class: Sequel::DataObjects::Database
- Inherits:
-
Sequel::Database
- Object
- Sequel::Database
- Sequel::DataObjects::Database
- Defined in:
- lib/sequel/adapters/do.rb
Overview
DataObjects uses it’s own internal connection pooling in addition to the pooling that Sequel uses. You should make sure that you don’t set the connection pool size to more than 8 for a Sequel::DataObjects::Database object, or hack DataObjects (or Extlib) to use a pool size at least as large as the pool size being used by Sequel.
Constant Summary collapse
- DISCONNECT_ERROR_RE =
/terminating connection due to administrator command/
- DatasetClass =
self
Constants inherited from Sequel::Database
Sequel::Database::ADAPTERS, Sequel::Database::AUTOINCREMENT, Sequel::Database::COLUMN_DEFINITION_ORDER, Sequel::Database::COLUMN_SCHEMA_DATETIME_TYPES, Sequel::Database::COLUMN_SCHEMA_STRING_TYPES, Sequel::Database::COMBINABLE_ALTER_TABLE_OPS, Sequel::Database::COMMA_SEPARATOR, Sequel::Database::CURRENT_TIMESTAMP_RE, Sequel::Database::DEFAULT_DATABASE_ERROR_REGEXPS, Sequel::Database::DEFAULT_JOIN_TABLE_COLUMN_OPTIONS, Sequel::Database::DEFAULT_STRING_COLUMN_SIZE, Sequel::Database::EXTENSIONS, Sequel::Database::NOT_NULL, Sequel::Database::NULL, Sequel::Database::OPTS, Sequel::Database::PRIMARY_KEY, Sequel::Database::SCHEMA_TYPE_CLASSES, Sequel::Database::SQL_BEGIN, Sequel::Database::SQL_COMMIT, Sequel::Database::SQL_RELEASE_SAVEPOINT, Sequel::Database::SQL_ROLLBACK, Sequel::Database::SQL_ROLLBACK_TO_SAVEPOINT, Sequel::Database::SQL_SAVEPOINT, Sequel::Database::STRING_DEFAULT_RE, Sequel::Database::TEMPORARY, Sequel::Database::TRANSACTION_BEGIN, Sequel::Database::TRANSACTION_COMMIT, Sequel::Database::TRANSACTION_ISOLATION_LEVELS, Sequel::Database::TRANSACTION_ROLLBACK, Sequel::Database::UNDERSCORE, Sequel::Database::UNIQUE, Sequel::Database::UNSIGNED
Instance Attribute Summary
Attributes inherited from Sequel::Database
#cache_schema, #dataset_class, #default_string_column_size, #identifier_input_method, #identifier_output_method, #log_warn_duration, #loggers, #opts, #pool, #prepared_statements, #sql_log_level, #timezone, #transaction_isolation_level
Instance Method Summary collapse
-
#connect(server) ⇒ Object
Setup a DataObjects::Connection to the database.
- #disconnect_connection(conn) ⇒ Object
-
#execute(sql, opts = OPTS) ⇒ Object
Execute the given SQL.
-
#execute_dui(sql, opts = OPTS) ⇒ Object
Execute the SQL on the this database, returning the number of affected rows.
-
#execute_insert(sql, opts = OPTS) ⇒ Object
Execute the SQL on this database, returning the primary key of the table being inserted to.
-
#subadapter ⇒ Object
Return the subadapter type for this database, i.e.
-
#uri(opts = OPTS) ⇒ Object
Return the DataObjects URI for the Sequel URI, removing the do: prefix.
Methods inherited from Sequel::Database
#<<, #[], adapter_class, adapter_scheme, #adapter_scheme, #add_column, #add_index, #add_servers, #after_commit, after_initialize, #after_rollback, #alter_table, #alter_table_generator, #call, #cast_type_literal, connect, #create_join_table, #create_or_replace_view, #create_table, #create_table!, #create_table?, #create_table_generator, #create_view, #database_type, #dataset, #disconnect, #drop_column, #drop_index, #drop_join_table, #drop_table, #drop_table?, #drop_view, #each_server, #execute_ddl, #extend_datasets, extension, #extension, #fetch, #from, #from_application_timestamp, #get, #global_index_namespace?, #in_transaction?, #initialize, #inspect, #literal, #log_exception, #log_info, #log_yield, #logger=, #prepared_statement, #quote_identifier, #quote_identifiers=, #quote_identifiers?, register_extension, #remove_servers, #rename_column, #rename_table, #run, run_after_initialize, #schema, #schema_type_class, #select, #serial_primary_key_options, #servers, #set_column_default, #set_column_type, #set_prepared_statement, #single_threaded?, #supports_create_table_if_not_exists?, #supports_deferrable_constraints?, #supports_deferrable_foreign_key_constraints?, #supports_drop_table_if_exists?, #supports_foreign_key_parsing?, #supports_index_parsing?, #supports_partial_indexes?, #supports_prepared_transactions?, #supports_savepoints?, #supports_savepoints_in_prepared_transactions?, #supports_schema_parsing?, #supports_table_listing?, #supports_transaction_isolation_levels?, #supports_transactional_ddl?, #supports_view_listing?, #synchronize, #table_exists?, #test_connection, #to_application_timestamp, #transaction, #typecast_value, #url, #valid_connection?
Methods included from Metaprogramming
Constructor Details
This class inherits a constructor from Sequel::Database
Instance Method Details
#connect(server) ⇒ Object
Setup a DataObjects::Connection to the database.
48 49 50 |
# File 'lib/sequel/adapters/do.rb', line 48 def connect(server) setup_connection(::DataObjects::Connection.new(uri(server_opts(server)))) end |
#disconnect_connection(conn) ⇒ Object
52 53 54 |
# File 'lib/sequel/adapters/do.rb', line 52 def disconnect_connection(conn) conn.dispose end |
#execute(sql, opts = OPTS) ⇒ Object
Execute the given SQL. If a block is given, the DataObjects::Reader created is yielded to it. A block should not be provided unless a a SELECT statement is being used (or something else that returns rows). Otherwise, the return value is the insert id if opts is :insert, or the number of affected rows, otherwise.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/sequel/adapters/do.rb', line 61 def execute(sql, opts=OPTS) synchronize(opts[:server]) do |conn| begin command = conn.create_command(sql) res = log_yield(sql){block_given? ? command.execute_reader : command.execute_non_query} rescue ::DataObjects::Error => e raise_error(e) end if block_given? begin yield(res) ensure res.close if res end elsif opts[:type] == :insert res.insert_id else res.affected_rows end end end |
#execute_dui(sql, opts = OPTS) ⇒ Object
Execute the SQL on the this database, returning the number of affected rows.
85 86 87 |
# File 'lib/sequel/adapters/do.rb', line 85 def execute_dui(sql, opts=OPTS) execute(sql, opts) end |
#execute_insert(sql, opts = OPTS) ⇒ Object
Execute the SQL on this database, returning the primary key of the table being inserted to.
91 92 93 |
# File 'lib/sequel/adapters/do.rb', line 91 def execute_insert(sql, opts=OPTS) execute(sql, opts.merge(:type=>:insert)) end |
#subadapter ⇒ Object
Return the subadapter type for this database, i.e. sqlite3 for do:sqlite3::memory:.
97 98 99 |
# File 'lib/sequel/adapters/do.rb', line 97 def subadapter uri.split(":").first end |
#uri(opts = OPTS) ⇒ Object
Return the DataObjects URI for the Sequel URI, removing the do: prefix.
103 104 105 106 |
# File 'lib/sequel/adapters/do.rb', line 103 def uri(opts=OPTS) opts = @opts.merge(opts) (opts[:uri] || opts[:url]).sub(/\Ado:/, '') end |