Module Sequel::ADO::Access::DatabaseMethods
In: lib/sequel/adapters/ado/access.rb

Methods

Included Modules

Sequel::Access::DatabaseMethods Sequel::Database::SplitAlterTable

Constants

DECIMAL_TYPE_RE = /decimal/io
LAST_INSERT_ID = "SELECT @@IDENTITY".freeze

Public Instance methods

Remove cached schema after altering a table, since otherwise it can be cached incorrectly in the rename column case.

[Source]

     # File lib/sequel/adapters/ado/access.rb, line 96
 96:         def alter_table(name, *)
 97:           super
 98:           remove_cached_schema(name)
 99:           nil
100:         end

Access doesn‘t let you disconnect if inside a transaction, so try rolling back an existing transaction first.

[Source]

     # File lib/sequel/adapters/ado/access.rb, line 104
104:         def disconnect_connection(conn)
105:           conn.RollbackTrans rescue nil
106:           super
107:         end

[Source]

     # File lib/sequel/adapters/ado/access.rb, line 109
109:         def execute_insert(sql, opts=OPTS)
110:           synchronize(opts[:server]) do |conn|
111:             begin
112:               log_yield(sql){conn.Execute(sql)}
113:               res = log_yield(LAST_INSERT_ID){conn.Execute(LAST_INSERT_ID)}
114:               res.getRows.transpose.each{|r| return r.shift}
115:             rescue ::WIN32OLERuntimeError => e
116:               raise_error(e)
117:             end
118:           end
119:           nil
120:         end

Note OpenSchema returns compound foreign key relationships as multiple rows

[Source]

     # File lib/sequel/adapters/ado/access.rb, line 148
148:         def foreign_key_list(table, opts=OPTS)
149:           m = output_identifier_meth
150:           fks = ado_schema_foreign_keys(table).inject({}) do |memo, fk|
151:             name = m.call(fk['FK_NAME'])
152:             specs = memo[name] ||= {
153:               :columns => [],
154:               :table   => m.call(fk['PK_TABLE_NAME']),
155:               :key     => [],
156:               :deferrable => fk['DEFERRABILITY'],
157:               :name    => name,
158:               :on_delete => fk['DELETE_RULE'],
159:               :on_update => fk['UPDATE_RULE']
160:             }
161:             specs[:columns] << m.call(fk['FK_COLUMN_NAME'])
162:             specs[:key]     << m.call(fk['PK_COLUMN_NAME'])
163:             memo
164:           end
165:           fks.values
166:         end

Note OpenSchema returns compound indexes as multiple rows

[Source]

     # File lib/sequel/adapters/ado/access.rb, line 133
133:         def indexes(table_name,opts=OPTS)
134:           m = output_identifier_meth
135:           idxs = ado_schema_indexes(table_name).inject({}) do |memo, idx|
136:             unless idx["PRIMARY_KEY"]
137:               index = memo[m.call(idx["INDEX_NAME"])] ||= {
138:                 :columns=>[], :unique=>idx["UNIQUE"]
139:               }
140:               index[:columns] << m.call(idx["COLUMN_NAME"])
141:             end
142:             memo
143:           end
144:           idxs
145:         end

[Source]

     # File lib/sequel/adapters/ado/access.rb, line 122
122:         def tables(opts=OPTS)
123:           m = output_identifier_meth
124:           ado_schema_tables.map {|tbl| m.call(tbl['TABLE_NAME'])}
125:         end

[Source]

     # File lib/sequel/adapters/ado/access.rb, line 127
127:         def views(opts=OPTS)
128:           m = output_identifier_meth
129:           ado_schema_views.map {|tbl| m.call(tbl['TABLE_NAME'])}
130:         end

[Validate]