Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-3717

Error parsing query, even with database.history.skip.unparseable.ddl

    XMLWordPrintable

Details

    Description

      Since upgrading to 1.6.0 of the MySQL connector, we're receiving the following error, and the connector is stopping, even with database.history.skip.unparseable.ddl enabled.

      Log:  

      {{[2021-07-07 15:22:51,461] ERROR Unexpected exception while processing record 'ConsumerRecord(topic = mycompany_mobile.schema-changes, partition = 0, leaderEpoch = 4, offset = 4041, CreateTime = 1625171948358, serialized key size = -1, serialized value size = 989, headers = RecordHeaders(headers = [], isReadOnly = false), key = null, value = \{[2021-07-07 15:22:51,461] ERROR Unexpected exception while processing record 'ConsumerRecord(topic = mycompany_mobile.schema-changes, partition = 0, leaderEpoch = 4, offset = 4041, CreateTime = 1625171948358, serialized key size = -1, serialized value size = 989, headers = RecordHeaders(headers = [], isReadOnly = false), key = null, value = {  "source" : {    "server" : "mycompany_mobile"  },  "position" : \{    "transaction_id" : null,    "ts_sec" : 1625171948,    "file" : "mysql-bin-changelog.093103",    "pos" : 32449,    "gtids" : "6a07e646-714b-11eb-b649-0a28b9d97b11:1-906072",    "server_id" : 546533895  },  "databaseName" : "appraisal""ddl" : "CREATE DEFINER=`myUser`@`%` PROCEDURE `tableAFetchCount`(\n\n        in p_uniqueID int\n        \n\n)\nBEGIN\n\n\tselect count(*) into @propCount from tableA  where uniqueID = p_uniqueID;\n    select count(*) into @completeCount from tableA  where uniqueID = p_uniqueID and isComplete = 1;\n    \n   select  uniqueID,\n   @propCount as propCount, @completeCount as completeCount, @completeCount/ @propCount * 100 as completePct\n  \n   \n   where uniqueID = p_uniqueID;\n\n\nEND""tableChanges" : [ ]})' (io.debezium.relational.history.KafkaDatabaseHistory:319)io.debezium.text.ParsingException: DDL statement couldn't be parsed. Please open a Jira issue with the statement 'CREATE DEFINER=`myUser`@`%` PROCEDURE `tableAFetchCount`(        in p_uniqueID int}}
      {{)BEGIN select count(*) into @propCount from tableA  where uniqueID = p_uniqueID;    select count(*) into @completeCount from tableA  where uniqueID = p_uniqueID and isComplete = 1;}}
      {{   select  uniqueID,   @propCount as propCount, @completeCount as completeCount, @completeCount/ @propCount * 100 as completePct}}{{   where uniqueID = p_uniqueID;END'no viable alternative at input 'select  uniqueID,\n   @propCount as propCount, @completeCount as completeCount, @completeCount/ @propCount * 100 as completePct\n  \n   \n   where' at io.debezium.antlr.ParsingErrorListener.syntaxError(ParsingErrorListener.java:43) at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41) at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:544) at org.antlr.v4.runtime.DefaultErrorStrategy.reportNoViableAlternative(DefaultErrorStrategy.java:310) at org.antlr.v4.runtime.DefaultErrorStrategy.reportError(DefaultErrorStrategy.java:136) at io.debezium.ddl.parser.mysql.generated.MySqlParser.querySpecification(MySqlParser.java:29764) at io.debezium.ddl.parser.mysql.generated.MySqlParser.selectStatement(MySqlParser.java:25248) at io.debezium.ddl.parser.mysql.generated.MySqlParser.dmlStatement(MySqlParser.java:1782) at io.debezium.ddl.parser.mysql.generated.MySqlParser.sqlStatement(MySqlParser.java:1253) at io.debezium.ddl.parser.mysql.generated.MySqlParser.sqlStatements(MySqlParser.java:1154) at io.debezium.ddl.parser.mysql.generated.MySqlParser.root(MySqlParser.java:918) at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:72) at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:45) at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:82) at io.debezium.relational.history.AbstractDatabaseHistory.lambda$recover$1(AbstractDatabaseHistory.java:135) at io.debezium.relational.history.KafkaDatabaseHistory.recoverRecords(KafkaDatabaseHistory.java:307) at io.debezium.relational.history.AbstractDatabaseHistory.recover(AbstractDatabaseHistory.java:102) at io.debezium.relational.HistorizedRelationalDatabaseSchema.recover(HistorizedRelationalDatabaseSchema.java:49) at io.debezium.connector.mysql.MySqlConnectorTask.validateAndLoadDatabaseHistory(MySqlConnectorTask.java:331) at io.debezium.connector.mysql.MySqlConnectorTask.start(MySqlConnectorTask.java:103) at io.debezium.connector.common.BaseSourceTask.start(BaseSourceTask.java:130) at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:225) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:182) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:231) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)Caused by: org.antlr.v4.runtime.NoViableAltException at org.antlr.v4.runtime.atn.ParserATNSimulator.noViableAlt(ParserATNSimulator.java:2026) at org.antlr.v4.runtime.atn.ParserATNSimulator.execATNWithFullContext(ParserATNSimulator.java:675) at org.antlr.v4.runtime.atn.ParserATNSimulator.execATN(ParserATNSimulator.java:505) at org.antlr.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:393) at io.debezium.ddl.parser.mysql.generated.MySqlParser.querySpecification(MySqlParser.java:29629) ... 23 moreio.debezium.text.ParsingException: DDL statement couldn't be parsed. Please open a Jira issue with the statement 'CREATE DEFINER=`myUser`@`%` PROCEDURE `tableAFetchCount`(        in p_uniqueID int}}
      {{)BEGIN select count(*) into @propCount from tableA  where uniqueID = p_uniqueID;    select count(*) into @completeCount from tableA  where uniqueID = p_uniqueID and isComplete = 1;}}
      {{   select  uniqueID,   @propCount as propCount, @completeCount as completeCount, @completeCount/ @propCount * 100 as completePct}}{{   where uniqueID = p_uniqueID;END'extraneous input 'END' expecting \{<EOF>, '--'} at io.debezium.antlr.ParsingErrorListener.syntaxError(ParsingErrorListener.java:43) at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41) at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:544) at org.antlr.v4.runtime.DefaultErrorStrategy.reportUnwantedToken(DefaultErrorStrategy.java:377) at org.antlr.v4.runtime.DefaultErrorStrategy.singleTokenDeletion(DefaultErrorStrategy.java:548) at org.antlr.v4.runtime.DefaultErrorStrategy.sync(DefaultErrorStrategy.java:266) at io.debezium.ddl.parser.mysql.generated.MySqlParser.root(MySqlParser.java:923) at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:72) at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:45) at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:82) at io.debezium.relational.history.AbstractDatabaseHistory.lambda$recover$1(AbstractDatabaseHistory.java:135) at io.debezium.relational.history.KafkaDatabaseHistory.recoverRecords(KafkaDatabaseHistory.java:307) at io.debezium.relational.history.AbstractDatabaseHistory.recover(AbstractDatabaseHistory.java:102) at io.debezium.relational.HistorizedRelationalDatabaseSchema.recover(HistorizedRelationalDatabaseSchema.java:49) at io.debezium.connector.mysql.MySqlConnectorTask.validateAndLoadDatabaseHistory(MySqlConnectorTask.java:331) at io.debezium.connector.mysql.MySqlConnectorTask.start(MySqlConnectorTask.java:103) at io.debezium.connector.common.BaseSourceTask.start(BaseSourceTask.java:130) at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:225) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:182) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:231) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)[2021-07-07 15:22:51,468] ERROR WorkerSourceTask\{id=source-mycompany-mobile3-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:184)io.debezium.text.ParsingException: DDL statement couldn't be parsed. Please open a Jira issue with the statement 'CREATE DEFINER=`myUser`@`%` PROCEDURE `tableAFetchCount`(        in p_uniqueID int}}
      {{)BEGIN select count(*) into @propCount from tableA  where uniqueID = p_uniqueID;    select count(*) into @completeCount from tableA  where uniqueID = p_uniqueID and isComplete = 1;}}
      {{   select  uniqueID,   @propCount as propCount, @completeCount as completeCount, @completeCount/ @propCount * 100 as completePct}}{{   where uniqueID = p_uniqueID;END'no viable alternative at input 'select  uniqueID,\n   @propCount as propCount, @completeCount as completeCount, @completeCount/ @propCount * 100 as completePct\n  \n   \n   where' at io.debezium.antlr.ParsingErrorListener.syntaxError(ParsingErrorListener.java:43) at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41) at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:544) at org.antlr.v4.runtime.DefaultErrorStrategy.reportNoViableAlternative(DefaultErrorStrategy.java:310) at org.antlr.v4.runtime.DefaultErrorStrategy.reportError(DefaultErrorStrategy.java:136) at io.debezium.ddl.parser.mysql.generated.MySqlParser.querySpecification(MySqlParser.java:29764) at io.debezium.ddl.parser.mysql.generated.MySqlParser.selectStatement(MySqlParser.java:25248) at io.debezium.ddl.parser.mysql.generated.MySqlParser.dmlStatement(MySqlParser.java:1782) at io.debezium.ddl.parser.mysql.generated.MySqlParser.sqlStatement(MySqlParser.java:1253) at io.debezium.ddl.parser.mysql.generated.MySqlParser.sqlStatements(MySqlParser.java:1154) at io.debezium.ddl.parser.mysql.generated.MySqlParser.root(MySqlParser.java:918) at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:72) at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:45) at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:82) at io.debezium.relational.history.AbstractDatabaseHistory.lambda$recover$1(AbstractDatabaseHistory.java:135) at io.debezium.relational.history.KafkaDatabaseHistory.recoverRecords(KafkaDatabaseHistory.java:307) at io.debezium.relational.history.AbstractDatabaseHistory.recover(AbstractDatabaseHistory.java:102) at io.debezium.relational.HistorizedRelationalDatabaseSchema.recover(HistorizedRelationalDatabaseSchema.java:49) at io.debezium.connector.mysql.MySqlConnectorTask.validateAndLoadDatabaseHistory(MySqlConnectorTask.java:331) at io.debezium.connector.mysql.MySqlConnectorTask.start(MySqlConnectorTask.java:103) at io.debezium.connector.common.BaseSourceTask.start(BaseSourceTask.java:130) at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:225) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:182) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:231) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)Caused by: org.antlr.v4.runtime.NoViableAltException at org.antlr.v4.runtime.atn.ParserATNSimulator.noViableAlt(ParserATNSimulator.java:2026) at org.antlr.v4.runtime.atn.ParserATNSimulator.execATNWithFullContext(ParserATNSimulator.java:675) at org.antlr.v4.runtime.atn.ParserATNSimulator.execATN(ParserATNSimulator.java:505) at org.antlr.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:393) at io.debezium.ddl.parser.mysql.generated.MySqlParser.querySpecification(MySqlParser.java:29629) ... 23 moreio.debezium.text.ParsingException: DDL statement couldn't be parsed. Please open a Jira issue with the statement 'CREATE DEFINER=`myUser`@`%` PROCEDURE `tableAFetchCount`(        in p_uniqueID int}}
      {{)BEGIN select count(*) into @propCount from tableA  where uniqueID = p_uniqueID;    select count(*) into @completeCount from tableA  where uniqueID = p_uniqueID and isComplete = 1;}}
      {{   select  uniqueID,   @propCount as propCount, @completeCount as completeCount, @completeCount/ @propCount * 100 as completePct}}{{   where uniqueID = p_uniqueID;END'extraneous input 'END' expecting \{<EOF>, '--'} at io.debezium.antlr.ParsingErrorListener.syntaxError(ParsingErrorListener.java:43) at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41) at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:544) at org.antlr.v4.runtime.DefaultErrorStrategy.reportUnwantedToken(DefaultErrorStrategy.java:377) at org.antlr.v4.runtime.DefaultErrorStrategy.singleTokenDeletion(DefaultErrorStrategy.java:548) at org.antlr.v4.runtime.DefaultErrorStrategy.sync(DefaultErrorStrategy.java:266) at io.debezium.ddl.parser.mysql.generated.MySqlParser.root(MySqlParser.java:923) at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:72) at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:45) at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:82) at io.debezium.relational.history.AbstractDatabaseHistory.lambda$recover$1(AbstractDatabaseHistory.java:135) at io.debezium.relational.history.KafkaDatabaseHistory.recoverRecords(KafkaDatabaseHistory.java:307) at io.debezium.relational.history.AbstractDatabaseHistory.recover(AbstractDatabaseHistory.java:102) at io.debezium.relational.HistorizedRelationalDatabaseSchema.recover(HistorizedRelationalDatabaseSchema.java:49) at io.debezium.connector.mysql.MySqlConnectorTask.validateAndLoadDatabaseHistory(MySqlConnectorTask.java:331) at io.debezium.connector.mysql.MySqlConnectorTask.start(MySqlConnectorTask.java:103) at io.debezium.connector.common.BaseSourceTask.start(BaseSourceTask.java:130) at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:225) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:182) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:231) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)}}
      
       
      
      {{Config:}}
      
      {{{}}
      {{ "connector.class": "io.debezium.connector.mysql.MySqlConnector",}}
      {{ "database.history.consumer.sasl.jaas.config": "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"user\" password=\"pass\";",}}
      {{ "database.history.consumer.sasl.mechanism": "SCRAM-SHA-512",}}
      {{ "database.history.consumer.security.protocol": "SASL_SSL",}}
      {{ "database.history.kafka.bootstrap.servers": "kafka-server:9096",}}
      {{ "database.history.kafka.topic": "mycompany_mobile.schema-changes",}}
      {{ "database.history.producer.buffer.memory": "10485760",}}
      {{ "database.history.producer.sasl.jaas.config": "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"user\" password=\"pass\";",}}
      {{ "database.history.producer.sasl.mechanism": "SCRAM-SHA-512",}}
      {{ "database.history.producer.security.protocol": "SASL_SSL",}}
      {{ "database.history.skip.unparseable.ddl": "true",}}
      {{ "database.hostname": "dbserver.mycompany.com",}}
      {{ "database.include.list": "mydatabase",}}
      {{ "database.password": "pass",}}
      {{ "database.port": "3306",}}
      {{ "database.server.id": "1010",}}
      {{ "database.server.name": "mycompany_mobile",}}
      {{ "database.user": "kafkauser",}}
      {{ "internal.key.converter": "org.apache.kafka.connect.json.JsonConverter",}}
      {{ "internal.value.converter": "org.apache.kafka.connect.json.JsonConverter",}}
      {{ "key.converter": "io.confluent.connect.avro.AvroConverter",}}
      {{ "key.converter.schema.registry.url": "http://schema-registry.mycompany.com",}}
      {{ "name": "source-mycompany-mobile3",}}
      {{ "snapshot.mode": "schema_only",}}
      {{ "table.exclude.list": ".*[Bb]ackup.*,.*_[0-9]\{6\\,8}",}}
      {{ "tasks.max": "1",}}
      {{ "topic.creation.default.cleanup.policy": "delete",}}
      {{ "topic.creation.default.compression.type": "lz4",}}
      {{ "topic.creation.default.partitions": "10",}}
      {{ "topic.creation.default.replication.factor": "2",}}
      {{ "topic.creation.default.retention.bytes": "-1",}}
      {{ "topic.creation.default.retention.ms": "2592000000",}}
      {{ "topic.creation.groups": "schema",}}
      {{ "topic.creation.schema.include": "mycompany_mobile.schema-changes",}}
      {{ "topic.creation.schema.partitions": "1",}}
      {{ "value.converter": "io.confluent.connect.avro.AvroConverter",}}
      {{ "value.converter.schema.registry.url": "http://schema-registry.mycompany.com"}}
      {{}}}
      

      Attachments

        Activity

          People

            anmohant Anisha Mohanty
            rroden12 Roger Roden (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: