From 60cdfe07f77708ba8a391ea84448dfa66b81da9a Mon Sep 17 00:00:00 2001 From: "sasha@mysql.sashanet.com" <> Date: Fri, 3 Nov 2000 07:04:33 -0700 Subject: [PATCH] fixed bugs in elt() and make_set() added two new test cases --- .bzrignore | 8 ++++++++ mysql-test/r/3.23/sel000004.result | 6 ++++-- mysql-test/r/3.23/sel000005.result | 6 ++++-- mysql-test/t/3.23/sel000004.test | 21 +++++++++++++++++++++ mysql-test/t/3.23/sel000005.test | 21 +++++++++++++++++++++ sql/item_strfunc.cc | 2 ++ 6 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 mysql-test/t/3.23/sel000004.test create mode 100644 mysql-test/t/3.23/sel000005.test diff --git a/.bzrignore b/.bzrignore index 6b9102bbc51..df51ff83850 100644 --- a/.bzrignore +++ b/.bzrignore @@ -164,3 +164,11 @@ PENDING/2000-10-25.01 PENDING/2000-10-25.02 support-files/mysql-3.23.27-beta.spec .gdb_history +mysql-test/r/3.23/sel000004.result.reject +mysql-test/var/lib/mysql-bin.006 +mysql-test/var/lib/test/elt_ck1.frm +mysql-test/var/lib/test/elt_ck1.MYD +mysql-test/var/lib/test/elt_ck1.MYI +mysql-test/var/lib/test/elt_ck2.frm +mysql-test/var/lib/test/elt_ck2.MYD +mysql-test/var/lib/test/elt_ck2.MYI diff --git a/mysql-test/r/3.23/sel000004.result b/mysql-test/r/3.23/sel000004.result index 7ef0cdabb96..26f5563f3df 100644 --- a/mysql-test/r/3.23/sel000004.result +++ b/mysql-test/r/3.23/sel000004.result @@ -1,2 +1,4 @@ -1+1 1-1 1+1*2 8/5 8%5 MOD(8,5) MOD(8,5)|0 -(1+1)*-2 SIGN(-5) -2 0 3 1.60 3 3 3 4 -1 +id elt(two.val,'one','two') +1 one +2 one +4 two diff --git a/mysql-test/r/3.23/sel000005.result b/mysql-test/r/3.23/sel000005.result index b213d603c4e..26f5563f3df 100644 --- a/mysql-test/r/3.23/sel000005.result +++ b/mysql-test/r/3.23/sel000005.result @@ -1,2 +1,4 @@ -FLOOR(5.5) FLOOR(-5.5) CEILING(5.5) CEILING(-5.5) ROUND(5.5) ROUND(-5.5) -5 -6 6 -5 6 -6 +id elt(two.val,'one','two') +1 one +2 one +4 two diff --git a/mysql-test/t/3.23/sel000004.test b/mysql-test/t/3.23/sel000004.test new file mode 100644 index 00000000000..6146ff641e0 --- /dev/null +++ b/mysql-test/t/3.23/sel000004.test @@ -0,0 +1,21 @@ +# sel000004 +# +# Versions +# -------- +# 3.22 +# 3.23 +# +# Description +# ----------- +# test for a bug with elt() and order by + +drop table if exists elt_ck1,elt_ck2; +create table elt_ck1 (id int(10) not null unique); +create table elt_ck2 (id int(10) not null primary key, +val int(10) not null); +insert into elt_ck1 values (1),(2),(4); +insert into elt_ck2 values (1,1),(2,1),(3,1),(4,2); + +@r/3.23/sel000004.result select one.id, elt(two.val,'one','two') from elt_ck1 one, elt_ck2 two +where two.id=one.id order by one.id; + diff --git a/mysql-test/t/3.23/sel000005.test b/mysql-test/t/3.23/sel000005.test new file mode 100644 index 00000000000..18541d5d69e --- /dev/null +++ b/mysql-test/t/3.23/sel000005.test @@ -0,0 +1,21 @@ +# sel000004 +# +# Versions +# -------- +# 3.22 +# 3.23 +# +# Description +# ----------- +# test for a bug with elt() + +drop table if exists elt_ck1,elt_ck2; +create table elt_ck1 (id int(10) not null unique); +create table elt_ck2 (id int(10) not null primary key, +val int(10) not null); +insert into elt_ck1 values (1),(2),(4); +insert into elt_ck2 values (1,1),(2,1),(3,1),(4,2); + +@r/3.23/sel000005.result select one.id, elt(two.val,'one','two') from elt_ck1 one, elt_ck2 two +where two.id=one.id ; + diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index a52b9a85857..c6a5427b444 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1190,6 +1190,7 @@ void Item_func_elt::fix_length_and_dec() } maybe_null=1; // NULL if wrong first arg used_tables_cache|=item->used_tables(); + const_item_cache&=item->const_item(); } @@ -1245,6 +1246,7 @@ void Item_func_make_set::fix_length_and_dec() for (uint i=1 ; i < arg_count ; i++) max_length+=args[i]->max_length; used_tables_cache|=item->used_tables(); + const_item_cache&=item->const_item(); }