Permalink
Browse files

Use `table_exists?` from the schema cache.

  • Loading branch information...
1 parent 007965a commit 5b82f50feff3c80cbe7a7ae33b078baa1515150a @tenderlove tenderlove committed Dec 9, 2011
@@ -762,7 +762,7 @@ def set_sequence_name(value = nil, &block) #:nodoc:
# Indicates whether the table associated with this class exists
def table_exists?
- connection.table_exists?(table_name)
+ connection.schema_cache.table_exists?(table_name)
end
# Returns an array of column objects for the table associated with this class.
@@ -42,10 +42,7 @@ def initialize(conn)
def table_exists?(name)
return @tables[name] if @tables.key? name
- connection.tables.each { |table| @tables[table] = true }
- @tables[name] = connection.table_exists?(name) if !@tables.key?(name)
-
- @tables[name]
+ @tables[name] = connection.table_exists?(name)
end
# Clears out internal caches:
@@ -66,6 +63,7 @@ def clear_table_cache!(table_name)
@columns_hash.delete table_name
@column_defaults.delete table_name
@primary_keys.delete table_name
+ @tables.delete table_name
end
end
end
@@ -825,12 +825,12 @@ def test_caching_of_columns
# clear cache possibly created by other tests
david.projects.reset_column_information
- # One query for columns, one for primary key
- assert_queries(2) { david.projects.columns; david.projects.columns }
+ # One query for columns, one for primary key, one for table existence
+ assert_queries(3) { david.projects.columns; david.projects.columns }
## and again to verify that reset_column_information clears the cache correctly
david.projects.reset_column_information
- assert_queries(2) { david.projects.columns; david.projects.columns }
+ assert_queries(3) { david.projects.columns; david.projects.columns }
end
def test_attributes_are_being_set_when_initialized_from_habm_association_with_where_clause
@@ -9,6 +9,7 @@ class SessionTest < ActiveRecord::TestCase
def setup
super
+ ActiveRecord::Base.connection.schema_cache.clear!
Session.drop_table! if Session.table_exists?
end

0 comments on commit 5b82f50

Please sign in to comment.