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 98 98: def alter_table(name, *) 99: super 100: remove_cached_schema(name) 101: nil 102: end
# 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
# 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
# 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
# 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