Commit a35427f3 authored by Aleksey Midenkov's avatar Aleksey Midenkov

MDEV-21127 Assertion in key_text::key_text()

Unsigned type while RHS expression could be less than 0.
parent 25e2a556
...@@ -190,3 +190,12 @@ bor#oda CREATE TABLE `bor#oda` ( ...@@ -190,3 +190,12 @@ bor#oda CREATE TABLE `bor#oda` (
CONSTRAINT `bor#oda_ibfk_2` FOREIGN KEY (`b`) REFERENCES `bor#oda` (`id`) CONSTRAINT `bor#oda_ibfk_2` FOREIGN KEY (`b`) REFERENCES `bor#oda` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
DROP TABLE `bor#oda`; DROP TABLE `bor#oda`;
#
# MDEV-21127 Assertion `(size_t)(ptr - buf) < MAX_TEXT - 4' failed in key_text::key_text
#
CREATE TABLE t1 (
a012345678901234567890123456789012345678901 char(255),
b char(255),
FOREIGN KEY ( a012345678901234567890123456789012345678901, b ) REFERENCES tx (ax, bx)
) ENGINE=InnoDB;
ERROR HY000: Can't create table `test`.`t1` (errno: 150 "Foreign key constraint is incorrectly formed")
...@@ -226,3 +226,13 @@ ADD FOREIGN KEY (`b`) REFERENCES `bor#oda`(`id`); ...@@ -226,3 +226,13 @@ ADD FOREIGN KEY (`b`) REFERENCES `bor#oda`(`id`);
SHOW CREATE TABLE `bor#oda`; SHOW CREATE TABLE `bor#oda`;
DROP TABLE `bor#oda`; DROP TABLE `bor#oda`;
--echo #
--echo # MDEV-21127 Assertion `(size_t)(ptr - buf) < MAX_TEXT - 4' failed in key_text::key_text
--echo #
--error ER_CANT_CREATE_TABLE
CREATE TABLE t1 (
a012345678901234567890123456789012345678901 char(255),
b char(255),
FOREIGN KEY ( a012345678901234567890123456789012345678901, b ) REFERENCES tx (ax, bx)
) ENGINE=InnoDB;
...@@ -12208,9 +12208,9 @@ class key_text ...@@ -12208,9 +12208,9 @@ class key_text
/* 3 is etc continuation ("..."); /* 3 is etc continuation ("...");
2 is comma separator (", ") in case of next exists; 2 is comma separator (", ") in case of next exists;
1 is terminating ')' */ 1 is terminating ')' */
if ((size_t)(ptr - buf) < MAX_TEXT if (MAX_TEXT - (size_t)(ptr - buf)
- (it.peek() ? 3 + 2 + 1 : 3 + 1) >= (it.peek() ? 3 + 2 + 1 : 3 + 1)
- k->field_name.length) { + k->field_name.length) {
memcpy(ptr, k->field_name.str, memcpy(ptr, k->field_name.str,
k->field_name.length); k->field_name.length);
ptr += k->field_name.length; ptr += k->field_name.length;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment