Commit 0a892c46 authored by Sergey Glukhov's avatar Sergey Glukhov

Bug#39793 Foreign keys not constructed when column has a '#' in a comment or default value

Internal InnoDN FK parser does not recognize '\'' as quotation symbol.
Suggested fix is to add '\'' symbol check for quotation condition
(dict_strip_comments() function).


innobase/dict/dict0dict.c:
  Internal InnoDN FK parser does not recognize '\'' as quotation symbol.
  Suggested fix is to add '\'' symbol check for quotation condition
  (dict_strip_comments() function).
mysql-test/r/innodb_mysql.result:
  test result
mysql-test/t/innodb_mysql.test:
  test case
parent a7294532
...@@ -2829,7 +2829,7 @@ dict_strip_comments( ...@@ -2829,7 +2829,7 @@ dict_strip_comments(
} else if (quote) { } else if (quote) {
/* Within quotes: do not look for /* Within quotes: do not look for
starting quotes or comments. */ starting quotes or comments. */
} else if (*sptr == '"' || *sptr == '`') { } else if (*sptr == '"' || *sptr == '`' || *sptr == '\'') {
/* Starting quote: remember the quote character. */ /* Starting quote: remember the quote character. */
quote = *sptr; quote = *sptr;
} else if (*sptr == '#' } else if (*sptr == '#'
......
...@@ -1291,4 +1291,16 @@ SAVEPOINT s4; ...@@ -1291,4 +1291,16 @@ SAVEPOINT s4;
ROLLBACK; ROLLBACK;
ROLLBACK TO SAVEPOINT s4; ROLLBACK TO SAVEPOINT s4;
ERROR 42000: SAVEPOINT s4 does not exist ERROR 42000: SAVEPOINT s4 does not exist
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY COMMENT 'My ID#', f2 INTEGER DEFAULT NULL, f3 CHAR(10) DEFAULT 'My ID#', CONSTRAINT f2_ref FOREIGN KEY (f2) REFERENCES t1 (f1)) ENGINE=INNODB;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`f1` int(11) NOT NULL COMMENT 'My ID#',
`f2` int(11) default NULL,
`f3` char(10) default 'My ID#',
PRIMARY KEY (`f1`),
KEY `f2_ref` (`f2`),
CONSTRAINT `f2_ref` FOREIGN KEY (`f2`) REFERENCES `t1` (`f1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t1;
End of 5.0 tests End of 5.0 tests
...@@ -1054,4 +1054,13 @@ ROLLBACK; ...@@ -1054,4 +1054,13 @@ ROLLBACK;
--error 1305 --error 1305
ROLLBACK TO SAVEPOINT s4; ROLLBACK TO SAVEPOINT s4;
#
# Bug#39793 Foreign keys not constructed when column has a '#' in a comment or default value
#
#This statement should be written on a single line for proper testing
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY COMMENT 'My ID#', f2 INTEGER DEFAULT NULL, f3 CHAR(10) DEFAULT 'My ID#', CONSTRAINT f2_ref FOREIGN KEY (f2) REFERENCES t1 (f1)) ENGINE=INNODB;
SHOW CREATE TABLE t1;
DROP TABLE t1;
--echo End of 5.0 tests --echo End of 5.0 tests
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