[Sqlalchemy-tickets] Issue #3518: (PostgreSQL) Ordering a DISTINCT ON query adds columns to SELECT
Brought to you by:
zzzeek
|
From: Thijs D. <iss...@bi...> - 2015-08-28 11:41:11
|
New issue 3518: (PostgreSQL) Ordering a DISTINCT ON query adds columns to SELECT https://bitbucket.org/zzzeek/sqlalchemy/issues/3518/postgresql-ordering-a-distinct-on-query Thijs Damsma: When a distinct query is ordered, the columns on which are sorted are added to the SELECT statement, see example code: ``` #!python from sqlalchemy.orm.session import sessionmaker from sqlalchemy.dialects import postgresql from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer Base = declarative_base() class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True) att1 = Column(Integer) att2 = Column(Integer) Session = sessionmaker() sess = Session() q = sess.query(User.att2).distinct(User.att1) print(str(q.statement.compile(dialect=postgresql.dialect()))) ``` as expected, only user.att2 will be returned: ``` #!sql SELECT DISTINCT ON ("user".att1) "user".att2 FROM "user" ``` Now with an order_by statement: ``` #!python print(str(q.order_by(User.att2, User.id).statement.compile( dialect=postgresql.dialect()))) ``` not as expected, both user.att2 and user.id will be returned ``` #!sql SELECT DISTINCT ON ("user".att1) "user".att2, "user".id FROM "user" ORDER BY "user".att2, "user".id ``` |