From 5351089c89a0a995109a3b1e8a37d48ed6c3794d Mon Sep 17 00:00:00 2001 From: Gregor Schmidt Date: Mon, 19 Apr 2010 18:02:42 +0200 Subject: [PATCH] Fixing postgres' table_alias_length --- lib/jdbc_adapter/jdbc_postgre.rb | 2 +- test/postgres_table_alias_length_test.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletions(-) create mode 100644 test/postgres_table_alias_length_test.rb diff --git a/lib/jdbc_adapter/jdbc_postgre.rb b/lib/jdbc_adapter/jdbc_postgre.rb index 10f433b..e7ff6d1 100644 --- a/lib/jdbc_adapter/jdbc_postgre.rb +++ b/lib/jdbc_adapter/jdbc_postgre.rb @@ -147,7 +147,7 @@ module ::JdbcSpec # Returns the configured supported identifier length supported by PostgreSQL, # or report the default of 63 on PostgreSQL 7.x. def table_alias_length - @table_alias_length ||= (postgresql_version >= 80000 ? select('SHOW max_identifier_length').to_a[0][0].to_i : 63) + @table_alias_length ||= (postgresql_version >= 80000 ? select_one('SHOW max_identifier_length')['max_identifier_length'].to_i : 63) end def default_sequence_name(table_name, pk = nil) diff --git a/test/postgres_table_alias_length_test.rb b/test/postgres_table_alias_length_test.rb new file mode 100644 index 0000000..c0c73df --- /dev/null +++ b/test/postgres_table_alias_length_test.rb @@ -0,0 +1,15 @@ +require 'jdbc_common' +require 'db/postgres' + +class PostgresTableAliasLengthTest < Test::Unit::TestCase + def test_table_alias_length + result = ActiveRecord::Base.connection.select_one("SELECT 1 AS " + "a" * 2048) + + actual_table_alias_length = result.keys.first.size + actual_table_alias_length = 0 if actual_table_alias_length == 2048 + + assert_equal(actual_table_alias_length, + ActiveRecord::Base.connection.table_alias_length) + end +end + -- 1.7.0