I have a test case. If this formats badly, I'll attach it as a file.
I'm not sure if this is a "distinct on" problem or not (probably not,
but here is a test case anyway).
If I don't specify a name for the alias, the compile fails. :-(
diff -r 070e47edcfad test/dialect/test_postgresql.py
--- a/test/dialect/test_postgresql.py Fri Apr 15 00:43:01 2011 -0400
+++ b/test/dialect/test_postgresql.py Thu Apr 21 12:27:42 2011 -0500
@@ -1214,6 +1214,32 @@
'SELECT DISTINCT ON (mytable.id, mytable.a) mytable.id, '
'mytable.a \nFROM mytable')
+ def test_distinct_on_subquery(self):
+ t1 = Table('mytable1', MetaData(testing.db), Column('id',
+ Integer, primary_key=True), Column('a', String(8)))
+ t2 = Table('mytable2', MetaData(testing.db), Column('id',
+ Integer, primary_key=True), Column('a', String(8)))
+
+ sq = select([t1]).alias()
+ q = select([t2.c.id,sq.c.id], distinct=sq.c.id).where(t2.c.id==sq.c.id)
+ self.assert_compile(
+ q,
+ "SELECT DISTINCT ON (anon_1.id) mytable2.id, anon_1.id "
+ "FROM mytable2, (SELECT mytable1.id AS id, mytable1.a AS a "
+ "FROM mytable1) AS anon_1 "
+ "WHERE mytable2.id = anon_1.id"
+ )
+
+ sq = select([t1]).alias('sq')
+ q = select([t2.c.id,sq.c.id], distinct=sq.c.id).where(t2.c.id==sq.c.id)
+ self.assert_compile(
+ q,
+ "SELECT DISTINCT ON (sq.id) mytable2.id, sq.id "
+ "FROM mytable2, (SELECT mytable1.id AS id, mytable1.a AS a "
+ "FROM mytable1) AS sq "
+ "WHERE mytable2.id = sq.id"
+ )
+
def test_schema_reflection(self):
"""note: this test requires that the 'test_schema' schema be
separate and accessible by the test user"""
--
Jon
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.