| Module | Sequel::ADO::Access::DatabaseMethods |
| In: |
lib/sequel/adapters/ado/access.rb
|
| DECIMAL_TYPE_RE | = | /decimal/io |
| LAST_INSERT_ID | = | "SELECT @@IDENTITY".freeze |
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 96
96: def alter_table(name, *)
97: super
98: remove_cached_schema(name)
99: nil
100: end
# File lib/sequel/adapters/ado/access.rb, line 109
109: def execute_insert(sql, opts={})
110: synchronize(opts[:server]) do |conn|
111: begin
112: r = 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
# File lib/sequel/adapters/ado/access.rb, line 148
148: def foreign_key_list(table, 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
# File lib/sequel/adapters/ado/access.rb, line 133
133: def indexes(table_name,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={})
123: m = output_identifier_meth
124: ado_schema_tables.map {|tbl| m.call(tbl['TABLE_NAME'])}
125: end