Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Backport #3232 to 3-1-stable.

Use the schema_search_path in prepared statements in postgres.

Only the tests are backported, the fix was already included by
commit 818d285.
  • Loading branch information...
commit b02daec71817902375cc32759c7bae95ef87cefa 1 parent 798a3c1
@Juanmcuello authored
View
5 activerecord/CHANGELOG.md
@@ -1,5 +1,10 @@
## Rails 3.1.2 (unreleased) ##
+* Fix problem with prepared statements and PostgreSQL when multiple schemas are used.
+ *GH #3232*
+
+ *Juan M. Cuello*
+
* Fix bug with PostgreSQLAdapter#indexes. When the search path has multiple schemas, spaces
were not being stripped from the schema names after the first.
View
19 activerecord/test/cases/adapters/postgresql/schema_test.rb
@@ -37,6 +37,10 @@ class Thing4 < ActiveRecord::Base
set_table_name 'test_schema."Things"'
end
+ class Thing5 < ActiveRecord::Base
+ set_table_name 'things'
+ end
+
def setup
@connection = ActiveRecord::Base.connection
@connection.execute "CREATE SCHEMA #{SCHEMA_NAME} CREATE TABLE #{TABLE_NAME} (#{COLUMNS.join(',')})"
@@ -178,6 +182,21 @@ def test_with_uppercase_index_name
ActiveRecord::Base.connection.schema_search_path = "public"
end
+ def test_prepared_statements_with_multiple_schemas
+
+ @connection.schema_search_path = SCHEMA_NAME
+ Thing5.create(:id => 1, :name => "thing inside #{SCHEMA_NAME}", :email => "thing1@localhost", :moment => Time.now)
+
+ @connection.schema_search_path = SCHEMA2_NAME
+ Thing5.create(:id => 1, :name => "thing inside #{SCHEMA2_NAME}", :email => "thing1@localhost", :moment => Time.now)
+
+ @connection.schema_search_path = SCHEMA_NAME
+ assert_equal 1, Thing5.count
+
+ @connection.schema_search_path = SCHEMA2_NAME
+ assert_equal 1, Thing5.count
+ end
+
private
def columns(table_name)
@connection.send(:column_definitions, table_name).map do |name, type, default|
Please sign in to comment.
Something went wrong with that request. Please try again.