From 225e51a7967d8da8fdcb81a742b75007d23bca08 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sat, 17 Feb 2007 02:31:56 +0000 Subject: [PATCH] - added a Sequence to the unicode test tables to help Oracle - fixed named PrimaryKeyConstraint generation on oracle [ticket:466] courtesy andrija at gmail --- CHANGES | 1 + lib/sqlalchemy/databases/oracle.py | 9 +++++++++ test/orm/unitofwork.py | 4 ++-- test/sql/constraints.py | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 6e0224fc24..05b9e49a19 100644 --- a/CHANGES +++ b/CHANGES @@ -47,6 +47,7 @@ - sequences on a non-pk column will properly fire off on INSERT - added PrefetchingResultProxy support to pre-fetch LOB columns when they are known to be present, fixes [ticket:435] + - fixed named PrimaryKeyConstraint generation [ticket:466] courtesy andrija at gmail - mysql: - fix to reflection on older DB's that might return array() type for "show variables like" statements diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 8f6ce4772b..2d77946c46 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -485,6 +485,15 @@ class OracleSchemaGenerator(ansisql.ANSISchemaGenerator): self.append("CREATE SEQUENCE %s" % self.preparer.format_sequence(sequence)) self.execute() + def visit_primary_key_constraint(self, constraint): + if len(constraint) == 0: + return + self.append(", \n\t") + if constraint.name is not None: + self.append("CONSTRAINT %s " % constraint.name) + self.append("PRIMARY KEY ") + self.append("(%s)" % (string.join([self.preparer.format_column(c) for c in constraint],', '))) + class OracleSchemaDropper(ansisql.ANSISchemaDropper): def visit_sequence(self, sequence): if self.engine.dialect.has_sequence(self.connection, sequence.name): diff --git a/test/orm/unitofwork.py b/test/orm/unitofwork.py index b88325a7ff..f69519c139 100644 --- a/test/orm/unitofwork.py +++ b/test/orm/unitofwork.py @@ -188,10 +188,10 @@ class UnicodeTest(UnitOfWorkTest): global metadata, uni_table, uni_table2 metadata = BoundMetaData(testbase.db) uni_table = Table('uni_test', metadata, - Column('id', Integer, primary_key=True), + Column('id', Integer, Sequence("uni_test_id_seq", optional=True), primary_key=True), Column('txt', Unicode(50), unique=True)) uni_table2 = Table('uni2', metadata, - Column('id', Integer, primary_key=True), + Column('id', Integer, Sequence("uni2_test_id_seq", optional=True), primary_key=True), Column('txt', Unicode(50), ForeignKey(uni_table.c.txt))) metadata.create_all() def tearDownAll(self): diff --git a/test/sql/constraints.py b/test/sql/constraints.py index 045d449687..886baef0cc 100644 --- a/test/sql/constraints.py +++ b/test/sql/constraints.py @@ -23,7 +23,7 @@ class ConstraintTest(testbase.AssertMixin): Column('stuff', String(30)), Column('emp_id', Integer), Column('emp_soc', String(40)), - PrimaryKeyConstraint('id'), + PrimaryKeyConstraint('id', name='elements_primkey'), ForeignKeyConstraint(['emp_id', 'emp_soc'], ['employees.id', 'employees.soc']) ) metadata.create_all() -- 2.47.2