aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb4
-rw-r--r--activerecord/test/cases/schema_authorization_test_postgresql.rb9
2 files changed, 10 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
index b3ce8c79dd..c9a5f00dfd 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
@@ -651,14 +651,12 @@ module ActiveRecord
end
end
-
# Returns the list of all tables in the schema search path or a specified schema.
def tables(name = nil)
- schemas = schema_search_path.split(/,/).map { |p| quote(p) }.join(',')
query(<<-SQL, name).map { |row| row[0] }
SELECT tablename
FROM pg_tables
- WHERE schemaname IN (#{schemas})
+ WHERE schemaname = ANY (current_schemas(false))
SQL
end
diff --git a/activerecord/test/cases/schema_authorization_test_postgresql.rb b/activerecord/test/cases/schema_authorization_test_postgresql.rb
index ba7754513d..2860f1ad48 100644
--- a/activerecord/test/cases/schema_authorization_test_postgresql.rb
+++ b/activerecord/test/cases/schema_authorization_test_postgresql.rb
@@ -66,6 +66,15 @@ class SchemaAuthorizationTest < ActiveRecord::TestCase
end
end
end
+
+ def test_tables_in_current_schemas
+ assert !@connection.tables.include?(TABLE_NAME)
+ USERS.each do |u|
+ set_session_auth u
+ assert @connection.tables.include?(TABLE_NAME)
+ set_session_auth
+ end
+ end
private
def set_session_auth auth = nil