class Sequel::Cubrid::Database

  1. lib/sequel/adapters/cubrid.rb
Parent: Cubrid

Constants

LAST_INSERT_ID = "SELECT LAST_INSERT_ID()".freeze  
ROW_COUNT = "SELECT ROW_COUNT()".freeze  

Public Instance methods

connect (server)
[show 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)
[show 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)
[show 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)
[show 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)
[show source]
# File lib/sequel/adapters/cubrid.rb, line 86
def execute_insert(sql, opts=OPTS)
  execute(sql, opts.merge(:type=>:insert))
end
server_version ()
[show source]
# File lib/sequel/adapters/cubrid.rb, line 33
def server_version
  @server_version ||= synchronize{|c| c.server_version}
end