Hi,

I updated sqlalchemy from 0.7.8 to 0.8.2 and one of my queries started 
failing. I had a CTE expression with capital letters in it's name, and in 
0.8 it wasn't getting consistently quoted, but it worked in 0.7.

I narrowed it down, and it only seems to happen in a query containing 
multiple subqueries referring to the same CTE. 

Here's an example that reproduces it. If I remove the second subquery from 
this example, there's no issues:

import sys
import sqlalchemy as sa
import sqlalchemy.orm
import psycopg2

engine = sa.create_engine('postgresql://', creator=lambda: 
psycopg2.connect(dbname=sys.argv[1]), echo=True)
Session = sa.orm.scoped_session(sa.orm.sessionmaker(bind=engine))
session = Session()

cte = session.query(sa.literal(1).label("id")).cte(name='CTE')

firstSubquery = session.query(cte.c.id).subquery()
secondSubquery = session.query(cte.c.id).subquery()

query = session.query(firstSubquery, secondSubquery)

print query.all()



The resulting query looks like this. Note that the last reference to "CTE" 
is not quoted like the others, causing a ProgrammingError when it can't be 
found.

WITH "CTE" AS
(SELECT :param_1 AS id)
 SELECT anon_1.id AS anon_1_id, anon_2.id AS anon_2_id
FROM (SELECT "CTE".id AS id
FROM "CTE") AS anon_1, (SELECT "CTE".id AS id
FROM CTE) AS anon_2

Thanks,
Jesse

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to