Bug #112460 | Inconsistent results of SELECT statement with window functions | ||
---|---|---|---|
Submitted: | 26 Sep 2023 7:22 | Modified: | 3 Jan 2024 16:18 |
Reporter: | Zuming Jiang | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Optimizer | Severity: | S2 (Serious) |
Version: | 8.0.33, 8.0.34 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | regression |
[26 Sep 2023 7:22]
Zuming Jiang
[26 Sep 2023 8:55]
MySQL Verification Team
Hello Zuming Jiang, Thank you for the report and test case. regards, Umesh
[26 Sep 2023 8:57]
MySQL Verification Team
- 8.0.33/8.0.34 ./mtr --nocheck-testcases bug112460 Logging: ./mtr --nocheck-testcases bug112460 MySQL Version 8.0.34 Checking supported features Using 'all' suites Collecting tests Checking leftover processes Removing old var directory Creating var directory '/export/home/tmp/ushastry/mysql-8.0.34/mysql-test/var' Installing system database Using parallel: 1 ============================================================================== TEST NAME RESULT TIME (ms) COMMENT ------------------------------------------------------------------------------ create table t2 (vkey int, pkey int, c19 int, c20 double, c22 int); insert into t2 values (135, 145000, -13, 17.61, 0); select case when true then null else (DENSE_RANK() over (partition by ref_0.pkey order by ref_0.vkey desc, ref_0.pkey asc)) end as c_0, case when ((LAST_VALUE(ref_0.pkey) over (partition by ref_0.c19 order by ref_0.vkey desc, ref_0.pkey desc)) in (select ref_0.c22 as c_0 from t2 as ref_8 )) then ref_0.c20 else ref_0.c20 end as c_1 from t2 as ref_0 order by c_1 desc; c_0 c_1 NULL NULL select case when true then null else (DENSE_RANK() over (partition by ref_0.pkey order by ref_0.vkey desc, ref_0.pkey asc)) end as c_0, ref_0.c20 as c_1 from t2 as ref_0 order by c_1 desc; c_0 c_1 NULL 17.61 - 8.0.32 ./mtr --nocheck-testcases bug112460 Logging: ./mtr --nocheck-testcases bug112460 MySQL Version 8.0.32 Checking supported features Using 'all' suites Collecting tests Checking leftover processes Removing old var directory - WARNING: Using the 'mysql-test/var' symlink Creating var directory '/export/home/tmp/ushastry/mysql-8.0.32/mysql-test/var' Installing system database Using parallel: 1 ============================================================================== TEST NAME RESULT TIME (ms) COMMENT ------------------------------------------------------------------------------ create table t2 (vkey int, pkey int, c19 int, c20 double, c22 int); insert into t2 values (135, 145000, -13, 17.61, 0); select case when true then null else (DENSE_RANK() over (partition by ref_0.pkey order by ref_0.vkey desc, ref_0.pkey asc)) end as c_0, case when ((LAST_VALUE(ref_0.pkey) over (partition by ref_0.c19 order by ref_0.vkey desc, ref_0.pkey desc)) in (select ref_0.c22 as c_0 from t2 as ref_8 )) then ref_0.c20 else ref_0.c20 end as c_1 from t2 as ref_0 order by c_1 desc; c_0 c_1 NULL 17.61 select case when true then null else (DENSE_RANK() over (partition by ref_0.pkey order by ref_0.vkey desc, ref_0.pkey asc)) end as c_0, ref_0.c20 as c_1 from t2 as ref_0 order by c_1 desc; c_0 c_1 NULL 17.61
[13 Dec 2023 11:25]
shan he
Could you please confirm whether the simplification process we applied has been helpful for developers in diagnosing and addressing this issue? Here's our output ****** create table t2 (vkey int, pkey int, c19 int, c20 double, c22 int); insert into t2 values (135, 145000, -13, 17.61, 0); select (DENSE_RANK() over ()) as c_0, case when ((LAST_VALUE(ref_0.pkey) over ( )) in ( select ref_0.c22 from t2 )) then ref_0.c20 else ref_0.c20 end as c_1 from t2 as ref_0 order by c_1 desc; +-----+------+ | c_0 | c_1 | +-----+------+ | 1 | NULL | +-----+------+ select (DENSE_RANK() over ()) as c_0, ref_0.c20 as c_1 from t2 as ref_0 order by c_1 desc; +-----+-------+ | c_0 | c_1 | +-----+-------+ | 1 | 17.61 | +-----+-------+
[3 Jan 2024 16:18]
Jon Stephens
Fixed in MySQL 8.0.36 and 8.3.0 by BUG#35710179, see same for changelog entry. Closed.