]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
a few oracle fixes
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 25 Aug 2012 16:00:11 +0000 (12:00 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 25 Aug 2012 16:00:11 +0000 (12:00 -0400)
lib/sqlalchemy/dialects/oracle/base.py
lib/sqlalchemy/sql/compiler.py
test/dialect/test_oracle.py
test/orm/inheritance/test_basic.py
test/orm/test_of_type.py

index eb1d75caa1c9aa306e546453d6f29b2a6b18462a..ff1b8043de1d21f97f07996012d43352e78e8fb4 100644 (file)
@@ -509,7 +509,8 @@ class OracleCompiler(compiler.SQLCompiler):
         columnlist = list(expression._select_iterables(returning_cols))
 
         columns = [
-                self._label_select_column(None, c, True, False, {})
+                self._label_select_column(None, c, True, False, {},
+                                            within_columns_clause=False)
                 for c in columnlist
             ]
 
index 81aa62c2552bb6321292fc30b904b49be8a52e49..fffe3a9a5b51856def68c2eb701efb9332b8e46a 100644 (file)
@@ -938,7 +938,8 @@ class SQLCompiler(engine.Compiled):
             self.result_map[keyname] = name, objects, type_
 
     def _label_select_column(self, select, column, populate_result_map,
-                                    asfrom, column_clause_args):
+                                    asfrom, column_clause_args,
+                                    within_columns_clause=True):
         """produce labeled columns present in a select()."""
 
         if column.type._has_column_expression:
@@ -996,7 +997,7 @@ class SQLCompiler(engine.Compiled):
             result_expr = col_expr
 
         return result_expr._compiler_dispatch(
-                       self, within_columns_clause=True,
+                       self, within_columns_clause=within_columns_clause,
                         add_to_result_map=add_to_result_map,
                         **column_clause_args
                     )
index b70358ffdb8c4e3ab43a4864b502386b5ee742eb..fa6e4a85fe8f7222f39936dafd4a082745700c0d 100644 (file)
@@ -453,6 +453,14 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL):
                 "t1.c2, t1.c3 INTO :ret_0, :ret_1"
         )
 
+    def test_returning_insert_labeled(self):
+        t1 = table('t1', column('c1'), column('c2'), column('c3'))
+        self.assert_compile(
+            t1.insert().values(c1=1).returning(t1.c.c2.label('c2_l'), t1.c.c3.label('c3_l')),
+            "INSERT INTO t1 (c1) VALUES (:c1) RETURNING "
+                "t1.c2, t1.c3 INTO :ret_0, :ret_1"
+        )
+
     def test_compound(self):
         t1 = table('t1', column('c1'), column('c2'), column('c3'))
         t2 = table('t2', column('c1'), column('c2'), column('c3'))
index cb4b3ea888f20b45b7798f77d7d8df49244bb9ae..558ce9bffe93f236259e2d8bd4ceecd446568160 100644 (file)
@@ -428,7 +428,8 @@ class SortOnlyOnImportantFKsTest(fixtures.MappedTest):
     @classmethod
     def define_tables(cls, metadata):
         Table('a', metadata,
-                Column('id', Integer, primary_key=True),
+                Column('id', Integer, primary_key=True,
+                                    test_needs_autoincrement=True),
                 Column('b_id', Integer,
                         ForeignKey('b.id', use_alter=True, name='b'))
             )
index a6a6192d7d3aae09298edef3b6f08fc3a9048329..40d553fe843f932e40aa3775c758032ee49e3107 100644 (file)
@@ -116,7 +116,7 @@ class _PolymorphicTestBase(object):
             sess.query(Company.company_id).\
                 filter(
                     Company.employees.of_type(wp).any(
-                            wp.Engineer.primary_language=='java')
+                            wp.Engineer.primary_language == 'java')
                 ).all(),
             [(1, )]
         )
@@ -233,27 +233,30 @@ class SubclassRelationshipTest(testing.AssertsCompiledSQL, fixtures.DeclarativeM
         class Job(ComparableEntity, Base):
             __tablename__ = "job"
 
-            id = Column(Integer, primary_key=True)
+            id = Column(Integer, primary_key=True,
+                                        test_needs_autoincrement=True)
             type = Column(String(10))
             container_id = Column(Integer, ForeignKey('data_container.id'))
-            __mapper_args__ = {"polymorphic_on":type}
+            __mapper_args__ = {"polymorphic_on": type}
 
         class SubJob(Job):
             __tablename__ = 'subjob'
             id = Column(Integer, ForeignKey('job.id'), primary_key=True)
             attr = Column(String(10))
-            __mapper_args__ = {"polymorphic_identity":"sub"}
+            __mapper_args__ = {"polymorphic_identity": "sub"}
 
         class ParentThing(ComparableEntity, Base):
             __tablename__ = 'parent'
-            id = Column(Integer, primary_key=True)
+            id = Column(Integer, primary_key=True,
+                                            test_needs_autoincrement=True)
             container_id = Column(Integer, ForeignKey('data_container.id'))
             container = relationship("DataContainer")
 
         class DataContainer(ComparableEntity, Base):
             __tablename__ = "data_container"
 
-            id = Column(Integer, primary_key=True)
+            id = Column(Integer, primary_key=True,
+                                            test_needs_autoincrement=True)
             name = Column(String(10))
             jobs = relationship(Job, order_by=Job.id)