﻿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
9985	r9701 breaks for combinations of values_list and unique - it inserts duplicate references in SQL	cmutel@…	Malcolm Tredinnick	"r9701 introduces a change that leads to malformed SQL in queries that include values_list and distinct queries, at least in SQLite. A simple example:


{{{
class Database(models.Model):
    name = models.TextField()

class Process(models.Model):
    database = models.ForeignKey(Database)
    name = models.TextField()
}}}

The query

{{{
Database.objects.filter(id__in=Process.objects.filter(id__in=(1,2)).values_list(
'database', flat=True).distinct()) 
}}}

produces the following SQL:

{{{
SELECT ""basic_database"".""id"", ""basic_database"".""name"" FROM ""basic_database"" WHERE 
""basic_database"".""id"" IN (SELECT DISTINCT U0.""database_id"", U0.""database_id"" FROM 
""basic_process"" U0 WHERE U0.""id"" IN (1, 2)) LIMIT 21
}}}

where U0.""database_id"" is repeated, and produces an error:

{{{
OperationalError: only a single result allowed for a SELECT that is part of an expression
}}}

Unfortunately, this is the limit of my Python knowledge, so I don't have a patch to correct this problem.

The query functions perfectly in r9700 and earlier."		closed	Database layer (models, ORM)	dev		fixed			Unreviewed	0	0	0	0	0	0
