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