-
Feature Request
-
Resolution: Done
-
Major
-
None
-
None
parseCreateTable was not able to parse CREATE DDL with Partition...ENGINE=InnoDB
Example:
Create Table: CREATE TABLE `members` (
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE ( YEAR(dob))
(PARTITION n0 VALUES LESS THAN (1970) {color:red}*ENGINE = InnoDB*{color},
PARTITION n1 VALUES LESS THAN (1980) *{color:red}ENGINE = InnoDB{color}*,
)
Error Stack:
[2018-03-01 19:48:34,656] INFO Writes to MySQL tables prevented for a total of 00:00:00.572 (io.debezium.connector.mysql.SnapshotReader:634) [2018-03-01 19:48:34,656] ERROR Failed due to error: Aborting snapshot due to error when last running 'UNLOCK TABLES': Expecting ')' at line 63, column 51 but found 'ENGINE': LESS THAN (732677) ===>> ENGINE = InnoDB, PA (io.debezium.connector.mysql.SnapshotReader:157) org.apache.kafka.connect.errors.ConnectException: Expecting ')' at line 63, column 51 but found 'ENGINE': LESS THAN (732677) ===>> ENGINE = InnoDB, PA at io.debezium.connector.mysql.AbstractReader.wrap(AbstractReader.java:178) at io.debezium.connector.mysql.AbstractReader.failed(AbstractReader.java:156) at io.debezium.connector.mysql.SnapshotReader.execute(SnapshotReader.java:664) at java.lang.Thread.run(Thread.java:745) Caused by: io.debezium.text.ParsingException: Expecting ')' at line 63, column 51 but found 'ENGINE': LESS THAN (732677) ===>> ENGINE = InnoDB, PA at io.debezium.text.TokenStream.consume(TokenStream.java:706) at io.debezium.connector.mysql.MySqlDdlParser.parsePartitionOptions(MySqlDdlParser.java:499) at io.debezium.connector.mysql.MySqlDdlParser.parseCreateTable(MySqlDdlParser.java:384) at io.debezium.connector.mysql.MySqlDdlParser.parseCreate(MySqlDdlParser.java:282) at io.debezium.connector.mysql.MySqlDdlParser.parseNextStatement(MySqlDdlParser.java:153) at io.debezium.relational.ddl.DdlParser.parse(DdlParser.java:286) at io.debezium.relational.ddl.DdlParser.parse(DdlParser.java:267) at io.debezium.connector.mysql.MySqlSchema.applyDdl(MySqlSchema.java:288) at io.debezium.connector.mysql.SnapshotReader.lambda$execute$9(SnapshotReader.java:421) at io.debezium.jdbc.JdbcConnection.query(JdbcConnection.java:389) at io.debezium.jdbc.JdbcConnection.query(JdbcConnection.java:344) at io.debezium.connector.mysql.SnapshotReader.execute(SnapshotReader.java:419) ... 1 more [2018-03-01 19:48:35,061] ERROR Task Spinalqtest-0 threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:148) org.apache.kafka.connect.errors.ConnectException: Expecting ')' at line 63, column 51 but found 'ENGINE': LESS THAN (732677) ===>> ENGINE = InnoDB, PA at io.debezium.connector.mysql.AbstractReader.wrap(AbstractReader.java:178) at io.debezium.connector.mysql.AbstractReader.failed(AbstractReader.java:156) at io.debezium.connector.mysql.SnapshotReader.execute(SnapshotReader.java:664) at java.lang.Thread.run(Thread.java:745) Caused by: io.debezium.text.ParsingException: Expecting ')' at line 63, column 51 but found 'ENGINE': LESS THAN (732677) ===>> ENGINE = InnoDB, PA at io.debezium.text.TokenStream.consume(TokenStream.java:706) at io.debezium.connector.mysql.MySqlDdlParser.parsePartitionOptions(MySqlDdlParser.java:499) at io.debezium.connector.mysql.MySqlDdlParser.parseCreateTable(MySqlDdlParser.java:384) at io.debezium.connector.mysql.MySqlDdlParser.parseCreate(MySqlDdlParser.java:282) at io.debezium.connector.mysql.MySqlDdlParser.parseNextStatement(MySqlDdlParser.java:153) at io.debezium.relational.ddl.DdlParser.parse(DdlParser.java:286) at io.debezium.relational.ddl.DdlParser.parse(DdlParser.java:267) at io.debezium.connector.mysql.MySqlSchema.applyDdl(MySqlSchema.java:288) at io.debezium.connector.mysql.SnapshotReader.lambda$execute$9(SnapshotReader.java:421) at io.debezium.jdbc.JdbcConnection.query(JdbcConnection.java:389) at io.debezium.jdbc.JdbcConnection.query(JdbcConnection.java:344) at io.debezium.connector.mysql.SnapshotReader.execute(SnapshotReader.java:419)