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 98
 98:         def alter_table(name, *)
 99:           super
100:           remove_cached_schema(name)
101:           nil
102:         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 106
106:         def disconnect_connection(conn)
107:           conn.RollbackTrans rescue nil
108:           super
109:         end

[Source]

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

Note OpenSchema returns compound foreign key relationships as multiple rows

[Source]

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

Note OpenSchema returns compound indexes as multiple rows

[Source]

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

[Source]

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

[Source]

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

[Validate]