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