Alessandro Solimando created HIVE-25909:
-------------------------------------------
Summary: Add test for 'hive.default.nulls.last' property for
windows with ordering
Key: HIVE-25909
URL: https://issues.apache.org/jira/browse/HIVE-25909
Project: Hive
Issue Type: Test
Components: CBO
Affects Versions: 4.0.0
Reporter: Alessandro Solimando
Assignee: Alessandro Solimando
Add a test around "hive.default.nulls.last" configuration property and its
interaction with order by clauses within windows.
The property is known to respect such properties:
||hive.default.nulls.last||ASC||DESC||
|true|NULL LAST|NULL FIRST|
|false|NULL FIRST|NULL LAST|
The test can be based along the line of the following examples:
{noformat}
-- hive.default.nulls.last is true by default, it sets NULLS_FIRST for DESC
set hive.default.nulls.last;
OUT:
hive.default.nulls.last=true
SELECT a, b, c, row_number() OVER (PARTITION BY a, b ORDER BY b DESC, c DESC)
FROM test1;
OUT:
John Doe 1990-05-10 00:00:00 2022-01-10 00:00:00 1
John Doe 1990-05-10 00:00:00 2021-12-10 00:00:00 2
John Doe 1990-05-10 00:00:00 2021-11-10 00:00:00 3
John Doe 1990-05-10 00:00:00 2021-10-10 00:00:00 4
John Doe 1990-05-10 00:00:00 2021-09-10 00:00:00 5
John Doe 1987-05-10 00:00:00 NULL 1
John Doe 1987-05-10 00:00:00 2022-01-10 00:00:00 2
John Doe 1987-05-10 00:00:00 2021-12-10 00:00:00 3
John Doe 1987-05-10 00:00:00 2021-11-10 00:00:00 4
John Doe 1987-05-10 00:00:00 2021-10-10 00:00:00 5
-- we set hive.default.nulls.last=false, it sets NULLS_LAST for DESC
set hive.default.nulls.last=false;
SELECT a, b, c, row_number() OVER (PARTITION BY a, b ORDER BY b DESC, c DESC)
FROM test1;
OUT:
John Doe 1990-05-10 00:00:00 2022-01-10 00:00:00 1
John Doe 1990-05-10 00:00:00 2021-12-10 00:00:00 2
John Doe 1990-05-10 00:00:00 2021-11-10 00:00:00 3
John Doe 1990-05-10 00:00:00 2021-10-10 00:00:00 4
John Doe 1990-05-10 00:00:00 2021-09-10 00:00:00 5
John Doe 1987-05-10 00:00:00 2022-01-10 00:00:00 1
John Doe 1987-05-10 00:00:00 2021-12-10 00:00:00 2
John Doe 1987-05-10 00:00:00 2021-11-10 00:00:00 3
John Doe 1987-05-10 00:00:00 2021-10-10 00:00:00 4
John Doe 1987-05-10 00:00:00 NULL 5
-- we set hive.default.nulls.last=false but we have explicit NULLS_LAST, we
expect NULLS_LAST
set hive.default.nulls.last=false;
SELECT a, b, c, row_number() OVER (PARTITION BY a, b ORDER BY b DESC, c DESC
NULLS LAST)
FROM test1;
OUT:
John Doe 1990-05-10 00:00:00 2022-01-10 00:00:00 1
John Doe 1990-05-10 00:00:00 2021-12-10 00:00:00 2
John Doe 1990-05-10 00:00:00 2021-11-10 00:00:00 3
John Doe 1990-05-10 00:00:00 2021-10-10 00:00:00 4
John Doe 1990-05-10 00:00:00 2021-09-10 00:00:00 5
John Doe 1987-05-10 00:00:00 2022-01-10 00:00:00 1
John Doe 1987-05-10 00:00:00 2021-12-10 00:00:00 2
John Doe 1987-05-10 00:00:00 2021-11-10 00:00:00 3
John Doe 1987-05-10 00:00:00 2021-10-10 00:00:00 4
John Doe 1987-05-10 00:00:00 NULL 5
-- we have explicit NULLS_FIRST, we expect NULLS_FIRST
SELECT a, b, c, row_number() OVER (PARTITION BY a, b ORDER BY b DESC, c DESC
NULLS FIRST)
FROM test1;
--OUT:
John Doe 1990-05-10 00:00:00 2022-01-10 00:00:00 1
John Doe 1990-05-10 00:00:00 2021-12-10 00:00:00 2
John Doe 1990-05-10 00:00:00 2021-11-10 00:00:00 3
John Doe 1990-05-10 00:00:00 2021-10-10 00:00:00 4
John Doe 1990-05-10 00:00:00 2021-09-10 00:00:00 5
John Doe 1987-05-10 00:00:00 NULL 1
John Doe 1987-05-10 00:00:00 2022-01-10 00:00:00 2
John Doe 1987-05-10 00:00:00 2021-12-10 00:00:00 3
John Doe 1987-05-10 00:00:00 2021-11-10 00:00:00 4
John Doe 1987-05-10 00:00:00 2021-10-10 00:00:00 5{noformat}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)