Frequently Asked Questions

Неожиданное поведение функции ROW() - Row() function unexpected behavior

Неожиданное поведение функции ROW()


Exception
1. Создаем таблицу, наполняем рандомными данными, создаем на основе этой таблицы представление.
2. Делаем запрос с наличием функции row() к таблице и представлению
3. Запросы возвращают разные данные.
Product
ADB
Version
Замечен в 5.15, но воспроизводится и в 5.21
Description
Возвращается два разных результата одного запроса к представлению и таблице, соответственно:
SELECT cte."userId" FROM ( SELECT 7 as "userId" ) cte WHERE (
SELECT
row(u.user_id)
FROM
users_test u
WHERE
u.user_id = cte."userId"
) IS NOT NULL;
 userId
--------
(0 rows)
SELECT cte."userId" FROM ( SELECT 7 as "userId" ) cte WHERE (
SELECT
row(u.user_id)
FROM
users_unmasked u
WHERE
u.user_id = cte."userId"
) IS NOT NULL;
 userId
--------
7
(1 row)
Recommendations
-- Test query from view
SELECT cte."userId" FROM ( SELECT 7 as "userId" ) cte WHERE (
SELECT
row(u.user_id)
FROM
(SELECT users_unmasked.user_id::int FROM users_unmasked) u
WHERE
u.user_id = cte."userId"
) IS NOT NULL;
Если однозначно кастовать user.id::int, то запрос возвращает ожидаемое значение
Related tickets
AS-674500
https://jira.arenadata.io/browse/ADBDEV-338
Last Updated 10 months ago

Arenadata

127018, Moscow
Skladochnaya St., 3, building 1,
Russia

support@arenadata.io

Please Wait!

Please wait... it will take a second!