class Sequel::SqlAnywhere::Database
Constants
- DEFAULT_CONFIG
- DatasetClass
- LAST_INSERT_ID
Attributes
api[RW]
Public Instance Methods
connect(server)
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb, line 51 def connect(server) opts = server_opts(server) unless conn_string = opts[:conn_string] conn_string = [] conn_string << "Host=#{opts[:host]}#{":#{opts[:port]}" if opts[:port]}" if opts[:host] conn_string << "DBN=#{opts[:database]}" if opts[:database] conn_string << "UID=#{opts[:user]}" if opts[:user] conn_string << "Password=#{opts[:password]}" if opts[:password] conn_string << "CommLinks=#{opts[:commlinks]}" if opts[:commlinks] conn_string << "ConnectionName=#{opts[:connection_name]}" if opts[:connection_name] conn_string << "CharSet=#{opts[:encoding]}" if opts[:encoding] conn_string << "Idle=0" # Prevent the server from disconnecting us if we're idle for >240mins (by default) conn_string << nil conn_string = conn_string.join(';') end conn = @api.sqlany_new_connection raise LoadError, "Could not connect" unless conn && @api.sqlany_connect(conn, conn_string) == 1 if Sequel.application_timezone == :utc @api.sqlany_execute_immediate(conn, "SET TEMPORARY OPTION time_zone_adjustment=0") end conn end
disconnect_connection(c)
click to toggle source
Closes given database connection.
# File lib/sequel/adapters/sqlanywhere.rb, line 78 def disconnect_connection(c) @api.sqlany_disconnect(c) end
execute(sql, opts=OPTS, &block)
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb, line 89 def execute(sql, opts=OPTS, &block) synchronize(opts[:server]) do |conn| _execute(conn, :select, sql, opts, &block) end end
execute_dui(sql, opts=OPTS)
click to toggle source
Returns number of rows affected
# File lib/sequel/adapters/sqlanywhere.rb, line 83 def execute_dui(sql, opts=OPTS) synchronize(opts[:server]) do |conn| _execute(conn, :rows, sql, opts) end end
execute_insert(sql, opts=OPTS)
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb, line 95 def execute_insert(sql, opts=OPTS) synchronize(opts[:server]) do |conn| _execute(conn, :insert, sql, opts) end end
freeze()
click to toggle source
Calls superclass method
Sequel::SqlAnywhere::DatabaseMethods#freeze
# File lib/sequel/adapters/sqlanywhere.rb, line 101 def freeze @conversion_procs.freeze super end
Private Instance Methods
_execute(conn, type, sql, opts) { |rs| ... }
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb, line 109 def _execute(conn, type, sql, opts) unless rs = log_connection_yield(sql, conn){@api.sqlany_execute_direct(conn, sql)} result, errstr = @api.sqlany_error(conn) raise_error(SQLAnywhereException.new(errstr, result, sql)) end case type when :select yield rs if block_given? when :rows return @api.sqlany_affected_rows(rs) when :insert _execute(conn, :select, LAST_INSERT_ID, opts){|r| return @api.sqlany_get_column(r, 0)[1] if r && @api.sqlany_fetch_next(r) == 1} end ensure @api.sqlany_commit(conn) unless in_transaction? @api.sqlany_free_stmt(rs) if rs end
adapter_initialize()
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb, line 128 def adapter_initialize @conversion_procs = SQLANYWHERE_TYPES.dup @conversion_procs[392] = method(:to_application_timestamp_sa) @api = SQLAnywhere::SQLAnywhereInterface.new raise LoadError, "Could not load SQLAnywhere DBCAPI library" if SQLAnywhere::API.sqlany_initialize_interface(@api) == 0 raise LoadError, "Could not initialize SQLAnywhere DBCAPI library" if @api.sqlany_init == 0 end
log_connection_execute(conn, sql)
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb, line 136 def log_connection_execute(conn, sql) _execute(conn, nil, sql, OPTS) end