Module Sequel::ADO::Access::DatabaseMethods
In: lib/sequel/adapters/ado/access.rb

Methods

Included Modules

Sequel::Access::DatabaseMethods Sequel::Database::SplitAlterTable

Public Instance methods

Remove cached schema after altering a table, since otherwise it can be cached incorrectly in the rename column case.

[Source]

    # 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

Access doesn‘t let you disconnect if inside a transaction, so try rolling back an existing transaction first.

[Source]

     # File lib/sequel/adapters/ado/access.rb, line 103
103:         def disconnect_connection(conn)
104:           conn.RollbackTrans rescue nil
105:           super
106:         end

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # File lib/sequel/adapters/ado/access.rb, line 127
127:         def views(opts=OPTS)
128:           m = output_identifier_meth
129:           ado_schema_views.map {|tbl| m.call(tbl['TABLE_NAME'])}
130:         end

[Validate]