From: Iuri de Silvio Date: Thu, 26 Feb 2015 00:05:31 +0000 (-0300) Subject: Dialect option `postgresql_concurrently` to `Index` construct. X-Git-Tag: rel_1_0_0b1~24^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=955576fcf6e7aff7fe924ec3b33bb6d243ddd312;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Dialect option `postgresql_concurrently` to `Index` construct. --- diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 1935d0cadc..c819f36c3d 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -1459,7 +1459,13 @@ class PGDDLCompiler(compiler.DDLCompiler): text = "CREATE " if index.unique: text += "UNIQUE " - text += "INDEX %s ON %s " % ( + text += "INDEX " + + concurrently = index.dialect_options['postgresql']['concurrently'] + if concurrently: + text += "CONCURRENTLY " + + text += "%s ON %s " % ( self._prepared_index_name(index, include_schema=False), preparer.format_table(index.table) @@ -1812,7 +1818,8 @@ class PGDialect(default.DefaultDialect): (schema.Index, { "using": False, "where": None, - "ops": {} + "ops": {}, + "concurrently": False, }), (schema.Table, { "ignore_search_path": False, diff --git a/test/dialect/postgresql/test_compiler.py b/test/dialect/postgresql/test_compiler.py index 5717df9f76..aa3f80fdce 100644 --- a/test/dialect/postgresql/test_compiler.py +++ b/test/dialect/postgresql/test_compiler.py @@ -389,6 +389,16 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL): "CREATE INDEX test_idx1 ON testtbl ((data + 5))" ) + def test_create_index_concurrently(self): + m = MetaData() + tbl = Table('testtbl', m, Column('data', Integer)) + + idx1 = Index('test_idx1', tbl.c.data, postgresql_concurrently=True) + self.assert_compile( + schema.CreateIndex(idx1), + "CREATE INDEX CONCURRENTLY test_idx1 ON testtbl (data)" + ) + def test_exclude_constraint_min(self): m = MetaData() tbl = Table('testtbl', m,