summaryrefslogtreecommitdiff
path: root/mysql-test/r/func_crypt.result
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2016-09-22 07:00:10 +0400
committerAlexander Barkov <bar@mariadb.org>2016-09-22 07:00:10 +0400
commit7e4eb990adb71920cc10393194d7317ba07e3f91 (patch)
treedd613274685ad7a468e360275e5d78ee2b868c0c /mysql-test/r/func_crypt.result
parentec7e0b7b30ecd301da5990495cdf18b39425a7c6 (diff)
downloadmariadb-git-7e4eb990adb71920cc10393194d7317ba07e3f91.tar.gz
MDEV-10425 Assertion `collation.derivation == DERIVATION_IMPLICIT' failed in Item_func_conv_charset::fix_length_and_dec()
MDEV-10850 Wrong result for WHERE .. (f2=TO_BASE64('test') OR f2=TO_BASE64('TEST')) Problem N1: MDEV-10425 Item_func_{md5|sha|sha2}::fix_length_and_dec() changed args[0]->collation to force binary comparison in args[0]->eq(). It was done to treat e.g. MD5('a') and MD5('A') as different values. It is wrong for a Item_func_xxx to modify its arguments. Item_func_conv_charset did not expect that and crashed on assert. Problem N2: MDEV-10850 Item_func_to_base64, Item_func_password, Item_func_hex are also case sensitive hash functions, but they did not compare their arguments as binary. Solution: - Removing the code changing args[0]->collation - Introducing Item_str_ascii_checksum_func as a common parent for Item_func_{md5|sha|sha2|password|hex|to_base64} and overriding its eq() method to compare arguments binary.
Diffstat (limited to 'mysql-test/r/func_crypt.result')
-rw-r--r--mysql-test/r/func_crypt.result62
1 files changed, 62 insertions, 0 deletions
diff --git a/mysql-test/r/func_crypt.result b/mysql-test/r/func_crypt.result
index 1eda56ac114..c3d7bf67859 100644
--- a/mysql-test/r/func_crypt.result
+++ b/mysql-test/r/func_crypt.result
@@ -106,3 +106,65 @@ OLD_PASSWORD(c1) PASSWORD(c1)
77023ffe214c04ff *82E58A2C08AAFE72C8EB523069CD8ADB33F78F58
DROP TABLE t1;
End of 5.0 tests
+#
+# Start of 10.1 tests
+#
+# Start of func_str_ascii_checksum.inc
+#
+# MDEV-10850 Wrong result for WHERE .. (f2=TO_BASE64('test') OR f2=TO_BASE64('TEST'))
+#
+CREATE TABLE t1 (f1 VARCHAR(4), f2 VARCHAR(255), UNIQUE KEY k1 (f1,f2));
+INSERT INTO t1 VALUES ('test',password('test')), ('TEST', password('TEST'));
+SELECT * FROM t1 IGNORE INDEX(k1) WHERE f1='test' AND (f2= password("test") OR f2= password("TEST"));
+f1 f2
+test *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29
+TEST *47A6B0EA08A36FAEBE4305B373FE37E3CF27C357
+SELECT * FROM t1 WHERE f1='test' AND (f2= password("test") OR f2= password("TEST"));
+f1 f2
+TEST *47A6B0EA08A36FAEBE4305B373FE37E3CF27C357
+test *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29
+SELECT * FROM t1 WHERE f1='test' AND (f2= password("TEST") OR f2= password("test"));
+f1 f2
+TEST *47A6B0EA08A36FAEBE4305B373FE37E3CF27C357
+test *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29
+DROP TABLE t1;
+#
+# MDEV-10425 Assertion `collation.derivation == DERIVATION_IMPLICIT' failed in Item_func_conv_charset::fix_length_and_dec()
+#
+PREPARE stmt FROM "SELECT password(CONVERT('foo' USING latin1))";
+EXECUTE stmt;
+password(CONVERT('foo' USING latin1))
+*F3A2A51A9B0F2BE2468926B4132313728C250DBF
+DEALLOCATE PREPARE stmt;
+# End of func_str_ascii_checksum.inc
+# Start of func_str_ascii_checksum.inc
+#
+# MDEV-10850 Wrong result for WHERE .. (f2=TO_BASE64('test') OR f2=TO_BASE64('TEST'))
+#
+CREATE TABLE t1 (f1 VARCHAR(4), f2 VARCHAR(255), UNIQUE KEY k1 (f1,f2));
+INSERT INTO t1 VALUES ('test',old_password('test')), ('TEST', old_password('TEST'));
+SELECT * FROM t1 IGNORE INDEX(k1) WHERE f1='test' AND (f2= old_password("test") OR f2= old_password("TEST"));
+f1 f2
+test 378b243e220ca493
+TEST 06df397e084be793
+SELECT * FROM t1 WHERE f1='test' AND (f2= old_password("test") OR f2= old_password("TEST"));
+f1 f2
+TEST 06df397e084be793
+test 378b243e220ca493
+SELECT * FROM t1 WHERE f1='test' AND (f2= old_password("TEST") OR f2= old_password("test"));
+f1 f2
+TEST 06df397e084be793
+test 378b243e220ca493
+DROP TABLE t1;
+#
+# MDEV-10425 Assertion `collation.derivation == DERIVATION_IMPLICIT' failed in Item_func_conv_charset::fix_length_and_dec()
+#
+PREPARE stmt FROM "SELECT old_password(CONVERT('foo' USING latin1))";
+EXECUTE stmt;
+old_password(CONVERT('foo' USING latin1))
+7c786c222596437b
+DEALLOCATE PREPARE stmt;
+# End of func_str_ascii_checksum.inc
+#
+# End of 10.1 tests
+#