Class Sequel::Cubrid::Database
In: lib/sequel/adapters/cubrid.rb
Parent: Sequel::Database

Methods

Included Modules

Sequel::Cubrid::DatabaseMethods

Constants

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

Public Instance methods

[Source]

    # 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

[Source]

    # 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

[Source]

    # File lib/sequel/adapters/cubrid.rb, line 80
80:       def execute_ddl(sql, opts=OPTS)
81:         execute(sql, opts.merge(:type=>:ddl))
82:       end

[Source]

    # File lib/sequel/adapters/cubrid.rb, line 84
84:       def execute_dui(sql, opts=OPTS)
85:         execute(sql, opts.merge(:type=>:dui))
86:       end

[Source]

    # File lib/sequel/adapters/cubrid.rb, line 88
88:       def execute_insert(sql, opts=OPTS)
89:         execute(sql, opts.merge(:type=>:insert))
90:       end

[Source]

    # File lib/sequel/adapters/cubrid.rb, line 35
35:       def server_version
36:         @server_version ||= synchronize(&:server_version)
37:       end

[Validate]