mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
Before this change, the functions BENCHMARK, ENCODE, DECODE and FORMAT could only accept a constant for some parameters. After this change, this restriction has been removed. An implication is that these functions can also be used in prepared statements. The change consist of changing the following classes: - Item_func_benchmark - Item_func_encode - Item_func_decode - Item_func_format to: - only accept Item* in the constructor, - and evaluate arguments during calls to val_xxx() which fits the general design of all the other functions. The 'TODO' items identified in item_create.cc during the work done for Bug 21114 are addressed by this fix, as a natural consequence of aligning the design. In the 'func_str' test, a single very long test line involving an explain extended select with many functions has been rewritten into multiple separate tests, to improve maintainability. The result of explain extended select decode(encode(...)) has changed, since the encode and decode functions now print all their parameters. mysql-test/r/func_str.result: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) mysql-test/r/parser.result: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) mysql-test/r/ps.result: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) mysql-test/t/func_str.test: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) mysql-test/t/parser.test: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) mysql-test/t/ps.test: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) sql/item_create.cc: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) sql/item_func.cc: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) sql/item_func.h: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) sql/item_strfunc.cc: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) sql/item_strfunc.h: Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
This commit is contained in:
@@ -399,11 +399,6 @@ select atan();
|
||||
-- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
select atan2(1, 2, 3);
|
||||
|
||||
select benchmark(10, 1+1);
|
||||
|
||||
-- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT
|
||||
select benchmark(5+5, 2);
|
||||
|
||||
-- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
select concat();
|
||||
select concat("foo");
|
||||
@@ -413,12 +408,6 @@ select concat_ws();
|
||||
-- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
select concat_ws("foo");
|
||||
|
||||
set @pwd="my password";
|
||||
-- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT
|
||||
select encode("secret", @pwd);
|
||||
-- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT
|
||||
select decode("encoded-secret", @pwd);
|
||||
|
||||
-- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
select encrypt();
|
||||
-- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
@@ -448,10 +437,6 @@ select field();
|
||||
-- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
select field("p1");
|
||||
|
||||
set @dec=2;
|
||||
-- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT
|
||||
select format(pi(), @dec);
|
||||
|
||||
-- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
select from_unixtime();
|
||||
-- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
|
||||
Reference in New Issue
Block a user