mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
cd2924bacb
and
MDEV-23414 Assertion `res->charset() == item->collation.collation' failed in Type_handler_string_result::make_packed_sort_key_part
pack_sort_string() *must* take a collation from the Item, not from the
String value. Because when casting a string to _binary the original
String is not copied for performance reasons, it's reused but its
collation does not match Item's collation anymore.
Note, that String's collation cannot be simply changed to _binary,
because for an Item_string literal the original String must stay
unchanged for the duration of the query.
this partially reverts 61c15ebe32
60 lines
1.5 KiB
Text
60 lines
1.5 KiB
Text
-- source include/have_des.inc
|
|
|
|
# This test can't be in func_encrypt.test, because it requires
|
|
# --des-key-file to not be set.
|
|
|
|
#
|
|
# Bug #11643: des_encrypt() causes server to die
|
|
#
|
|
select des_encrypt('hello');
|
|
|
|
# End of 4.1 tests
|
|
|
|
--echo #
|
|
--echo # Bug #11643: des_encrypt() causes server to die
|
|
--echo #
|
|
|
|
CREATE TABLE t1 (des VARBINARY(200) NOT NULL DEFAULT '') ENGINE=MyISAM;
|
|
|
|
INSERT INTO t1 VALUES ('1234'), ('12345'), ('123456'), ('1234567');
|
|
|
|
UPDATE t1 SET des=DES_ENCRYPT('1234');
|
|
|
|
SELECT LENGTH(des) FROM t1;
|
|
SELECT DES_DECRYPT(des) FROM t1;
|
|
|
|
SELECT
|
|
LENGTH(DES_ENCRYPT('1234')),
|
|
LENGTH(DES_ENCRYPT('12345')),
|
|
LENGTH(DES_ENCRYPT('123456')),
|
|
LENGTH(DES_ENCRYPT('1234567'));
|
|
SELECT
|
|
DES_DECRYPT(DES_ENCRYPT('1234')),
|
|
DES_DECRYPT(DES_ENCRYPT('12345')),
|
|
DES_DECRYPT(DES_ENCRYPT('123456')),
|
|
DES_DECRYPT(DES_ENCRYPT('1234567'));
|
|
|
|
DROP TABLE t1;
|
|
|
|
--Echo End of 5.0 tests
|
|
|
|
--echo #
|
|
--echo # MDEV-23330 Server crash or ASAN negative-size-param in
|
|
--echo # my_strnncollsp_binary / SORT_FIELD_ATTR::compare_packed_varstrings
|
|
--echo #
|
|
|
|
CREATE TABLE t1 (a CHAR(240), b BIT(48));
|
|
INSERT INTO t1 VALUES ('a',b'0001'),('b',b'0010'),('c',b'0011'),('d',b'0100'),('e',b'0001'),('f',b'0101'),('g',b'0110'),('h',b'0111'),('i',b'1000'),('j',b'1001');
|
|
SELECT DES_DECRYPT(a, 'x'), HEX(BINARY b) FROM t1 GROUP BY 1, 2 WITH ROLLUP;
|
|
DROP TABLE t1;
|
|
|
|
#
|
|
# don't change the charset of a literal Item_string
|
|
#
|
|
|
|
CREATE TABLE t1 (a INT);
|
|
INSERT t1 VALUES (1),(2);
|
|
SELECT CHAR_LENGTH(a), DES_DECRYPT(a) FROM (SELECT _utf8 0xC2A2 AS a FROM t1) AS t2;
|
|
DROP TABLE t1;
|
|
|
|
--Echo End of 10.5 tests
|