0
@@ -308,6 +308,7 @@ module ActiveRecord
0
+ # Executes a SQL query and returns a MySQL::Result object. Note that you have to free the Result object after you're done using it.
def execute(sql, name = nil) #:nodoc:
0
log(sql, name) { @connection.query(sql) }
0
rescue ActiveRecord::StatementInvalid => exception
0
@@ -414,7 +415,9 @@ module ActiveRecord
0
def tables(name = nil) #:nodoc:
0
- execute("SHOW TABLES", name).each { |field| tables << field[0] }
0
+ result = execute("SHOW TABLES", name)
0
+ result.each { |field| tables << field[0] }
0
@@ -425,7 +428,8 @@ module ActiveRecord
0
def indexes(table_name, name = nil)#:nodoc:
0
- execute("SHOW KEYS FROM #{quote_table_name(table_name)}", name).each do |row|
0
+ result = execute("SHOW KEYS FROM #{quote_table_name(table_name)}", name)
0
if current_index != row[2]
0
next if row[2] == "PRIMARY" # skip the primary key
0
@@ -434,13 +438,16 @@ module ActiveRecord
0
indexes.last.columns << row[4]
0
def columns(table_name, name = nil)#:nodoc:
0
sql = "SHOW FIELDS FROM #{quote_table_name(table_name)}"
0
- execute(sql, name).each { |field| columns << MysqlColumn.new(field[0], field[4], field[1], field[2] == "YES") }
0
+ result = execute(sql, name)
0
+ result.each { |field| columns << MysqlColumn.new(field[0], field[4], field[1], field[2] == "YES") }
0
@@ -521,9 +528,11 @@ module ActiveRecord
0
# Returns a table's primary key and belonging sequence.
0
def pk_and_sequence_for(table) #:nodoc:
0
- execute("describe #{quote_table_name(table)}").each_hash do |h|
0
+ result = execute("describe #{quote_table_name(table)}")
0
+ result.each_hash do |h|
0
keys << h["Field"]if h["Key"] == "PRI"
0
keys.length == 1 ? [keys.first, nil] : nil
Remove the “nodoc” comment here?
I think all the adapters could use some documentation on database specific issues. Maybe that’s a good christmas vacation project?