# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
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.
Generated with the Darkfish Rdoc Generator 1.1.6.