summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sasha@mysql.sashanet.com>2000-11-03 07:04:33 -0700
committerunknown <sasha@mysql.sashanet.com>2000-11-03 07:04:33 -0700
commita1b03526fc2d5a7e38da93fa589e7cb55242d86d (patch)
tree5ee24e3e58295b7a4a6a0b779c5c380b4ab7891f
parent3dfc0a825ed3961460eb17b814fabab900adbffb (diff)
downloadmariadb-git-a1b03526fc2d5a7e38da93fa589e7cb55242d86d.tar.gz
fixed bugs in elt() and make_set()
added two new test cases BitKeeper/etc/ignore: Added 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 to the ignore list mysql-test/r/3.23/sel000004.result: new result mysql-test/r/3.23/sel000005.result: new result sql/item_strfunc.cc: fixed bug in make_set() and elt()
-rw-r--r--.bzrignore8
-rw-r--r--mysql-test/r/3.23/sel000004.result6
-rw-r--r--mysql-test/r/3.23/sel000005.result6
-rw-r--r--mysql-test/t/3.23/sel000004.test21
-rw-r--r--mysql-test/t/3.23/sel000005.test21
-rw-r--r--sql/item_strfunc.cc2
6 files changed, 60 insertions, 4 deletions
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();
}