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