diff options
author | Travis Jeffery <travisjeffery@gmail.com> | 2012-03-07 05:14:35 +0000 |
---|---|---|
committer | Travis Jeffery <travisjeffery@gmail.com> | 2012-03-07 17:55:33 +0000 |
commit | 8dc1a625c87950f4b258b7f6fc1036e08b192daa (patch) | |
tree | d60bcf733d3a140e0910b5422dc1427ef6bcd469 /activerecord | |
parent | 577971f05a838da3ba74ba49d776a83f6bfe1aee (diff) | |
download | rails-8dc1a625c87950f4b258b7f6fc1036e08b192daa.tar.gz rails-8dc1a625c87950f4b258b7f6fc1036e08b192daa.tar.bz2 rails-8dc1a625c87950f4b258b7f6fc1036e08b192daa.zip |
Adds #create/drop_schema on the PostgreSQL Adapter.
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 10 | ||||
-rw-r--r-- | activerecord/test/cases/adapters/postgresql/schema_test.rb | 39 |
2 files changed, 47 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index f4efaa9b20..5b7fa029da 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -989,6 +989,16 @@ module ActiveRecord SQL end + # Creates a schema for the given schema name. + def create_schema schema_name + execute "CREATE SCHEMA #{schema_name}" + end + + # Drops the schema for the given schema name. + def drop_schema schema_name + execute "DROP SCHEMA #{schema_name} CASCADE" + end + # Sets the schema search path to a string of comma-separated schema names. # Names beginning with $ have to be quoted (e.g. $user => '$user'). # See: http://www.postgresql.org/docs/current/static/ddl-schemas.html diff --git a/activerecord/test/cases/adapters/postgresql/schema_test.rb b/activerecord/test/cases/adapters/postgresql/schema_test.rb index 1c56dd76f6..9208f53997 100644 --- a/activerecord/test/cases/adapters/postgresql/schema_test.rb +++ b/activerecord/test/cases/adapters/postgresql/schema_test.rb @@ -75,6 +75,41 @@ class SchemaTest < ActiveRecord::TestCase assert_equal ["public", "test_schema", "test_schema2"], @connection.schema_names end + def test_create_schema + begin + @connection.create_schema "test_schema3" + assert @connection.schema_names.include? "test_schema3" + ensure + @connection.drop_schema "test_schema3" + end + end + + def test_raise_create_schema_with_existing_schema + begin + @connection.create_schema "test_schema3" + assert_raises(ActiveRecord::StatementInvalid) do + @connection.create_schema "test_schema3" + end + ensure + @connection.drop_schema "test_schema3" + end + end + + def test_drop_schema + begin + @connection.create_schema "test_schema3" + ensure + @connection.drop_schema "test_schema3" + end + assert !@connection.schema_names.include?("test_schema3") + end + + def test_raise_drop_schema_with_nonexisting_schema + assert_raises(ActiveRecord::StatementInvalid) do + @connection.drop_schema "test_schema3" + end + end + def test_schema_change_with_prepared_stmt altered = false @connection.exec_query "select * from developers where id = $1", 'sql', [[nil, 1]] @@ -187,13 +222,13 @@ class SchemaTest < ActiveRecord::TestCase end def test_raise_on_unquoted_schema_name - assert_raise(ActiveRecord::StatementInvalid) do + assert_raises(ActiveRecord::StatementInvalid) do with_schema_search_path '$user,public' end end def test_without_schema_search_path - assert_raise(ActiveRecord::StatementInvalid) { columns(TABLE_NAME) } + assert_raises(ActiveRecord::StatementInvalid) { columns(TABLE_NAME) } end def test_ignore_nil_schema_search_path |