From ecc6c1da2adddddc09d99be582595cd41f98ac16 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 5 Dec 2008 14:46:27 +0000 Subject: [PATCH] - Adjusted the format of create_xid() to repair two-phase commit. We now have field reports of Oracle two-phase commit working properly with this change. --- CHANGES | 6 ++++++ lib/sqlalchemy/databases/oracle.py | 4 ++-- test/orm/inheritance/concrete.py | 9 ++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index 7ae9e7b60c..4ec043e972 100644 --- a/CHANGES +++ b/CHANGES @@ -135,6 +135,12 @@ CHANGES - postgres - Calling alias.execute() in conjunction with server_side_cursors won't raise AttributeError. + +- oracle + - Adjusted the format of create_xid() to repair + two-phase commit. We now have field reports + of Oracle two-phase commit working properly + with this change. 0.5.0rc4 ======== diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 9871f6e0e7..d71b129d1f 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -441,8 +441,8 @@ class OracleDialect(default.DefaultDialect): do_commit_twophase(). its format is unspecified.""" id = random.randint(0, 2 ** 128) - return (0x1234, "%032x" % 9, "%032x" % id) - + return (0x1234, "%032x" % id, "%032x" % 9) + def do_release_savepoint(self, connection, name): # Oracle does not support RELEASE SAVEPOINT pass diff --git a/test/orm/inheritance/concrete.py b/test/orm/inheritance/concrete.py index c523232c94..a72bee7eea 100644 --- a/test/orm/inheritance/concrete.py +++ b/test/orm/inheritance/concrete.py @@ -82,8 +82,10 @@ class ConcreteTest(ORMTest): }, 'type', 'pjoin') employee_mapper = mapper(Employee, pjoin, polymorphic_on=pjoin.c.type) - manager_mapper = mapper(Manager, managers_table, inherits=employee_mapper, concrete=True, polymorphic_identity='manager') - engineer_mapper = mapper(Engineer, engineers_table, inherits=employee_mapper, concrete=True, polymorphic_identity='engineer') + manager_mapper = mapper(Manager, managers_table, inherits=employee_mapper, + concrete=True, polymorphic_identity='manager') + engineer_mapper = mapper(Engineer, engineers_table, inherits=employee_mapper, + concrete=True, polymorphic_identity='engineer') session = create_session() session.save(Manager('Tom', 'knows how to manage things')) @@ -162,7 +164,8 @@ class ConcreteTest(ORMTest): 'hacker': hackers_table }, 'type', 'pjoin2') - employee_mapper = mapper(Employee, employees_table, with_polymorphic=('*', pjoin), polymorphic_on=pjoin.c.type) + employee_mapper = mapper(Employee, employees_table, + with_polymorphic=('*', pjoin), polymorphic_on=pjoin.c.type) manager_mapper = mapper(Manager, managers_table, inherits=employee_mapper, concrete=True, polymorphic_identity='manager') -- 2.47.3