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 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

[Source]

    # 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

[Source]

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

[Source]

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

[Source]

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

[Source]

    # File lib/sequel/adapters/cubrid.rb, line 33
33:       def server_version
34:         @server_version ||= synchronize{|c| c.server_version}
35:       end

[Validate]