-
Bug
-
Resolution: Done
-
Critical
-
0.9.5.Final
-
None
Follow these steps to reproduce the issue
- Register a connector with store.only.monitored.tables set to true
- Create a new table
- Add an index to the table
- restart the connector
The CREATE INDEX is stored in the database history but not CREATE TABLE which leads to
2019-05-03 08:08:03,797 WARN MySQL|my-table|task Ignoring unparseable statements '/* ApplicationName=PhpStorm 2019.1.1 */ create unique index migration_test_mgb_no_uindex on migration_test (mgb_no)' stored in database history: {} [io.debezium.relational.history.KafkaDatabaseHistory] io.debezium.text.ParsingException: Trying to create index on non existing table mydb.migration_test.Query: create unique index migration_test_mgb_no_uindex on migration_test (mgb_no) at io.debezium.connector.mysql.antlr.listener.CreateUniqueIndexParserListener.enterCreateIndex(CreateUniqueIndexParserListener.java:45) at io.debezium.ddl.parser.mysql.generated.MySqlParser$CreateIndexContext.enterRule(MySqlParser.java:2903) at io.debezium.antlr.ProxyParseTreeListenerUtil.delegateEnterRule(ProxyParseTreeListenerUtil.java:46) at io.debezium.connector.mysql.antlr.listener.MySqlAntlrDdlParserListener.enterEveryRule(MySqlAntlrDdlParserListener.java:89) at org.antlr.v4.runtime.tree.ParseTreeWalker.enterRule(ParseTreeWalker.java:41) at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:25) at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28) at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28) at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28) at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28) at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:85) at io.debezium.relational.history.AbstractDatabaseHistory.lambda$recover$1(AbstractDatabaseHistory.java:104) at io.debezium.relational.history.KafkaDatabaseHistory.recoverRecords(KafkaDatabaseHistory.java:238) at io.debezium.relational.history.AbstractDatabaseHistory.recover(AbstractDatabaseHistory.java:73) at io.debezium.connector.mysql.MySqlSchema.loadHistory(MySqlSchema.java:251) at io.debezium.connector.mysql.MySqlTaskContext.loadHistory(MySqlTaskContext.java:165) at io.debezium.connector.mysql.MySqlConnectorTask.start(MySqlConnectorTask.java:105) at io.debezium.connector.common.BaseSourceTask.start(BaseSourceTask.java:47) at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:198) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:219) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
The exception should be thrown only if all DDLs are stored, otherwise a WARN should be logged.