Class: Sequel::IBMDB::Database
- Includes:
- DB2::DatabaseMethods
- Defined in:
- lib/sequel/adapters/ibmdb.rb
Constant Summary
Constants inherited from Database
Database::ADAPTERS, Database::COLUMN_DEFINITION_ORDER, Database::COLUMN_SCHEMA_DATETIME_TYPES, Database::COLUMN_SCHEMA_STRING_TYPES, Database::COMBINABLE_ALTER_TABLE_OPS, Database::DEFAULT_DATABASE_ERROR_REGEXPS, Database::DEFAULT_STRING_COLUMN_SIZE, Database::EXTENSIONS, Database::OPTS, Database::SCHEMA_TYPE_CLASSES, Database::TRANSACTION_ISOLATION_LEVELS
Instance Attribute Summary collapse
-
#conversion_procs ⇒ Object
readonly
Hash of connection procs for converting.
-
#convert_smallint_to_bool ⇒ Object
Whether to convert smallint values to bool for this Database instance.
Attributes included from DB2::DatabaseMethods
Attributes inherited from Database
#cache_schema, #check_string_typecast_bytesize, #dataset_class, #default_string_column_size, #log_connection_info, #log_warn_duration, #loggers, #opts, #pool, #prepared_statements, #sql_log_level, #timezone, #transaction_isolation_level
Instance Method Summary collapse
-
#connect(server) ⇒ Object
Create a new connection object for the given server.
- #execute(sql, opts = OPTS, &block) ⇒ Object
- #execute_insert(sql, opts = OPTS) ⇒ Object
-
#execute_prepared_statement(ps_name, opts) ⇒ Object
Execute a prepared statement named by name on the database.
- #freeze ⇒ Object
Methods included from DB2::DatabaseMethods
#database_type, #db2_version, #indexes, #offset_strategy, #schema_parse_table, #supports_transaction_isolation_levels?, #table_exists?, #tables, #views
Methods inherited from 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_join_table!, #create_join_table?, #create_or_replace_view, #create_table, #create_table!, #create_table?, #create_table_generator, #create_view, #database_type, #dataset, #disconnect, #disconnect_connection, #drop_column, #drop_index, #drop_join_table, #drop_table, #drop_table?, #drop_view, #execute_ddl, #execute_dui, #extend_datasets, #extension, extension, #fetch, #from, #from_application_timestamp, #get, #global_index_namespace?, #in_transaction?, #initialize, #inspect, #literal, #literal_symbol, #literal_symbol_set, load_adapter, #log_connection_yield, #log_exception, #log_info, #logger=, #new_connection, #prepared_statement, #quote_identifier, register_extension, #remove_servers, #rename_column, #rename_table, #rollback_checker, #rollback_on_exit, #run, run_after_initialize, #schema, #schema_type_class, #select, #serial_primary_key_options, #servers, #set_column_default, #set_column_type, #set_prepared_statement, set_shared_adapter_scheme, #sharded?, #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?, #supports_views_with_check_option?, #supports_views_with_local_check_option?, #synchronize, #table_exists?, #test_connection, #to_application_timestamp, #transaction, #typecast_value, #uri, #url, #valid_connection?
Constructor Details
This class inherits a constructor from Sequel::Database
Instance Attribute Details
#conversion_procs ⇒ Object (readonly)
Hash of connection procs for converting
182 183 184 |
# File 'lib/sequel/adapters/ibmdb.rb', line 182 def conversion_procs @conversion_procs end |
#convert_smallint_to_bool ⇒ Object
Whether to convert smallint values to bool for this Database instance
185 186 187 |
# File 'lib/sequel/adapters/ibmdb.rb', line 185 def convert_smallint_to_bool @convert_smallint_to_bool end |
Instance Method Details
#connect(server) ⇒ Object
Create a new connection object for the given server.
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
# File 'lib/sequel/adapters/ibmdb.rb', line 188 def connect(server) opts = server_opts(server) connection_params = if opts[:host].nil? && opts[:port].nil? && opts[:database] # use a cataloged connection opts.values_at(:database, :user, :password) else # use uncataloged connection so that host and port can be supported 'Driver={IBM DB2 ODBC DRIVER};' \ "Database=#{opts[:database]};" \ "Hostname=#{opts[:host]};" \ "Port=#{opts[:port] || 50000};" \ 'Protocol=TCPIP;' \ "Uid=#{opts[:user]};" \ "Pwd=#{opts[:password]};" \ end Connection.new(connection_params) end |
#execute(sql, opts = OPTS, &block) ⇒ Object
208 209 210 211 212 213 214 215 216 |
# File 'lib/sequel/adapters/ibmdb.rb', line 208 def execute(sql, opts=OPTS, &block) if sql.is_a?(Symbol) execute_prepared_statement(sql, opts, &block) else synchronize(opts[:server]){|c| _execute(c, sql, opts, &block)} end rescue Connection::Error => e raise_error(e) end |
#execute_insert(sql, opts = OPTS) ⇒ Object
218 219 220 221 222 223 224 225 226 227 228 229 |
# File 'lib/sequel/adapters/ibmdb.rb', line 218 def execute_insert(sql, opts=OPTS) synchronize(opts[:server]) do |c| if sql.is_a?(Symbol) execute_prepared_statement(sql, opts) else _execute(c, sql, opts) end _execute(c, "SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1", opts){|stmt| i = stmt.fetch_array.first.to_i; i} end rescue Connection::Error => e raise_error(e) end |
#execute_prepared_statement(ps_name, opts) ⇒ Object
Execute a prepared statement named by name on the database.
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 |
# File 'lib/sequel/adapters/ibmdb.rb', line 232 def execute_prepared_statement(ps_name, opts) args = opts[:arguments] ps = prepared_statement(ps_name) sql = ps.prepared_sql synchronize(opts[:server]) do |conn| unless conn.prepared_statements.fetch(ps_name, []).first == sql log_connection_yield("PREPARE #{ps_name}: #{sql}", conn){conn.prepare(sql, ps_name)} end args = args.map{|v| v.nil? ? nil : prepared_statement_arg(v)} log_sql = "EXECUTE #{ps_name}" if ps.log_sql log_sql += " (" log_sql << sql log_sql << ")" end begin stmt = log_connection_yield(log_sql, conn, args){conn.execute_prepared(ps_name, *args)} if defined?(yield) yield(stmt) else stmt.affected end ensure stmt.free_result if stmt end end end |
#freeze ⇒ Object
260 261 262 263 |
# File 'lib/sequel/adapters/ibmdb.rb', line 260 def freeze @conversion_procs.freeze super end |