class Sequel::SqlAnywhere::Database
Attributes
api[RW]
Public Instance Methods
connect(server)
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb 47 def connect(server) 48 opts = server_opts(server) 49 unless conn_string = opts[:conn_string] 50 conn_string = [] 51 conn_string << "Host=#{opts[:host]}#{":#{opts[:port]}" if opts[:port]}" if opts[:host] 52 conn_string << "DBN=#{opts[:database]}" if opts[:database] 53 conn_string << "UID=#{opts[:user]}" if opts[:user] 54 conn_string << "Password=#{opts[:password]}" if opts[:password] 55 conn_string << "CommLinks=#{opts[:commlinks]}" if opts[:commlinks] 56 conn_string << "ConnectionName=#{opts[:connection_name]}" if opts[:connection_name] 57 conn_string << "CharSet=#{opts[:encoding]}" if opts[:encoding] 58 conn_string << "Idle=0" # Prevent the server from disconnecting us if we're idle for >240mins (by default) 59 conn_string << nil 60 conn_string = conn_string.join(';') 61 end 62 63 conn = @api.sqlany_new_connection 64 raise LoadError, "Could not connect" unless conn && @api.sqlany_connect(conn, conn_string) == 1 65 66 if Sequel.application_timezone == :utc 67 @api.sqlany_execute_immediate(conn, "SET TEMPORARY OPTION time_zone_adjustment=0") 68 end 69 70 conn 71 end
disconnect_connection(c)
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb 73 def disconnect_connection(c) 74 @api.sqlany_disconnect(c) 75 end
execute(sql, opts=OPTS, &block)
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb 83 def execute(sql, opts=OPTS, &block) 84 synchronize(opts[:server]) do |conn| 85 _execute(conn, :select, sql, opts, &block) 86 end 87 end
execute_dui(sql, opts=OPTS)
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb 77 def execute_dui(sql, opts=OPTS) 78 synchronize(opts[:server]) do |conn| 79 _execute(conn, :rows, sql, opts) 80 end 81 end
execute_insert(sql, opts=OPTS)
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb 89 def execute_insert(sql, opts=OPTS) 90 synchronize(opts[:server]) do |conn| 91 _execute(conn, :insert, sql, opts) 92 end 93 end
freeze()
click to toggle source
Calls superclass method
Sequel::SqlAnywhere::DatabaseMethods#freeze
# File lib/sequel/adapters/sqlanywhere.rb 95 def freeze 96 @conversion_procs.freeze 97 super 98 end
Private Instance Methods
_execute(conn, type, sql, opts) { |rs| ... }
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb 102 def _execute(conn, type, sql, opts) 103 unless rs = log_connection_yield(sql, conn){@api.sqlany_execute_direct(conn, sql)} 104 result, errstr = @api.sqlany_error(conn) 105 raise_error(SQLAnywhereException.new(errstr, result, sql)) 106 end 107 108 case type 109 when :select 110 yield rs if block_given? 111 when :rows 112 return @api.sqlany_affected_rows(rs) 113 when :insert 114 _execute(conn, :select, 'SELECT @@IDENTITY', opts){|r| return @api.sqlany_get_column(r, 0)[1] if r && @api.sqlany_fetch_next(r) == 1} 115 end 116 ensure 117 @api.sqlany_commit(conn) unless in_transaction? 118 @api.sqlany_free_stmt(rs) if rs 119 end
adapter_initialize()
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb 121 def adapter_initialize 122 @convert_smallint_to_bool = true 123 @conversion_procs = SQLANYWHERE_TYPES.dup 124 @conversion_procs[392] = method(:to_application_timestamp_sa) 125 @api = SQLAnywhere::SQLAnywhereInterface.new 126 raise LoadError, "Could not load SQLAnywhere DBCAPI library" if SQLAnywhere::API.sqlany_initialize_interface(@api) == 0 127 raise LoadError, "Could not initialize SQLAnywhere DBCAPI library" if @api.sqlany_init == 0 128 end
dataset_class_default()
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb 130 def dataset_class_default 131 Dataset 132 end
log_connection_execute(conn, sql)
click to toggle source
# File lib/sequel/adapters/sqlanywhere.rb 134 def log_connection_execute(conn, sql) 135 _execute(conn, nil, sql, OPTS) 136 end