[Sqlalchemy-tickets] [sqlalchemy] #1688: Query.one() fails to raise MultipleResultsFound
Brought to you by:
zzzeek
From: sqlalchemy <mi...@zz...> - 2010-02-13 17:57:06
|
#1688: Query.one() fails to raise MultipleResultsFound --------------------+------------------------------------------------------- Reporter: guest | Owner: zzzeek Type: defect | Status: new Priority: medium | Milestone: Component: orm | Severity: no triage selected yet Keywords: | Status_field: awaiting triage --------------------+------------------------------------------------------- G'day, I've got a situation where a query results in multiple rows, but calling one() does not result in a MultipleResultsFound exception being raised. I am using polymorphic mapping and then joining the 'base' table with one of the 'identity' tables. (Please see the attached unit test which I believe illustrates the problem clearly). I can confirm that two rows are returned by the database, but these rows are put into an IdentitySet and happen to be equal due to the query only selecting columns from the base class (this is why the problem only manifests when using polymorphic mapping). This causes the call to one() to return a single row '''even though each row results in a different object once mapped polymorphically'''. I am aware that the query is not well constrained (it should explicitly join on the two tables where Node.node_id==BranchOffice.node_id) but I guess that the assertion aspect of using one() should catch the problem in my query. I've also attached a patch containing the fix that I have deployed here, but I am by no means certain that it is the best solution. Please let me know if I can provide any extra information, try another solution or whatever. Regards, David Jagoe -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1688> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |