#33282: django.db.utils.ProgrammingError: more than one row returned by a
subquery
used as an expression
-------------------------------------+-------------------------------------
Reporter: Antonio Terceiro | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 3.2
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Antonio Terceiro):
FWIW the generated query that causes this is:
{{{
SELECT
COUNT (*)
AS "__count" FROM "lava_scheduler_app_testjob"
WHERE (((NOT "lava_scheduler_app_testjob".
"is_public" AND "lava_scheduler_app_testjob"."submitter_id" =
%s) OR ("lava_scheduler_app_testjob".
"is_public" AND "lava_scheduler_app_testjob".
"id" IN (SELECT U0.
"id" FROM "lava_scheduler_app_testjob" U0 LEFT
OUTER
JOIN "lava_scheduler_app_testjob_viewing_groups"
U1
ON (U0."id" =
U1."testjob_id") WHERE U1.
"group_id" IS NULL)
AND (("lava_scheduler_app_testjob".
"actual_device_id" IS NOT NULL AND
"lava_scheduler_app_testjob".
"actual_device_id" IN (SELECT V0.
"hostname" FROM
"lava_scheduler_app_device"
V0
LEFT OUTER JOIN
"lava_scheduler_app_groupdevicepermission"
V1 ON (V0."hostname" =
V1.
"device_id") LEFT
OUTER
JOIN "auth_group" V2 ON (V1.
"group_id"
=
V2.
"id")
LEFT OUTER JOIN
"auth_user_groups" V3 ON
(V2.
"id" =
V3.
"group_id")
LEFT OUTER JOIN
"auth_permission" V5 ON (V1.
"permission_id"
=
V5.
"id")
GROUP BY V0."hostname",
(SELECT U0.
"name" FROM
"lava_scheduler_app_devicetype"
U0 LEFT OUTER JOIN
"lava_scheduler_app_groupdevicetypepermission"
U1 ON (U0."name" =
U1.
"devicetype_id")
LEFT
OUTER JOIN "auth_group" U2
ON (U1."group_id" =
U2.
"id") LEFT OUTER JOIN
"auth_user_groups" U3 ON
(U2.
"id"
=
U3.
"group_id")
LEFT OUTER JOIN
"auth_permission" U5 ON
(U1.
"permission_id"
=
U5.
"id")
GROUP BY U0.
"name"
HAVING (SUM
(CASE
WHEN
(U5."codename" =
%s) THEN %
s ELSE % s END) =
%s OR
NOT (SUM
(CASE
WHEN (U3.
"user_id" =
%s AND
U5.
"codename"
IN (%s,
%s,
%s))
THEN % s ELSE
%
s END) =
%s)))
HAVING ((SUM
(CASE
WHEN
(V5."codename" =
%s) THEN %
s ELSE % s END) =
%s AND V0.
"device_type_id"
IN (SELECT U0.
"name" FROM
"lava_scheduler_app_devicetype"
U0 LEFT OUTER
JOIN
"lava_scheduler_app_groupdevicetypepermission"
U1 ON
(U0."name" =
U1.
"devicetype_id")
LEFT OUTER JOIN
"auth_group" U2
ON
(U1."group_id" =
U2.
"id") LEFT
OUTER JOIN
"auth_user_groups"
U3 ON (U2."id"
=
U3.
"group_id")
LEFT OUTER JOIN
"auth_permission"
U5 ON (U1.
"permission_id"
=
U5.
"id")
GROUP
BY U0.
"name"
HAVING (SUM
(CASE
WHEN
(U5.
"codename"
=
%s)
THEN %
s ELSE
%
s END)
=
%s OR
NOT
(SUM
(CASE
WHEN
(U3.
"user_id"
=
%s
AND
U5.
"codename"
IN
(%s,
%s,
%s))
THEN
%
s
ELSE
%
s
END)
=
%s))))
OR
NOT (SUM
(CASE
WHEN (V3.
"user_id" =
%s AND
V5.
"codename"
IN (%s,
%s,
%s))
THEN % s ELSE
%
s END) =
%s))))
OR ("lava_scheduler_app_testjob".
"actual_device_id" IS NULL AND
"lava_scheduler_app_testjob".
"requested_device_type_id" IN (SELECT U0.
"name" FROM
"lava_scheduler_app_devicetype"
U0 LEFT OUTER
JOIN
"lava_scheduler_app_groupdevicetypepermission"
U1 ON (U0."name"
=
U1.
"devicetype_id")
LEFT OUTER JOIN
"auth_group" U2
ON (U1."group_id"
=
U2.
"id") LEFT
OUTER
JOIN
"auth_user_groups" U3
ON (U2."id" =
U3.
"group_id")
LEFT
OUTER JOIN
"auth_permission"
U5
ON (U1.
"permission_id" =
U5.
"id") GROUP
BY
U0.
"name"
HAVING (SUM
(CASE
WHEN
(U5.
"codename"
=
%s)
THEN %
s ELSE %
s END) =
%s OR
NOT (SUM
(CASE
WHEN
(U3.
"user_id"
=
%s
AND
U5.
"codename"
IN
(%s,
%s,
%s))
THEN %
s
ELSE
%
s
END)
=
%s))))))
OR (NOT
("lava_scheduler_app_testjob".
"id" IN (SELECT U0.
"id" FROM "lava_scheduler_app_testjob" U0 LEFT OUTER
JOIN "lava_scheduler_app_testjob_viewing_groups" U1
ON (U0."id" =
U1."testjob_id") WHERE U1.
"group_id" IS NULL)) AND NOT (EXISTS (SELECT (1) AS
"a"
FROM
"lava_scheduler_app_testjob_viewing_groups"
V1 WHERE (V1.
"group_id"
IN
(SELECT
U0.
"id"
FROM
"auth_group"
U0
WHERE
NOT
(U0.
"id"
IN
(%s)))
AND
V1.
"testjob_id"
=
("lava_scheduler_app_testjob".
"id"))
LIMIT 1))))
AND
"lava_scheduler_app_testjob"."submitter_id" =
%s AND "lava_scheduler_app_testjob"."state" IN (%s, %s))
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/33282#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/066.4076072e866af66b74d5cc618c9a524b%40djangoproject.com.
