From: Mike Bayer Date: Sat, 25 Aug 2012 16:00:11 +0000 (-0400) Subject: a few oracle fixes X-Git-Tag: rel_0_8_0b1~209 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=885cae799895ac6adc4179758a25f1224beb87c3;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git a few oracle fixes --- diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py index eb1d75caa1..ff1b8043de 100644 --- a/lib/sqlalchemy/dialects/oracle/base.py +++ b/lib/sqlalchemy/dialects/oracle/base.py @@ -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 ] diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 81aa62c255..fffe3a9a5b 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -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 ) diff --git a/test/dialect/test_oracle.py b/test/dialect/test_oracle.py index b70358ffdb..fa6e4a85fe 100644 --- a/test/dialect/test_oracle.py +++ b/test/dialect/test_oracle.py @@ -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')) diff --git a/test/orm/inheritance/test_basic.py b/test/orm/inheritance/test_basic.py index cb4b3ea888..558ce9bffe 100644 --- a/test/orm/inheritance/test_basic.py +++ b/test/orm/inheritance/test_basic.py @@ -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')) ) diff --git a/test/orm/test_of_type.py b/test/orm/test_of_type.py index a6a6192d7d..40d553fe84 100644 --- a/test/orm/test_of_type.py +++ b/test/orm/test_of_type.py @@ -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)