Class | Sequel::Cubrid::Database |
In: |
lib/sequel/adapters/cubrid.rb
|
Parent: | Sequel::Database |
ROW_COUNT | = | "SELECT ROW_COUNT()".freeze |
LAST_INSERT_ID | = | "SELECT LAST_INSERT_ID()".freeze |
# File lib/sequel/adapters/cubrid.rb, line 20 20: def connect(server) 21: opts = server_opts(server) 22: conn = ::Cubrid.connect( 23: opts[:database], 24: opts[:host] || 'localhost', 25: opts[:port] || 30000, 26: opts[:user] || 'public', 27: opts[:password] || '' 28: ) 29: conn.auto_commit = true 30: conn 31: end
# File lib/sequel/adapters/cubrid.rb, line 37 37: def execute(sql, opts=OPTS) 38: synchronize(opts[:server]) do |conn| 39: r = log_yield(sql) do 40: begin 41: conn.query(sql) 42: rescue => e 43: raise_error(e) 44: end 45: end 46: if block_given? 47: yield(r) 48: else 49: begin 50: case opts[:type] 51: when :dui 52: # This is cubrid's API, but it appears to be completely broken, 53: # giving StandardError: ERROR: CCI, -18, Invalid request handle 54: #r.affected_rows 55: 56: # Work around bugs by using the ROW_COUNT function. 57: begin 58: r2 = conn.query(ROW_COUNT) 59: r2.each{|a| return a.first.to_i} 60: ensure 61: r2.close if r2 62: end 63: when :insert 64: begin 65: r2 = conn.query(LAST_INSERT_ID) 66: r2.each{|a| return a.first.to_i} 67: ensure 68: r2.close if r2 69: end 70: end 71: ensure 72: r.close 73: end 74: end 75: end 76: end
# File lib/sequel/adapters/cubrid.rb, line 78 78: def execute_ddl(sql, opts=OPTS) 79: execute(sql, opts.merge(:type=>:ddl)) 80: end
# File lib/sequel/adapters/cubrid.rb, line 82 82: def execute_dui(sql, opts=OPTS) 83: execute(sql, opts.merge(:type=>:dui)) 84: end
# File lib/sequel/adapters/cubrid.rb, line 86 86: def execute_insert(sql, opts=OPTS) 87: execute(sql, opts.merge(:type=>:insert)) 88: end