mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-8402 Bug #77473 Truncated data with subquery & UTF8
This commit is contained in:
@ -5830,5 +5830,44 @@ OCTET_LENGTH(a) a
|
|||||||
255 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
255 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-8402 Bug#77473 Bug#21317406 TRUNCATED DATA WITH SUBQUERY & UTF8
|
||||||
|
#
|
||||||
|
#
|
||||||
|
SET NAMES utf8;
|
||||||
|
SELECT length(rpad(_utf8 0xD0B1, 65536, _utf8 0xD0B2)) AS data;
|
||||||
|
data
|
||||||
|
131072
|
||||||
|
SELECT length(data) AS len FROM (
|
||||||
|
SELECT rpad(_utf8 0xD0B1, 65536, _utf8 0xD0B2) AS data
|
||||||
|
) AS sub;
|
||||||
|
len
|
||||||
|
131072
|
||||||
|
SELECT length(rpad(_utf8 0xD0B1, 65535, _utf8 0xD0B2)) AS data;
|
||||||
|
data
|
||||||
|
131070
|
||||||
|
SELECT length(data) AS len FROM (
|
||||||
|
SELECT rpad(_utf8 0xD0B1, 65535, _utf8 0xD0B2) AS data
|
||||||
|
) AS sub;
|
||||||
|
len
|
||||||
|
131070
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 36766) AS data) AS sub;
|
||||||
|
len
|
||||||
|
73532
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 36767) AS data) AS sub;
|
||||||
|
len
|
||||||
|
73534
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 36778) AS data) AS sub;
|
||||||
|
len
|
||||||
|
73556
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 65535) AS data) AS sub;
|
||||||
|
len
|
||||||
|
131070
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 65536) AS data) AS sub;
|
||||||
|
len
|
||||||
|
131072
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 65537) AS data) AS sub;
|
||||||
|
len
|
||||||
|
131074
|
||||||
|
#
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
|
@ -2622,6 +2622,40 @@ OCTET_LENGTH(a) a
|
|||||||
252 😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎
|
252 😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-8402 Bug#77473 Bug#21317406 TRUNCATED DATA WITH SUBQUERY & UTF8
|
||||||
|
#
|
||||||
|
#
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SELECT length(repeat(_utf8mb4 0xE29883, 21844)) AS data;
|
||||||
|
data
|
||||||
|
65532
|
||||||
|
SELECT length(data) AS len
|
||||||
|
FROM ( SELECT repeat(_utf8mb4 0xE29883, 21844) AS data ) AS sub;
|
||||||
|
len
|
||||||
|
65532
|
||||||
|
SELECT length(repeat(_utf8mb4 0xE29883, 21846)) AS data;
|
||||||
|
data
|
||||||
|
65538
|
||||||
|
SELECT length(data) AS len
|
||||||
|
FROM ( SELECT repeat(_utf8mb4 0xE29883, 21846) AS data ) AS sub;
|
||||||
|
len
|
||||||
|
65538
|
||||||
|
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 21844) AS data ) AS sub;
|
||||||
|
len
|
||||||
|
65532
|
||||||
|
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 21845) AS data ) AS sub;
|
||||||
|
len
|
||||||
|
65535
|
||||||
|
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 21846) AS data ) AS sub;
|
||||||
|
len
|
||||||
|
65538
|
||||||
|
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 65535) AS data ) AS sub;
|
||||||
|
len
|
||||||
|
196605
|
||||||
|
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 65536) AS data ) AS sub;
|
||||||
|
len
|
||||||
|
196608
|
||||||
|
#
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -1658,6 +1658,29 @@ ALTER TABLE t1 MODIFY a TINYTEXT CHARACTER SET utf8;
|
|||||||
SELECT OCTET_LENGTH(a),a FROM t1;
|
SELECT OCTET_LENGTH(a),a FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-8402 Bug#77473 Bug#21317406 TRUNCATED DATA WITH SUBQUERY & UTF8
|
||||||
|
--echo #
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET NAMES utf8;
|
||||||
|
SELECT length(rpad(_utf8 0xD0B1, 65536, _utf8 0xD0B2)) AS data;
|
||||||
|
SELECT length(data) AS len FROM (
|
||||||
|
SELECT rpad(_utf8 0xD0B1, 65536, _utf8 0xD0B2) AS data
|
||||||
|
) AS sub;
|
||||||
|
|
||||||
|
SELECT length(rpad(_utf8 0xD0B1, 65535, _utf8 0xD0B2)) AS data;
|
||||||
|
SELECT length(data) AS len FROM (
|
||||||
|
SELECT rpad(_utf8 0xD0B1, 65535, _utf8 0xD0B2) AS data
|
||||||
|
) AS sub;
|
||||||
|
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 36766) AS data) AS sub;
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 36767) AS data) AS sub;
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 36778) AS data) AS sub;
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 65535) AS data) AS sub;
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 65536) AS data) AS sub;
|
||||||
|
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 65537) AS data) AS sub;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 5.5 tests
|
--echo # End of 5.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1838,6 +1838,26 @@ SELECT OCTET_LENGTH(a),a FROM t1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-8402 Bug#77473 Bug#21317406 TRUNCATED DATA WITH SUBQUERY & UTF8
|
||||||
|
--echo #
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SELECT length(repeat(_utf8mb4 0xE29883, 21844)) AS data;
|
||||||
|
SELECT length(data) AS len
|
||||||
|
FROM ( SELECT repeat(_utf8mb4 0xE29883, 21844) AS data ) AS sub;
|
||||||
|
|
||||||
|
SELECT length(repeat(_utf8mb4 0xE29883, 21846)) AS data;
|
||||||
|
SELECT length(data) AS len
|
||||||
|
FROM ( SELECT repeat(_utf8mb4 0xE29883, 21846) AS data ) AS sub;
|
||||||
|
|
||||||
|
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 21844) AS data ) AS sub;
|
||||||
|
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 21845) AS data ) AS sub;
|
||||||
|
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 21846) AS data ) AS sub;
|
||||||
|
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 65535) AS data ) AS sub;
|
||||||
|
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 65536) AS data ) AS sub;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 5.5 tests
|
--echo # End of 5.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1854,10 +1854,9 @@ public:
|
|||||||
packlength= 4;
|
packlength= 4;
|
||||||
if (set_packlength)
|
if (set_packlength)
|
||||||
{
|
{
|
||||||
uint32 l_char_length= len_arg/cs->mbmaxlen;
|
packlength= len_arg <= 255 ? 1 :
|
||||||
packlength= l_char_length <= 255 ? 1 :
|
len_arg <= 65535 ? 2 :
|
||||||
l_char_length <= 65535 ? 2 :
|
len_arg <= 16777215 ? 3 : 4;
|
||||||
l_char_length <= 16777215 ? 3 : 4;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Field_blob(uint32 packlength_arg)
|
Field_blob(uint32 packlength_arg)
|
||||||
|
Reference in New Issue
Block a user