fix: bad NULL handling in where clause
This commit is contained in:
parent
b42fb34903
commit
4e732e1542
3 changed files with 47 additions and 52 deletions
|
|
@ -193,12 +193,11 @@ WHERE
|
|||
)
|
||||
|
||||
AND (
|
||||
-- Если массив пуст (NULL или []) — не фильтруем
|
||||
cardinality(sqlc.arg('title_statuses')::title_status_t[]) = 0
|
||||
OR
|
||||
-- Иначе: статус есть в списке
|
||||
t.title_status = ANY(sqlc.arg('title_statuses')::title_status_t[])
|
||||
)
|
||||
'title_statuses'::title_status_t[] IS NULL
|
||||
OR array_length('title_statuses'::title_status_t[], 1) IS NULL
|
||||
OR array_length('title_statuses'::title_status_t[], 1) = 0
|
||||
OR t.title_status = ANY('title_statuses'::title_status_t[])
|
||||
)
|
||||
AND (sqlc.narg('rating')::float IS NULL OR t.rating >= sqlc.narg('rating')::float)
|
||||
AND (sqlc.narg('release_year')::int IS NULL OR t.release_year = sqlc.narg('release_year')::int)
|
||||
AND (sqlc.narg('release_season')::release_season_t IS NULL OR t.release_season = sqlc.narg('release_season')::release_season_t)
|
||||
|
|
@ -326,15 +325,16 @@ WHERE
|
|||
)
|
||||
|
||||
AND (
|
||||
-- Если массив пуст (NULL или []) — не фильтруем
|
||||
cardinality(sqlc.arg('title_statuses')::title_status_t[]) = 0
|
||||
OR
|
||||
t.title_status = ANY(sqlc.arg('title_statuses')::title_status_t[])
|
||||
'title_statuses'::title_status_t[] IS NULL
|
||||
OR array_length('title_statuses'::title_status_t[], 1) IS NULL
|
||||
OR array_length('title_statuses'::title_status_t[], 1) = 0
|
||||
OR t.title_status = ANY('title_statuses'::title_status_t[])
|
||||
)
|
||||
AND (
|
||||
cardinality(sqlc.arg('usertitle_statuses')::usertitle_status_t[]) = 0
|
||||
OR
|
||||
u.status = ANY(sqlc.arg('usertitle_statuses')::usertitle_status_t[])
|
||||
'usertitle_statuses'::title_status_t[] IS NULL
|
||||
OR array_length('usertitle_statuses'::title_status_t[], 1) IS NULL
|
||||
OR array_length('usertitle_statuses'::title_status_t[], 1) = 0
|
||||
OR t.title_status = ANY('usertitle_statuses'::title_status_t[])
|
||||
)
|
||||
AND (sqlc.narg('rate')::int IS NULL OR u.rate >= sqlc.narg('rate')::int)
|
||||
AND (sqlc.narg('rating')::float IS NULL OR t.rating >= sqlc.narg('rating')::float)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue