from alembic.ddl.impl import DefaultImpl
from sqlalchemy import types as sqltypes
+from .base import compiles, alter_table, format_table_name, RenameTable
import re
class PostgresqlImpl(DefaultImpl):
rendered_metadata_default
)
)
+
+
+@compiles(RenameTable, "postgresql")
+def visit_rename_table(element, compiler, **kw):
+ return "%s RENAME TO %s" % (
+ alter_table(compiler, element.table_name, element.schema),
+ format_table_name(compiler, element.new_table_name, None)
+ )
.. changelog::
:version: 0.5.0
+ .. change::
+ :tags: bug, postgresql
+ :tickets: 32
+
+ Fixed format of RENAME for table that includes
+ schema with Postgresql; the schema name shouldn't
+ be in the "TO" field.
+
.. change::
:tags: feature
:tickets: 90
op.rename_table('t1', 't2', schema="foo")
context.assert_("ALTER TABLE foo.t1 RENAME TO foo.t2")
+def test_rename_table_postgresql():
+ context = op_fixture("postgresql")
+ op.rename_table('t1', 't2')
+ context.assert_("ALTER TABLE t1 RENAME TO t2")
+
+def test_rename_table_schema_postgresql():
+ context = op_fixture("postgresql")
+ op.rename_table('t1', 't2', schema="foo")
+ context.assert_("ALTER TABLE foo.t1 RENAME TO t2")
+
def test_add_column():
context = op_fixture()
op.add_column('t1', Column('c1', Integer, nullable=False))