NoSuchColumnError: "Could not locate ... column 'anon_1._sa_polymorphic_on'" with polymorphic_on clause and joinedload with limit
Issue #2446
resolved
If you specify a polymorphic_on as an SQL expression instead of column with single table inheritance (at least) and attempt a joined load of a related collection with a limit clause, you hit:
sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for column 'anon_1._sa_polymorphic_on'"
Comments (4)
-
Account Deleted -
repo owner are you on 0.7.6? successful output:
classics-MacBook-Pro:sqlalchemy classic$ python inherit_limit.py 2012-03-21 15:21:02,818 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("employees") 2012-03-21 15:21:02,818 INFO sqlalchemy.engine.base.Engine () 2012-03-21 15:21:02,819 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("roles") 2012-03-21 15:21:02,819 INFO sqlalchemy.engine.base.Engine () 2012-03-21 15:21:02,819 INFO sqlalchemy.engine.base.Engine CREATE TABLE employees ( employee_id INTEGER NOT NULL, type VARCHAR(20) NOT NULL, PRIMARY KEY (employee_id) ) 2012-03-21 15:21:02,819 INFO sqlalchemy.engine.base.Engine () 2012-03-21 15:21:02,820 INFO sqlalchemy.engine.base.Engine COMMIT 2012-03-21 15:21:02,820 INFO sqlalchemy.engine.base.Engine CREATE TABLE roles ( employee_id INTEGER NOT NULL, role VARCHAR(50) NOT NULL, PRIMARY KEY (employee_id, role), FOREIGN KEY(employee_id) REFERENCES employees (employee_id) ) 2012-03-21 15:21:02,820 INFO sqlalchemy.engine.base.Engine () 2012-03-21 15:21:02,820 INFO sqlalchemy.engine.base.Engine COMMIT 2012-03-21 15:21:02,824 INFO sqlalchemy.engine.base.Engine BEGIN (implicit) 2012-03-21 15:21:02,824 INFO sqlalchemy.engine.base.Engine INSERT INTO employees (employee_id, type) VALUES (?, ?) 2012-03-21 15:21:02,824 INFO sqlalchemy.engine.base.Engine (1, 'M') 2012-03-21 15:21:02,826 INFO sqlalchemy.engine.base.Engine SELECT anon_1.employees_employee_id AS anon_1_employees_employee_id, anon_1.employees_type AS anon_1_employees_type, anon_1._sa_polymorphic_on AS anon_1__sa_polymorphic_on, roles_1.employee_id AS roles_1_employee_id, roles_1.role AS roles_1_role FROM (SELECT employees.employee_id AS employees_employee_id, employees.type AS employees_type, CASE employees.type WHEN ? THEN ? WHEN ? THEN ? END AS _sa_polymorphic_on FROM employees LIMIT ? OFFSET ?) AS anon_1 LEFT OUTER JOIN roles AS roles_1 ON anon_1.employees_employee_id = roles_1.employee_id 2012-03-21 15:21:02,826 INFO sqlalchemy.engine.base.Engine ('M', 'manager', 'E', 'employee', 10, 0) 2012-03-21 15:21:02,827 INFO sqlalchemy.engine.base.Engine ROLLBACK 2012-03-21 15:21:02,827 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("roles") 2012-03-21 15:21:02,827 INFO sqlalchemy.engine.base.Engine () 2012-03-21 15:21:02,827 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("employees") 2012-03-21 15:21:02,828 INFO sqlalchemy.engine.base.Engine () 2012-03-21 15:21:02,828 INFO sqlalchemy.engine.base.Engine DROP TABLE roles 2012-03-21 15:21:02,828 INFO sqlalchemy.engine.base.Engine () 2012-03-21 15:21:02,828 INFO sqlalchemy.engine.base.Engine COMMIT 2012-03-21 15:21:02,828 INFO sqlalchemy.engine.base.Engine DROP TABLE employees 2012-03-21 15:21:02,828 INFO sqlalchemy.engine.base.Engine () 2012-03-21 15:21:02,829 INFO sqlalchemy.engine.base.Engine COMMIT
-
Account Deleted - changed status to wontfix
Wow, you fixed it before I even reported it... impressive. (No, I was on 0.7.5ish)
Thanks.
-
repo owner wow, interesting, this was fixed by
#2419in 0536c48dafb670d34fc96d26078b41ed6accf01f, which was an especially painful issue. interesting that this case found the same edge. - Log in to comment
Any ideas on this?