From d6873904c40134df787ffe5459d61d3663bf5d5f Mon Sep 17 00:00:00 2001 From: Malik Diarra Date: Sun, 17 Aug 2014 00:39:36 +0200 Subject: [PATCH] Adding oids and on_commit table options --- lib/sqlalchemy/dialects/postgresql/base.py | 12 +++++++++++- test/dialect/postgresql/test_compiler.py | 22 ++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 0f008642e8..9b30bf8949 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -1450,6 +1450,14 @@ class PGDDLCompiler(compiler.DDLCompiler): def post_create_table(self, table): table_opts = [] + if table.dialect_options['postgresql']['withoids'] is not None: + if table.dialect_options['postgresql']['withoids']: + table_opts.append('WITH OIDS') + else: + table_opts.append('WITHOUT OIDS') + if table.dialect_options['postgresql']['on_commit']: + on_commit_options = table.dialect_options['postgresql']['on_commit'].replace("_", " ").upper() + table_opts.append('ON COMMIT %s' % on_commit_options) if table.dialect_options['postgresql']['tablespace']: table_opts.append('TABLESPACE %s' % table.dialect_options['postgresql']['tablespace']) @@ -1715,7 +1723,9 @@ class PGDialect(default.DefaultDialect): }), (schema.Table, { "ignore_search_path": False, - "tablespace": None + "tablespace": None, + "withoids" : None, + "on_commit" : None, }) ] diff --git a/test/dialect/postgresql/test_compiler.py b/test/dialect/postgresql/test_compiler.py index 301f80fd44..b439ab916f 100644 --- a/test/dialect/postgresql/test_compiler.py +++ b/test/dialect/postgresql/test_compiler.py @@ -172,6 +172,28 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL): self.assert_compile(schema.CreateTable(tbl), "CREATE TABLE atable (id INTEGER)TABLESPACE sometablespace") + def test_create_table_with_oids(self): + m = MetaData() + tbl = Table('atable', m, Column("id", Integer), postgresql_withoids = True, ) + self.assert_compile(schema.CreateTable(tbl), + "CREATE TABLE atable (id INTEGER)WITH OIDS") + + tbl2 = Table('anothertable', m, Column("id", Integer), postgresql_withoids = False, ) + self.assert_compile(schema.CreateTable(tbl2), + "CREATE TABLE anothertable (id INTEGER)WITHOUT OIDS") + + def create_table_with_oncommit_option(self): + m = MetaData() + tbl = Table('atable', m, Column("id", Integer), postgresql_on_commit = "drop") + self.assert_compile(schema.CreateTable(tbl), + "CREATE TABLE atable (id INTEGER) ON COMMIT DROP") + + def create_table_with_multiple_options(self): + m = MetaData() + tbl = Table('atable', m, Column("id", Integer), postgresql_tablespace = 'sometablespace', postgresql_withoids = False, postgresql_on_commit = "preserve_rows") + self.assert_compile(schema.CreateTable(tbl), + "CREATE TABLE atable (id INTEGER)WITHOUT OIDS ON COMMIT PRESERVE ROWS TABLESPACE sometablespace") + def test_create_partial_index(self): m = MetaData() tbl = Table('testtbl', m, Column('data', Integer)) -- 2.47.3