0.9.10 / 1.0 regression re: column_descriptions w/ CTE

Issue #3403 resolved
Mike Bayer repo owner created an issue
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import aliased

Base = declarative_base()


class Part(Base):
    __tablename__ = 'part'
    part = Column(String, primary_key=True)
    sub_part = Column(String, primary_key=True)
    quantity = Column(Integer)

e = create_engine("postgresql://scott:tiger@localhost/test", echo=True)
Base.metadata.create_all(e)

session = Session(e)

included_parts = session.query(
                Part.sub_part,
                Part.part,
                Part.quantity).\
                    filter(Part.part=="our part").\
                    cte(name="included_parts", recursive=True)

incl_alias = aliased(included_parts, name="pr")
parts_alias = aliased(Part, name="p")
included_parts = included_parts.union_all(
    session.query(
        parts_alias.sub_part,
        parts_alias.part,
        parts_alias.quantity).\
            filter(parts_alias.part==incl_alias.c.sub_part)
    )


q = session.query(included_parts)

print q.column_descriptions
#!

Traceback (most recent call last):
  File "test.py", line 40, in <module>
    print q.column_descriptions
  File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/query.py", line 2582, in column_descriptions
    for ent in self._entities
AttributeError: 'CTE' object has no attribute 'entity'

Comments (3)

  1. Mike Bayer reporter
    • Fixed regression from as yet unreleased 0.9.10 where the new addition of entity to the :attr:.Query.column_descriptions accessor would fail if the target entity was produced from a core selectable such as a :class:.Table or :class:.CTE object. fixes #3403 references #3320

    → <<cset 20e3df602846>>

  2. Log in to comment