Commit a6410deb authored by Varun Gupta's avatar Varun Gupta

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.
parent 5f1ec5cb
...@@ -3843,5 +3843,12 @@ ROW_NUMBER() OVER w2 ...@@ -3843,5 +3843,12 @@ ROW_NUMBER() OVER w2
5 5
DROP TABLE t1; 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 # End of 10.2 tests
# #
...@@ -2497,6 +2497,15 @@ SELECT a,b FROM t1 WINDOW w2 AS (PARTITION BY -1,1,0,2,3,4); ...@@ -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); SELECT ROW_NUMBER() OVER w2 FROM t1 WINDOW w2 AS (PARTITION BY -1,0,1,2,3,4,5,6);
DROP TABLE t1; 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 #
--echo # End of 10.2 tests --echo # End of 10.2 tests
--echo # --echo #
...@@ -443,10 +443,8 @@ void Item_window_func::print(String *str, enum_query_type query_type) ...@@ -443,10 +443,8 @@ void Item_window_func::print(String *str, enum_query_type query_type)
{ {
window_func()->print(str, query_type); window_func()->print(str, query_type);
str->append(" over "); str->append(" over ");
#ifndef DBUG_OFF if (!window_spec)
if (!window_spec) // one can call dbug_print_item() anytime in gdb
str->append(window_name); str->append(window_name);
else else
#endif window_spec->print(str, query_type);
window_spec->print(str, query_type);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment