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
    # 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 defined?(yield)
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