Open
Description
Given this CTE query:
cte = With(Thing.objects
.annotate(row_number=Window(RowNumber())))
queryset = (
cte.queryset().with_cte(cte)
.annotate(row_number2=Window(RowNumber(), order_by=[F("row_number")]))
.filter(row_number2=1)
)
The generated SQL looks like this:
WITH RECURSIVE cte AS (
SELECT my_app_thing.id,
ROW_NUMBER() OVER () AS row_number
FROM my_app_thing
)
SELECT *
FROM (
WITH RECURSIVE cte AS (
SELECT my_app_thing.id,
ROW_NUMBER() OVER () AS row_number
FROM my_app_thing
)
SELECT cte.id AS col1,
cte.row_number AS row_number,
ROW_NUMBER() OVER (ORDER BY cte.row_number) AS row_number2
FROM cte
) qualify
WHERE row_number2 = 1
While it should be something like this:
WITH RECURSIVE cte AS (
SELECT my_app_thing.id,
ROW_NUMBER() OVER () AS row_number
FROM my_app_thing
)
SELECT *
FROM (
SELECT cte.id AS col1,
cte.row_number AS row_number,
ROW_NUMBER() OVER (ORDER BY cte.row_number) AS row_number2
FROM cte
) qualify
WHERE row_number2 = 1
Metadata
Metadata
Assignees
Labels
No labels