From 7f20bb995aa34c6c6869543209595ff811e9dbc3 Mon Sep 17 00:00:00 2001
From: Jon Leighton <j@jonathanleighton.com>
Date: Fri, 16 Dec 2011 13:07:10 +0000
Subject: Don't store defaults in the schema cache

---
 activerecord/lib/active_record/attribute_methods/primary_key.rb    | 4 ++--
 activerecord/lib/active_record/connection_adapters/schema_cache.rb | 5 ++---
 activerecord/test/cases/base_test.rb                               | 1 +
 activerecord/test/cases/connection_adapters/schema_cache_test.rb   | 2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/activerecord/lib/active_record/attribute_methods/primary_key.rb b/activerecord/lib/active_record/attribute_methods/primary_key.rb
index e3c7344f59..f575b26d04 100644
--- a/activerecord/lib/active_record/attribute_methods/primary_key.rb
+++ b/activerecord/lib/active_record/attribute_methods/primary_key.rb
@@ -72,8 +72,8 @@ module ActiveRecord
           when :table_name_with_underscore
             base_name.foreign_key
           else
-            if ActiveRecord::Base != self && connection.schema_cache.table_exists?(table_name)
-              connection.primary_key(table_name)
+            if ActiveRecord::Base != self && table_name
+              connection.schema_cache.primary_keys[table_name]
             else
               'id'
             end
diff --git a/activerecord/lib/active_record/connection_adapters/schema_cache.rb b/activerecord/lib/active_record/connection_adapters/schema_cache.rb
index a8f7fd3648..da507fd3ae 100644
--- a/activerecord/lib/active_record/connection_adapters/schema_cache.rb
+++ b/activerecord/lib/active_record/connection_adapters/schema_cache.rb
@@ -8,7 +8,7 @@ module ActiveRecord
         @connection = conn
         @tables     = {}
 
-        @columns     = Hash.new do |h, table_name|
+        @columns = Hash.new do |h, table_name|
           h[table_name] = conn.columns(table_name, "#{table_name} Columns")
         end
 
@@ -19,8 +19,7 @@ module ActiveRecord
         end
 
         @primary_keys = Hash.new do |h, table_name|
-          h[table_name] = table_exists?(table_name) ?
-                          conn.primary_key(table_name) : 'id'
+          h[table_name] = table_exists?(table_name) ? conn.primary_key(table_name) : nil
         end
       end
 
diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb
index a034dd7e3a..dd0aeada51 100644
--- a/activerecord/test/cases/base_test.rb
+++ b/activerecord/test/cases/base_test.rb
@@ -1494,6 +1494,7 @@ class BasicsTest < ActiveRecord::TestCase
   def test_original_primary_key
     k = Class.new(ActiveRecord::Base)
     def k.name; "Foo"; end
+    k.table_name = "posts"
     k.primary_key = "bar"
 
     assert_deprecated do
diff --git a/activerecord/test/cases/connection_adapters/schema_cache_test.rb b/activerecord/test/cases/connection_adapters/schema_cache_test.rb
index d5ae08cd58..cd98bf90cf 100644
--- a/activerecord/test/cases/connection_adapters/schema_cache_test.rb
+++ b/activerecord/test/cases/connection_adapters/schema_cache_test.rb
@@ -13,7 +13,7 @@ module ActiveRecord
       end
 
       def test_primary_key_for_non_existent_table
-        assert_equal 'id', @cache.primary_keys['omgponies']
+        assert_nil @cache.primary_keys['omgponies']
       end
 
       def test_caches_columns
-- 
cgit v1.2.3