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

SIGNAL statement is not recognized by DDL parser

XMLWordPrintable

      Debezium gets in a failed state when the following statement is executed:

      DELIMITER ;;
      CREATE DEFINER=`sparkmin`@`%` PROCEDURE `connectionPoolTest`()
      BEGIN
        DECLARE readOnly INT;
        SELECT @@innodb_read_only INTO readOnly;
        IF (readOnly = 1) THEN
          SIGNAL SQLSTATE '06660'
            SET MESSAGE_TEXT = 'Database is in read-only mode!';
        end if;
        SELECT @@innodb_read_only;
      END;;
      DELIMITER ;
      

      The complete error that we have in our logs:

      Restarted the failed task 0 for connector Connector[name=dev-platform57-1,connector=ConnectorState[state=RUNNING],tasks=[Task[id=0,state=FAILED,trace=org.apache.kafka.connect.errors.ConnectException: no viable alternative at input 'CREATE DEFINER=`dev_proact_rw`@`10.120.%` PROCEDURE `connectionPoolTest`()
      BEGIN
        DECLARE readOnly INT;
        SELECT @@innodb_read_only INTO readOnly;
        IF (readOnly = 1) THEN
          SIGNAL SQLSTATE'
      	at io.debezium.connector.mysql.AbstractReader.wrap(AbstractReader.java:230)
      	at io.debezium.connector.mysql.AbstractReader.failed(AbstractReader.java:207)
      	at io.debezium.connector.mysql.BinlogReader.handleEvent(BinlogReader.java:536)
      	at com.github.shyiko.mysql.binlog.BinaryLogClient.notifyEventListeners(BinaryLogClient.java:1095)
      	at com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:943)
      	at com.github.shyiko.mysql.binlog.BinaryLogClient.connect(BinaryLogClient.java:580)
      	at com.github.shyiko.mysql.binlog.BinaryLogClient$7.run(BinaryLogClient.java:825)
      	at java.lang.Thread.run(Thread.java:748)
      Caused by: io.debezium.text.ParsingException: no viable alternative at input 'CREATE DEFINER=`dev_proact_rw`@`10.120.%` PROCEDURE `connectionPoolTest`()
      BEGIN
        DECLARE readOnly INT;
        SELECT @@innodb_read_only INTO readOnly;
        IF (readOnly = 1) THEN
          SIGNAL SQLSTATE'
      	at io.debezium.antlr.ParsingErrorListener.syntaxError(ParsingErrorListener.java:40)
      	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.sqlStatements(MySqlParser.java:1094)
      	at io.debezium.ddl.parser.mysql.generated.MySqlParser.root(MySqlParser.java:828)
      	at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:68)
      	at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:41)
      	at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:80)
      	at io.debezium.connector.mysql.MySqlSchema.applyDdl(MySqlSchema.java:306)
      	at io.debezium.connector.mysql.BinlogReader.handleQueryEvent(BinlogReader.java:729)
      	at io.debezium.connector.mysql.BinlogReader.handleEvent(BinlogReader.java:519)
      	... 5 more
      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.execATN(ParserATNSimulator.java:467)
      	at org.antlr.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:393)
      	at io.debezium.ddl.parser.mysql.generated.MySqlParser.sqlStatements(MySqlParser.java:902)
      	... 12 more
      ]]]
      

              jpechane Jiri Pechanec
              bdeneuter@gmail.com bart de neuter (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: