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

Support CREATE TABLE statements with PARTITION ... ENGINE=InnoDB

    XMLWordPrintable

Details

    • Feature Request
    • Resolution: Done
    • Major
    • 0.7.4
    • None
    • mysql-connector
    • None

    Description

      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)
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            satyajit.v Satyajit Vegesna (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: