diff options
Diffstat (limited to 'mysql-test/t/func_str.test')
-rw-r--r-- | mysql-test/t/func_str.test | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test index 3c3de4240ab..019d17518dd 100644 --- a/mysql-test/t/func_str.test +++ b/mysql-test/t/func_str.test @@ -1407,6 +1407,18 @@ insert into t1 values (null),(8); select group_concat( i ), make_set( i, 'a', 'b' ) field from t1 group by field; drop table t1; +--echo # +--echo # Bug#11766684 59851: UNINITIALISED VALUE IN ITEM_FUNC_LIKE::SELECT_OPTIMIZE WITH SUBQUERY AND +--echo # + +CREATE TABLE t2(a INT, KEY(a)); +INSERT INTO t2 VALUES (1),(2); +CREATE TABLE t1(b INT, PRIMARY KEY(b)); +INSERT INTO t1 VALUES (0),(254); +SELECT 1 FROM t2 WHERE a LIKE +(SELECT EXPORT_SET(1, b, b, b, b) FROM t1 LIMIT 1); +DROP TABLE t1, t2; + --echo End of 5.1 tests --echo # @@ -1592,3 +1604,189 @@ select md5(_filename "a"), sha(_filename "a"); --echo # End of 5.5 tests --echo # + +--echo # +--echo # Start of 5.6 tests +--echo # + +--echo # +--echo # WL#5510 Functions to_base64 and from_base64 +--echo # +let $1=64; +while($1) +{ + dec $1; + eval CREATE TABLE t1 AS SELECT TO_BASE64(REPEAT('a',$1)) AS to_base64; + SHOW CREATE TABLE t1; + SELECT to_base64, LENGTH(to_base64) FROM t1; + CREATE TABLE t2 AS SELECT from_base64(to_base64) AS from_base64 FROM t1; + SHOW CREATE TABLE t2; + SELECT from_base64, LENGTH(from_base64) FROM t2; + DROP TABLE t2; + DROP TABLE t1; + --echo +} +CREATE TABLE t1 (a VARBINARY(64)); +INSERT INTO t1 VALUES (0x00), (0x0000), (0x000000), (0x00000000); +INSERT INTO t1 VALUES (0x00010203040506070809); +SELECT TO_BASE64(a), hex(a) FROM t1 ORDER BY a; +DROP TABLE t1; + +--echo # +--echo # Test NULL output for NULL input +--echo # +SELECT TO_BASE64(NULL); +SELECT FROM_BASE64(NULL); + +--echo # +--echo # RFC4648 test vectors +--echo # +SELECT @b:= TO_BASE64(''), FROM_BASE64(@b); # "" +SELECT @b:= TO_BASE64('f'), FROM_BASE64(@b); # "Zg==" +SELECT @b:= TO_BASE64('fo'), FROM_BASE64(@b); # "Zm8=" +SELECT @b:= TO_BASE64('foo'), FROM_BASE64(@b); # "Zm9v" +SELECT @b:= TO_BASE64('foob'), FROM_BASE64(@b); # "Zm9vYg==" +SELECT @b:= TO_BASE64('fooba'), FROM_BASE64(@b); # "Zm9vYmE=" +SELECT @b:= TO_BASE64('foobar'), FROM_BASE64(@b); # "Zm9vYmFy" + + +--echo # +--echo # Invalid characters - return NULL +--echo # +SELECT hex(FROM_BASE64('#')); +SELECT hex(FROM_BASE64('A#')); +SELECT hex(FROM_BASE64('AB#')); +SELECT hex(FROM_BASE64('ABC#')); +SELECT hex(FROM_BASE64('ABCD#')); + +--echo # +--echo # "=" is not valid on the first and second positions of a quadruple +--echo # +SELECT hex(FROM_BASE64('=')); +SELECT hex(FROM_BASE64('A=')); +SELECT hex(FROM_BASE64('ABCD=')); +SELECT hex(FROM_BASE64('ABCDE=')); + +--echo # +--echo # Incomplete sequences - return NULL +--echo # +SELECT hex(FROM_BASE64('A')); +SELECT hex(FROM_BASE64('AB')); +SELECT hex(FROM_BASE64('ABC')); + +--echo # +--echo # Unexpected input after pad characters - return NULL +--echo # +SELECT hex(FROM_BASE64('AAA=x')); +SELECT hex(FROM_BASE64('AA==x')); + + +--echo # +--echo # Delimiters are allowed at any position +--echo # +SELECT hex(FROM_BASE64(' A B C D ')); +SELECT hex(FROM_BASE64(' A A = = ')); +SELECT hex(FROM_BASE64(' A A A = ')); +SELECT hex(FROM_BASE64(' A \n B \r C \t D ')); + +--echo # +--echo # Testing that to_base64 respects max_allowed_packet +--echo # +SELECT LENGTH(TO_BASE64(REPEAT('a', @@max_allowed_packet-10))); + +--echo # +--echo # Testing base64 with various data types +--echo # +CREATE TABLE t1 ( + i1 INT, + f1 FLOAT, + dc1 DECIMAL(10,5), + e1 ENUM('enum11','enum12','enum13'), + s1 SET('set1','set2','set3'), + t1 TIME, + d1 DATE, + dt1 DATETIME +); +INSERT INTO t1 VALUES +(-12345, -456.789, 123.45, 'enum13', 'set1,set3', +'01:02:03', '2010-01-01', '2011-01-01 02:03:04'); +SELECT FROM_BASE64(TO_BASE64(i1)) FROM t1; +SELECT FROM_BASE64(TO_BASE64(f1)) FROM t1; +SELECT FROM_BASE64(TO_BASE64(dc1)) FROM t1; +SELECT FROM_BASE64(TO_BASE64(e1)) FROM t1; +SELECT FROM_BASE64(TO_BASE64(s1)) FROM t1; +SELECT FROM_BASE64(TO_BASE64(t1)) FROM t1; +SELECT FROM_BASE64(TO_BASE64(d1)) FROM t1; +SELECT FROM_BASE64(TO_BASE64(dt1)) FROM t1; +DROP TABLE t1; + + +# +# BUG #12735829: SPACE() FUNCTION WARNING REFERS TO REPEAT() IN ER_WARN_ALLOWED_PACKET_OVERFLOWED +# + +SELECT SPACE(@@global.max_allowed_packet*2); + + +# +# BUG #11746123-23637: CHARSET AND COLLATION OF THE FUNCTION SPACE() +# + +SET NAMES latin1; +PREPARE stmt FROM "SELECT COLLATION(space(2))"; +EXECUTE stmt; +SET NAMES latin2; +EXECUTE stmt; + + +--echo # +--echo # End of 5.6 tests +--echo # + +--echo # +--echo # Start of 10.0 tests +--echo # + +--echo # +--echo # MDEV-12681 Wrong VIEW results for CHAR(0xDF USING latin1) +--echo # + +EXPLAIN EXTENDED SELECT CHAR(0xDF USING latin1); +EXPLAIN EXTENDED SELECT CHAR(0xDF USING `binary`); +EXPLAIN EXTENDED SELECT CHAR(0xDF); + + +--echo # +--echo # MDEV-15619 using CONVERT() inside AES_ENCRYPT() in an UPDATE corrupts data +--echo # + +CREATE TABLE t1 ( + id int(11) NOT NULL, + session_id varchar(255) DEFAULT NULL, + directory mediumtext, + checksum int(10) DEFAULT NULL, + last_update datetime DEFAULT NULL, + PRIMARY KEY (id), + KEY lastupdate (last_update) +) DEFAULT CHARSET=latin1; +INSERT INTO t1 VALUES (1,'',NULL,38391,'2017-06-24 07:35:28'); +UPDATE t1 SET directory = AES_ENCRYPT(CONVERT('test stringrererejrjerjehrjekhrjkehrjkehrkjehrjkerhkjehrjekrhkjehrkjerhjkehrkjehrkjehrjkehrjkehrjkehrjkerjkehrjkehrjkehrjke rekjhrejrejhrjehgrehjgrhjerjhegrjherejhgrjhegrjehgrjhegrejhrgjehgrjhegrjhegrjhergjhegrjhegrhjegrjerhthkjjkdhjkgdfjkgjkdgdjkfjkhgjkfdhjgjkfdghkjdfghkjfdghfjkdghkdjfghdkjfghfjkdghfkjdghkjfdghfkjdghfkdjghfkjdghfdjkghjkdfhgdfjkghfjkdghfjkdghfjdkghfjkdghkfjdghfkjdghfkjdghkjdfghfjdkghjkfdghkjdfhgjkdfhgjkfdhgkjfdghkfjdhgkjfdgdjkejktjherjthkjrethkjrethjkerthjkerhtjkerhtkjerhtjkerhtjkerhtjkrehtkjerhtkjrehtjkrehtkjrehtkjerhtkjerhtjkrehtkjrehtjkrehtkjrethjkrethkjrehtkjethjkerhtjkrehtjkretkjerhtkjrehtjkerhtjkrehtjrehtkjrekjtrfgdsfgdhjsghjgfdhjsfhjdfgdhjshjdshjfghjdsfgjhsfgjhsdfgjhdsfgjdhsfgsjhfgjhsdfgsdjhfgjdhsfdjshfgdsjhfgjsdhfdjshfgdjhsfgdjshfgjdhsfgjhsdfgjhsdgfjhsdgfjhdsgfjhsgfjhsdgfjhdsgfhjsdehkjthrkjethjkre' USING latin1), '95F5A1F52A554'), last_update= NOW(); +SELECT directory IS NULL FROM t1; +DROP TABLE t1; + +CREATE TABLE t1 ( + id int(11) NOT NULL PRIMARY KEY, + directory mediumtext +) DEFAULT CHARSET=latin1; +INSERT INTO t1 VALUES (1,AES_ENCRYPT(CONVERT(REPEAT('a',800) USING latin1),'95F5A1F52A554')); +SELECT AES_DECRYPT(directory,'95F5A1F52A554') FROM t1; +DROP TABLE t1; + +SET @enc=AES_ENCRYPT(REPEAT(_latin1'a',800),'95F5A1F52A554'); +CREATE TABLE t1 ( + id int(11) NOT NULL PRIMARY KEY, + directory mediumtext +) DEFAULT CHARSET=latin1; +INSERT INTO t1 VALUES (1,AES_DECRYPT(CONVERT(@enc USING binary),'95F5A1F52A554')); +SELECT * FROM t1; +DROP TABLE t1; |