diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-08-25 12:00:11 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-08-25 12:00:11 -0400 |
commit | 885cae799895ac6adc4179758a25f1224beb87c3 (patch) | |
tree | 872f21ac341a2942f7dfa0b5db02e3540213fdd8 | |
parent | 393b29477648e9b2db9597916a0e53602610ac44 (diff) | |
download | sqlalchemy-885cae799895ac6adc4179758a25f1224beb87c3.tar.gz |
a few oracle fixes
-rw-r--r-- | lib/sqlalchemy/dialects/oracle/base.py | 3 | ||||
-rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 5 | ||||
-rw-r--r-- | test/dialect/test_oracle.py | 8 | ||||
-rw-r--r-- | test/orm/inheritance/test_basic.py | 3 | ||||
-rw-r--r-- | test/orm/test_of_type.py | 15 |
5 files changed, 24 insertions, 10 deletions
diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py index eb1d75caa..ff1b8043d 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 81aa62c25..fffe3a9a5 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 b70358ffd..fa6e4a85f 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 cb4b3ea88..558ce9bff 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 a6a6192d7..40d553fe8 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) |