From 0cd42864e3dcba520980f952be9a09c01beddb03 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Fri, 4 Feb 2011 12:15:30 -0800 Subject: making sure primary key is set on the columns --- .../connection_adapters/abstract/connection_pool.rb | 10 +++++++++- activerecord/test/cases/connection_pool_test.rb | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb index bafd79d614..db745e325f 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb @@ -85,7 +85,15 @@ module ActiveRecord @columns = Hash.new do |h, table_name| h[table_name] = with_connection do |conn| - conn.columns(table_name, "#{table_name} Columns") + + # Fetch a list of columns + conn.columns(table_name, "#{table_name} Columns").tap do |columns| + + # set primary key information + columns.each do |column| + column.primary = column.name == primary_keys[table_name] + end + end end end diff --git a/activerecord/test/cases/connection_pool_test.rb b/activerecord/test/cases/connection_pool_test.rb index 27fc3cab49..0727e86705 100644 --- a/activerecord/test/cases/connection_pool_test.rb +++ b/activerecord/test/cases/connection_pool_test.rb @@ -38,6 +38,15 @@ module ActiveRecord assert_equal 'id', @pool.primary_keys['omgponies'] end + def test_primary_key_is_set_on_columns + posts_columns = @pool.columns_hash['posts'] + assert posts_columns['id'].primary + + (posts_columns.keys - ['id']).each do |key| + assert !posts_columns[key].primary + end + end + def test_clear_stale_cached_connections! pool = ConnectionPool.new ActiveRecord::Base.connection_pool.spec -- cgit v1.2.3