Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
MDEV-18916: crash in Window_spec::print_partition() with decimals
Removed an unnecessary ifndef which was printing the window name for a named
window only in the case of debug build. The print() for the window function
should behave in the same way on both release and debug builds.
  • Loading branch information
Varun Gupta committed Jul 27, 2020
1 parent 5f1ec5c commit a6410de
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 4 deletions.
7 changes: 7 additions & 0 deletions mysql-test/r/win.result
Expand Up @@ -3843,5 +3843,12 @@ ROW_NUMBER() OVER w2
5
DROP TABLE t1;
#
# MDEV-18916: crash in Window_spec::print_partition() with decimals
#
SELECT cast((rank() over w1) as decimal (53,56));
ERROR 42000: Too big scale 56 specified for 'rank() over w1'. Maximum is 38
SELECT cast((rank() over w1) as decimal (53,30));
ERROR HY000: Window specification with name 'w1' is not defined
#
# End of 10.2 tests
#
9 changes: 9 additions & 0 deletions mysql-test/t/win.test
Expand Up @@ -2497,6 +2497,15 @@ SELECT a,b FROM t1 WINDOW w2 AS (PARTITION BY -1,1,0,2,3,4);
SELECT ROW_NUMBER() OVER w2 FROM t1 WINDOW w2 AS (PARTITION BY -1,0,1,2,3,4,5,6);
DROP TABLE t1;

--echo #
--echo # MDEV-18916: crash in Window_spec::print_partition() with decimals
--echo #

--error ER_TOO_BIG_SCALE
SELECT cast((rank() over w1) as decimal (53,56));
--error ER_WRONG_WINDOW_SPEC_NAME
SELECT cast((rank() over w1) as decimal (53,30));

--echo #
--echo # End of 10.2 tests
--echo #
6 changes: 2 additions & 4 deletions sql/item_windowfunc.cc
Expand Up @@ -443,10 +443,8 @@ void Item_window_func::print(String *str, enum_query_type query_type)
{
window_func()->print(str, query_type);
str->append(" over ");
#ifndef DBUG_OFF
if (!window_spec) // one can call dbug_print_item() anytime in gdb
if (!window_spec)
str->append(window_name);
else
#endif
window_spec->print(str, query_type);
window_spec->print(str, query_type);
}

0 comments on commit a6410de

Please sign in to comment.