summaryrefslogtreecommitdiff
path: root/mysql-test/r/func_misc.result
diff options
context:
space:
mode:
authorunknown <malff/marcsql@weblab.(none)>2007-03-01 19:20:47 -0700
committerunknown <malff/marcsql@weblab.(none)>2007-03-01 19:20:47 -0700
commit0a93be2869be5eb801d7955ad512504190dd0479 (patch)
treefb41290501675c692d9aba10ea4b0d9b579b017f /mysql-test/r/func_misc.result
parenta475ed7c6b6607272afb87517ae6ab1f3a397f41 (diff)
downloadmariadb-git-0a93be2869be5eb801d7955ad512504190dd0479.tar.gz
Bug#26093 (SELECT BENCHMARK() for SELECT statements does not produce valid
results) Before this fix, the function BENCHMARK() would fail to evaluate expressions like "(select avg(a) from t1)" in debug builds (with an assert), or would report a time of zero in non debug builds. The root cause is that evaluation of DECIMAL_RESULT expressions was not supported in Item_func_benchmark::val_int(). This has been fixed by this change. mysql-test/r/func_misc.result: Added support for DECIMAL_RESULT in Item_func_benchmark::val_int() mysql-test/t/func_misc.test: Added support for DECIMAL_RESULT in Item_func_benchmark::val_int() sql/item_func.cc: Added support for DECIMAL_RESULT in Item_func_benchmark::val_int()
Diffstat (limited to 'mysql-test/r/func_misc.result')
-rw-r--r--mysql-test/r/func_misc.result44
1 files changed, 44 insertions, 0 deletions
diff --git a/mysql-test/r/func_misc.result b/mysql-test/r/func_misc.result
index 5c6162b7c28..35101e26ff6 100644
--- a/mysql-test/r/func_misc.result
+++ b/mysql-test/r/func_misc.result
@@ -141,4 +141,48 @@ t1 CREATE TABLE `t1` (
`a` bigint(21) unsigned default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
+drop table if exists table_26093;
+drop function if exists func_26093_a;
+drop function if exists func_26093_b;
+create table table_26093(a int);
+insert into table_26093 values
+(1), (2), (3), (4), (5),
+(6), (7), (8), (9), (10);
+create function func_26093_a(x int) returns int
+begin
+set @invoked := @invoked + 1;
+return x;
+end//
+create function func_26093_b(x int, y int) returns int
+begin
+set @invoked := @invoked + 1;
+return x;
+end//
+select avg(a) from table_26093;
+avg(a)
+5.5000
+select benchmark(100, (select avg(a) from table_26093));
+benchmark(100, (select avg(a) from table_26093))
+0
+set @invoked := 0;
+select benchmark(100, (select avg(func_26093_a(a)) from table_26093));
+benchmark(100, (select avg(func_26093_a(a)) from table_26093))
+0
+select @invoked;
+@invoked
+10
+set @invoked := 0;
+select benchmark(100, (select avg(func_26093_b(a, rand())) from table_26093));
+benchmark(100, (select avg(func_26093_b(a, rand())) from table_26093))
+0
+select @invoked;
+@invoked
+1000
+select benchmark(100, (select (a) from table_26093));
+ERROR 21000: Subquery returns more than 1 row
+select benchmark(100, (select 1, 1));
+ERROR 21000: Operand should contain 1 column(s)
+drop table table_26093;
+drop function func_26093_a;
+drop function func_26093_b;
End of 5.0 tests