| Module | Sequel::ADO::Access::DatabaseMethods |
| In: |
lib/sequel/adapters/ado/access.rb
|
Remove cached schema after altering a table, since otherwise it can be cached incorrectly in the rename column case.
# File lib/sequel/adapters/ado/access.rb, line 95
95: def alter_table(name, *)
96: super
97: remove_cached_schema(name)
98: nil
99: end
# File lib/sequel/adapters/ado/access.rb, line 108
108: def execute_insert(sql, opts=OPTS)
109: synchronize(opts[:server]) do |conn|
110: begin
111: log_connection_yield(sql, conn){conn.Execute(sql)}
112: last_insert_sql = "SELECT @@IDENTITY"
113: res = log_connection_yield(last_insert_sql, conn){conn.Execute(last_insert_sql)}
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
OpenSchema returns compound foreign key relationships as multiple rows
# 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
OpenSchema returns compound indexes as multiple rows
# 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
# 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