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