Included Modules

Class Index [+]

Quicksearch

Sequel::DB2::Database

Constants

TEMPORARY
NullHandle
ERROR_MAP

Attributes

conversion_procs[R]

Hash of connection procs for converting

Public Class Methods

new(opts={}) click to toggle source
    # File lib/sequel/adapters/db2.rb, line 47
47:       def initialize(opts={})
48:         super
49:         @conversion_procs = DB2_TYPES.dup
50:         @conversion_procs[DB2CLI::SQL_TYPE_TIMESTAMP] = method(:to_application_timestamp_db2)
51:       end

Public Instance Methods

check_error(rc, msg) click to toggle source
     # File lib/sequel/adapters/db2.rb, line 87
 87:       def check_error(rc, msg)
 88:         case rc
 89:         when DB2CLI::SQL_SUCCESS, DB2CLI::SQL_SUCCESS_WITH_INFO, DB2CLI::SQL_NO_DATA_FOUND
 90:           nil
 91:         when DB2CLI::SQL_INVALID_HANDLE, DB2CLI::SQL_STILL_EXECUTING
 92:           e = DB2Error.new("#{ERROR_MAP[rc]}: #{msg}")
 93:           e.set_backtrace(caller)
 94:           raise_error(e, :disconnect=>true)
 95:         else
 96:           e = DB2Error.new("#{ERROR_MAP[rc] || "Error code #{rc}"}: #{msg}")
 97:           e.set_backtrace(caller)
 98:           raise_error(e, :disconnect=>true)
 99:         end
100:       end
checked_error(msg) click to toggle source
     # File lib/sequel/adapters/db2.rb, line 102
102:       def checked_error(msg)
103:         rc, *ary= yield
104:         check_error(rc, msg)
105:         ary.length <= 1 ? ary.first : ary
106:       end
connect(server) click to toggle source
    # File lib/sequel/adapters/db2.rb, line 53
53:       def connect(server)
54:         opts = server_opts(server)
55:         dbc = checked_error("Could not allocate database connection"){DB2CLI.SQLAllocHandle(DB2CLI::SQL_HANDLE_DBC, NullHandle)}
56:         checked_error("Could not connect to database"){DB2CLI.SQLConnect(dbc, opts[:database], opts[:user], opts[:password])}
57:         dbc
58:       end
do(sql, opts={}, &block) click to toggle source
Alias for: execute
execute(sql, opts={}, &block) click to toggle source
    # File lib/sequel/adapters/db2.rb, line 60
60:       def execute(sql, opts={}, &block)
61:         synchronize(opts[:server]){|conn| log_connection_execute(conn, sql, &block)}
62:       end
Also aliased as: do
execute_insert(sql, opts={}) click to toggle source
    # File lib/sequel/adapters/db2.rb, line 65
65:       def execute_insert(sql, opts={})
66:         synchronize(opts[:server]) do |conn|
67:           log_connection_execute(conn, sql)
68:           sql = "SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1"
69:           log_connection_execute(conn, sql) do |sth|
70:             name, buflen, datatype, size, digits, nullable = checked_error("Could not describe column"){DB2CLI.SQLDescribeCol(sth, 1, 256)}
71:             if DB2CLI.SQLFetch(sth) != DB2CLI::SQL_NO_DATA_FOUND
72:               v, _ = checked_error("Could not get data"){DB2CLI.SQLGetData(sth, 1, datatype, size)}
73:               if v.is_a?(String) 
74:                 return v.to_i
75:               else
76:                 return nil
77:               end
78:             end
79:           end
80:         end
81:       end
to_application_timestamp_db2(v) click to toggle source
     # File lib/sequel/adapters/db2.rb, line 108
108:       def to_application_timestamp_db2(v)
109:         to_application_timestamp(v.to_s)
110:       end

Private Instance Methods

begin_transaction(conn, opts={}) click to toggle source
     # File lib/sequel/adapters/db2.rb, line 114
114:       def begin_transaction(conn, opts={})
115:         log_yield(TRANSACTION_BEGIN){DB2CLI.SQLSetConnectAttr(conn, DB2CLI::SQL_ATTR_AUTOCOMMIT, DB2CLI::SQL_AUTOCOMMIT_OFF)}
116:       end
commit_transaction(conn, opts={}) click to toggle source
     # File lib/sequel/adapters/db2.rb, line 128
128:       def commit_transaction(conn, opts={})
129:         log_yield(TRANSACTION_COMMIT){DB2CLI.SQLEndTran(DB2CLI::SQL_HANDLE_DBC, conn, DB2CLI::SQL_COMMIT)}
130:       end
disconnect_connection(conn) click to toggle source
     # File lib/sequel/adapters/db2.rb, line 157
157:       def disconnect_connection(conn)
158:         checked_error("Could not disconnect from database"){DB2CLI.SQLDisconnect(conn)}
159:         checked_error("Could not free Database handle"){DB2CLI.SQLFreeHandle(DB2CLI::SQL_HANDLE_DBC, conn)}
160:       end
log_connection_execute(conn, sql) click to toggle source
     # File lib/sequel/adapters/db2.rb, line 132
132:       def log_connection_execute(conn, sql)
133:         sth = checked_error("Could not allocate statement"){DB2CLI.SQLAllocHandle(DB2CLI::SQL_HANDLE_STMT, conn)}
134: 
135:         begin
136:           checked_error("Could not execute statement: #{sql}"){log_yield(sql){DB2CLI.SQLExecDirect(sth, sql)}}
137:           
138:           if block_given?
139:             yield(sth)
140:           else
141:             checked_error("Could not get RPC"){DB2CLI.SQLRowCount(sth)}
142:           end
143:         ensure
144:           checked_error("Could not free statement"){DB2CLI.SQLFreeHandle(DB2CLI::SQL_HANDLE_STMT, sth)}
145:         end
146:       end
remove_transaction(conn, committed) click to toggle source
     # File lib/sequel/adapters/db2.rb, line 118
118:       def remove_transaction(conn, committed)
119:         DB2CLI.SQLSetConnectAttr(conn, DB2CLI::SQL_ATTR_AUTOCOMMIT, DB2CLI::SQL_AUTOCOMMIT_ON)
120:       ensure
121:         super
122:       end
rollback_transaction(conn, opts={}) click to toggle source
     # File lib/sequel/adapters/db2.rb, line 124
124:       def rollback_transaction(conn, opts={})
125:         log_yield(TRANSACTION_ROLLBACK){DB2CLI.SQLEndTran(DB2CLI::SQL_HANDLE_DBC, conn, DB2CLI::SQL_ROLLBACK)}
126:       end
schema_column_type(db_type) click to toggle source

Convert smallint type to boolean if convert_smallint_to_bool is true

     # File lib/sequel/adapters/db2.rb, line 149
149:       def schema_column_type(db_type)
150:         if DB2.convert_smallint_to_bool && db_type =~ /smallint/ 
151:           :boolean
152:         else
153:           super
154:         end
155:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.