Class Sequel::DB2::Database
In: lib/sequel/adapters/db2.rb
Parent: Sequel::Database

Methods

Included Modules

DatabaseMethods

Constants

TEMPORARY = 'GLOBAL TEMPORARY '.freeze
NullHandle = DB2CLI.SQLAllocHandle(DB2CLI::SQL_HANDLE_ENV, DB2CLI::SQL_NULL_HANDLE)
ERROR_MAP = {}

Attributes

conversion_procs  [R]  Hash of connection procs for converting

Public Instance methods

[Source]

     # File lib/sequel/adapters/db2.rb, line 89
 89:       def check_error(rc, msg)
 90:         case rc
 91:         when DB2CLI::SQL_SUCCESS, DB2CLI::SQL_SUCCESS_WITH_INFO, DB2CLI::SQL_NO_DATA_FOUND
 92:           nil
 93:         when DB2CLI::SQL_INVALID_HANDLE, DB2CLI::SQL_STILL_EXECUTING
 94:           e = DB2Error.new("#{ERROR_MAP[rc]}: #{msg}")
 95:           e.set_backtrace(caller)
 96:           raise_error(e, :disconnect=>true)
 97:         else
 98:           e = DB2Error.new("#{ERROR_MAP[rc] || "Error code #{rc}"}: #{msg}")
 99:           e.set_backtrace(caller)
100:           raise_error(e, :disconnect=>true)
101:         end
102:       end

[Source]

     # File lib/sequel/adapters/db2.rb, line 104
104:       def checked_error(msg)
105:         rc, *ary= yield
106:         check_error(rc, msg)
107:         ary.length <= 1 ? ary.first : ary
108:       end

[Source]

    # File lib/sequel/adapters/db2.rb, line 47
47:       def connect(server)
48:         opts = server_opts(server)
49:         dbc = checked_error("Could not allocate database connection"){DB2CLI.SQLAllocHandle(DB2CLI::SQL_HANDLE_DBC, NullHandle)}
50:         checked_error("Could not connect to database"){DB2CLI.SQLConnect(dbc, opts[:database], opts[:user], opts[:password])}
51:         dbc
52:       end

[Source]

    # File lib/sequel/adapters/db2.rb, line 54
54:       def disconnect_connection(conn)
55:         DB2CLI.SQLDisconnect(conn)
56:         DB2CLI.SQLFreeHandle(DB2CLI::SQL_HANDLE_DBC, conn)
57:       end

[Source]

    # File lib/sequel/adapters/db2.rb, line 62
62:       def do(*a, &block)
63:         Sequel::Deprecation.deprecate('Database#do', 'Please use Database#execute')
64:         execute(*a, &block)
65:       end

[Source]

    # File lib/sequel/adapters/db2.rb, line 59
59:       def execute(sql, opts={}, &block)
60:         synchronize(opts[:server]){|conn| log_connection_execute(conn, sql, &block)}
61:       end

[Source]

    # File lib/sequel/adapters/db2.rb, line 67
67:       def execute_insert(sql, opts={})
68:         synchronize(opts[:server]) do |conn|
69:           log_connection_execute(conn, sql)
70:           sql = "SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1"
71:           log_connection_execute(conn, sql) do |sth|
72:             name, buflen, datatype, size, digits, nullable = checked_error("Could not describe column"){DB2CLI.SQLDescribeCol(sth, 1, 256)}
73:             if DB2CLI.SQLFetch(sth) != DB2CLI::SQL_NO_DATA_FOUND
74:               v, _ = checked_error("Could not get data"){DB2CLI.SQLGetData(sth, 1, datatype, size)}
75:               if v.is_a?(String) 
76:                 return v.to_i
77:               else
78:                 return nil
79:               end
80:             end
81:           end
82:         end
83:       end

[Source]

     # File lib/sequel/adapters/db2.rb, line 110
110:       def to_application_timestamp_db2(v)
111:         to_application_timestamp(v.to_s)
112:       end

[Validate]