summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalik Diarra <malik.diarra@gmail.com>2014-08-17 00:39:36 +0200
committerMalik Diarra <malik.diarra@gmail.com>2014-08-17 01:56:02 +0200
commitd6873904c40134df787ffe5459d61d3663bf5d5f (patch)
tree12f24e9447ae25d48490d94d42b0cd5224faf5d8
parentef6042ff461e490c2a3040f18f0a3688b2e601a0 (diff)
downloadsqlalchemy-d6873904c40134df787ffe5459d61d3663bf5d5f.tar.gz
Adding oids and on_commit table options
-rw-r--r--lib/sqlalchemy/dialects/postgresql/base.py12
-rw-r--r--test/dialect/postgresql/test_compiler.py22
2 files changed, 33 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py
index 0f008642e..9b30bf894 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 301f80fd4..b439ab916 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))