summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2012-08-25 12:00:11 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2012-08-25 12:00:11 -0400
commit885cae799895ac6adc4179758a25f1224beb87c3 (patch)
tree872f21ac341a2942f7dfa0b5db02e3540213fdd8
parent393b29477648e9b2db9597916a0e53602610ac44 (diff)
downloadsqlalchemy-885cae799895ac6adc4179758a25f1224beb87c3.tar.gz
a few oracle fixes
-rw-r--r--lib/sqlalchemy/dialects/oracle/base.py3
-rw-r--r--lib/sqlalchemy/sql/compiler.py5
-rw-r--r--test/dialect/test_oracle.py8
-rw-r--r--test/orm/inheritance/test_basic.py3
-rw-r--r--test/orm/test_of_type.py15
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)