summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2005-08-26 22:25:45 -0700
committerunknown <igor@rurik.mysql.com>2005-08-26 22:25:45 -0700
commit28920f5987454c9f28ebddcc9a2babbefa155634 (patch)
treeb1603e07e331943d651cbfb5640464674a6f914f /mysql-test
parentf0aeadcd3cf0e5fe13cdbe5e9142693568912b90 (diff)
downloadmariadb-git-28920f5987454c9f28ebddcc9a2babbefa155634.tar.gz
func_str.result, null.result:
Corrected results after the fix for bug #12791. func_test.result, func_test.test: Added test cases for bug #12791. item_func.h, item_func.cc: Fixed bug #12791. Made LEAST/GREATES fully Oracle compliant. LEAST/GREATEST did not return NULL if only some arguments were NULLs. This did not comply with Oracle. sql/item_func.cc: Fixed bug #12791. Made LEAST/GREATES fully Oracle compliant. LEAST/GREATEST did not return NULL if only some arguments were NULLs. This did not comply with Oracle. sql/item_func.h: Fixed bug #12791. Made LEAST/GREATES fully Oracle compliant. LEAST/GREATEST did not return NULL if only some arguments were NULLs. This did not comply with Oracle. mysql-test/t/func_test.test: Added test cases for bug #12791. mysql-test/r/func_test.result: Added test cases for bug #12791. mysql-test/r/null.result: Corrected results after the fix for bug #12791. mysql-test/r/func_str.result: Corrected results after the fix for bug #12791.
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/func_str.result2
-rw-r--r--mysql-test/r/func_test.result13
-rw-r--r--mysql-test/r/null.result8
-rw-r--r--mysql-test/t/func_test.test9
4 files changed, 26 insertions, 6 deletions
diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result
index c7e69ae1d31..577f943ebde 100644
--- a/mysql-test/r/func_str.result
+++ b/mysql-test/r/func_str.result
@@ -287,7 +287,7 @@ lpad('STRING', 20, CONCAT('p','a','d') )
padpadpadpadpaSTRING
select LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD'),GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD');
LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD') GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD')
-HAROLD HARRY
+NULL NULL
select least(1,2,3) | greatest(16,32,8), least(5,4)*1,greatest(-1.0,1.0)*1,least(3,2,1)*1.0,greatest(1,1.1,1.0),least("10",9),greatest("A","B","0");
least(1,2,3) | greatest(16,32,8) least(5,4)*1 greatest(-1.0,1.0)*1 least(3,2,1)*1.0 greatest(1,1.1,1.0) least("10",9) greatest("A","B","0")
33 4 1.0 1.0 1.1 9 B
diff --git a/mysql-test/r/func_test.result b/mysql-test/r/func_test.result
index 32883921e70..d9437f6c515 100644
--- a/mysql-test/r/func_test.result
+++ b/mysql-test/r/func_test.result
@@ -166,7 +166,6 @@ CREATE TABLE t2 ( access_id smallint(6) NOT NULL default '0', name varchar(20
INSERT INTO t2 VALUES (1,'Everyone',2),(2,'Help',3),(3,'Customer Support',1);
SELECT f_acc.rank, a1.rank, a2.rank FROM t1 LEFT JOIN t1 f1 ON (f1.access_id=1 AND f1.faq_group_id = t1.faq_group_id) LEFT JOIN t2 a1 ON (a1.access_id = f1.access_id) LEFT JOIN t1 f2 ON (f2.access_id=3 AND f2.faq_group_id = t1.faq_group_id) LEFT JOIN t2 a2 ON (a2.access_id = f2.access_id), t2 f_acc WHERE LEAST(a1.rank,a2.rank) = f_acc.rank;
rank rank rank
-2 2 NULL
DROP TABLE t1,t2;
CREATE TABLE t1 (d varchar(6), k int);
INSERT INTO t1 VALUES (NULL, 2);
@@ -193,3 +192,15 @@ select * from t1 where a not between 1 and 2 and b not between 3 and 4;
a b
4 5
drop table t1;
+SELECT GREATEST(1,NULL) FROM DUAL;
+GREATEST(1,NULL)
+NULL
+SELECT LEAST('xxx','aaa',NULL,'yyy') FROM DUAL;
+LEAST('xxx','aaa',NULL,'yyy')
+NULL
+SELECT LEAST(1.1,1.2,NULL,1.0) FROM DUAL;
+LEAST(1.1,1.2,NULL,1.0)
+NULL
+SELECT GREATEST(1.5E+2,1.3E+2,NULL) FROM DUAL;
+GREATEST(1.5E+2,1.3E+2,NULL)
+NULL
diff --git a/mysql-test/r/null.result b/mysql-test/r/null.result
index 4551fed2732..1425b2a7f89 100644
--- a/mysql-test/r/null.result
+++ b/mysql-test/r/null.result
@@ -236,10 +236,10 @@ t1 CREATE TABLE `t1` (
`c06` varchar(6) character set latin2 default NULL,
`c07` varchar(6) character set latin2 default NULL,
`c08` varchar(6) character set latin2 default NULL,
- `c09` varchar(6) character set latin2 NOT NULL default '',
- `c10` varchar(6) character set latin2 NOT NULL default '',
- `c11` varchar(6) character set latin2 NOT NULL default '',
- `c12` varchar(6) character set latin2 NOT NULL default '',
+ `c09` varchar(6) character set latin2 default NULL,
+ `c10` varchar(6) character set latin2 default NULL,
+ `c11` varchar(6) character set latin2 default NULL,
+ `c12` varchar(6) character set latin2 default NULL,
`c13` varchar(6) character set latin2 default NULL,
`c14` char(0) character set latin2 default NULL,
`c15` char(0) character set latin2 default NULL,
diff --git a/mysql-test/t/func_test.test b/mysql-test/t/func_test.test
index 424c0d1456b..f2ff47704c9 100644
--- a/mysql-test/t/func_test.test
+++ b/mysql-test/t/func_test.test
@@ -118,3 +118,12 @@ insert into t1 values (1,2), (2,3), (3,4), (4,5);
select * from t1 where a not between 1 and 2;
select * from t1 where a not between 1 and 2 and b not between 3 and 4;
drop table t1;
+
+#
+# Test for bug #12791: one of the arguments of LEAST/GREATEST is NULL
+#
+
+SELECT GREATEST(1,NULL) FROM DUAL;
+SELECT LEAST('xxx','aaa',NULL,'yyy') FROM DUAL;
+SELECT LEAST(1.1,1.2,NULL,1.0) FROM DUAL;
+SELECT GREATEST(1.5E+2,1.3E+2,NULL) FROM DUAL;