class Sequel::Cubrid::Database
Constants
- DatasetClass
- LAST_INSERT_ID
- ROW_COUNT
Public Instance Methods
connect(server)
click to toggle source
# File lib/sequel/adapters/cubrid.rb, line 20 def connect(server) opts = server_opts(server) conn = ::Cubrid.connect( opts[:database], opts[:host] || 'localhost', opts[:port] || 30000, opts[:user] || 'public', opts[:password] || '' ) conn.auto_commit = true conn end
execute(sql, opts=OPTS) { |r| ... }
click to toggle source
# File lib/sequel/adapters/cubrid.rb, line 37 def execute(sql, opts=OPTS) synchronize(opts[:server]) do |conn| r = log_yield(sql) do begin conn.query(sql) rescue => e raise_error(e) end end if block_given? yield(r) else begin case opts[:type] when :dui # This is cubrid's API, but it appears to be completely broken, # giving StandardError: ERROR: CCI, -18, Invalid request handle #r.affected_rows # Work around bugs by using the ROW_COUNT function. begin r2 = conn.query(ROW_COUNT) r2.each{|a| return a.first.to_i} ensure r2.close if r2 end when :insert begin r2 = conn.query(LAST_INSERT_ID) r2.each{|a| return a.first.to_i} ensure r2.close if r2 end end ensure r.close end end end end
execute_ddl(sql, opts=OPTS)
click to toggle source
# File lib/sequel/adapters/cubrid.rb, line 78 def execute_ddl(sql, opts=OPTS) execute(sql, opts.merge(:type=>:ddl)) end
execute_dui(sql, opts=OPTS)
click to toggle source
# File lib/sequel/adapters/cubrid.rb, line 82 def execute_dui(sql, opts=OPTS) execute(sql, opts.merge(:type=>:dui)) end
execute_insert(sql, opts=OPTS)
click to toggle source
# File lib/sequel/adapters/cubrid.rb, line 86 def execute_insert(sql, opts=OPTS) execute(sql, opts.merge(:type=>:insert)) end
server_version()
click to toggle source
# File lib/sequel/adapters/cubrid.rb, line 33 def server_version @server_version ||= synchronize{|c| c.server_version} end
Private Instance Methods
begin_transaction(conn, opts=OPTS)
click to toggle source
# File lib/sequel/adapters/cubrid.rb, line 92 def begin_transaction(conn, opts=OPTS) log_yield(TRANSACTION_BEGIN){conn.auto_commit = false} end
commit_transaction(conn, opts=OPTS)
click to toggle source
# File lib/sequel/adapters/cubrid.rb, line 96 def commit_transaction(conn, opts=OPTS) log_yield(TRANSACTION_COMMIT){conn.commit} end
database_error_classes()
click to toggle source
# File lib/sequel/adapters/cubrid.rb, line 100 def database_error_classes [StandardError] end
remove_transaction(conn, committed)
click to toggle source
Calls superclass method
Sequel::Database#remove_transaction
# File lib/sequel/adapters/cubrid.rb, line 104 def remove_transaction(conn, committed) conn.auto_commit = true ensure super end
rollback_transaction(conn, opts=OPTS)
click to toggle source
This doesn't actually work, as the cubrid ruby driver does not implement transactions correctly.
# File lib/sequel/adapters/cubrid.rb, line 112 def rollback_transaction(conn, opts=OPTS) log_yield(TRANSACTION_ROLLBACK){conn.rollback} end