﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
19837	Regression in QuerySet.exclude and many to many	Tim Graham	nobody	"The refactorings in #10790 appears to have cause an issue with QuerySet.exclude and many to many fields.

Attached is a regression test which demonstrates the problem. The test passes using checkout f811649710fb51e48217e9a78991735977decfd8, but fails against the next changeset (the ticket I mentioned above) through master.

In the SQL query from the test, you can see that the ""WHERE NOT"" clause compares program IDs to a subquery that retrieves identifier IDs: {{{queries_program"".""id"" IN (SELECT U1.""identifier_id}}}

{{{
SELECT ""queries_identifier"".""id"", ""queries_identifier"".""name""
FROM ""queries_identifier""
LEFT OUTER JOIN ""queries_program"" ON (
    ""queries_identifier"".""id"" = ""queries_program"".""identifier_id""
) WHERE NOT ((
    ""queries_program"".""id"" IN (
        SELECT U1.""identifier_id""
        FROM ""queries_program"" U1 
        INNER JOIN ""queries_channel_programs"" U2 ON (U1.""id"" = U2.""program_id"")
        WHERE (U2.""channel_id"" = 1  AND U1.""identifier_id"" IS NOT NULL)
    ) AND NOT (""queries_program"".""identifier_id"" IS NULL)
    AND ""queries_program"".""id"" IS NOT NULL 
    AND ""queries_program"".""id"" IS NOT NULL
)) ORDER BY ""queries_identifier"".""name"" ASC
}}}"	Bug	closed	Database layer (models, ORM)	dev	Release blocker	fixed			Unreviewed	0	0	0	0	0	0
