summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES1
-rw-r--r--lib/sqlalchemy/databases/oracle.py9
-rw-r--r--test/orm/unitofwork.py4
-rw-r--r--test/sql/constraints.py2
4 files changed, 13 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index 6e0224fc2..05b9e49a1 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 8f6ce4772..2d77946c4 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 b88325a7f..f69519c13 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 045d44968..886baef0c 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()