diff options
Diffstat (limited to '')
-rw-r--r-- | mysql-test/main/last_value.test | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/mysql-test/main/last_value.test b/mysql-test/main/last_value.test new file mode 100644 index 00000000..41cfdb54 --- /dev/null +++ b/mysql-test/main/last_value.test @@ -0,0 +1,46 @@ +# +# Tests for the LAST_VALUE function +# + +--disable_warnings +drop table if exists t1; +drop database if exists mysqltest; +--enable_warnings + +# CREATE TABLE `queue` ( +# `id` int(10) unsigned NOT NULL AUTO_INCREMENT, +# `priority` int(11) DEFAULT NULL, +# `state` int(11) DEFAULT NULL, +# `pid` int(10) unsigned DEFAULT NULL, +# `dat` varbinary(200) DEFAULT NULL, +# PRIMARY KEY (`id`) +# ) + +CREATE TABLE t1 (a INT, b INT, c INT, d INT); +INSERT INTO t1 VALUES (1,3,0,NULL),(2,2,0,NULL),(3,4,0,NULL),(4,2,0,NULL); +SELECT * FROM t1; +UPDATE t1 SET c=LAST_VALUE(@last_a:=a,@last_b:=b,@last_c:=c,1), d=4211 WHERE c=0 ORDER BY b DESC LIMIT 1; +SELECT @last_a, @last_b, @last_c; +SELECT * FROM t1; +DROP TABLE t1; + +# +# Test with different types +# +# PS protocol gives slightly different metadata for the length +--enable_metadata +--disable_ps_protocol +SELECT LAST_VALUE(@last_a:=1,@last_b:=1); +select @last_b; +--enable_ps_protocol +SELECT LAST_VALUE(@last_a:=1,@last_b:=1.0); +select @last_b; +SELECT LAST_VALUE(@last_a:=1,@last_b:="hello"); +select @last_b; +SELECT date(LAST_VALUE(@last_a:=1,@last_b:="2001-02-03")); +select @last_b; +SELECT LAST_VALUE(@last_a:=1,@last_b:="2001-02-03",NULL); +select @last_b; +--disable_metadata +--error ER_PARSE_ERROR +SELECT LAST_VALUE(); |