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