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

DML statements longer than 4000 characters are incorrectly combined from V$LOGMNR_CONTENTS

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 1.4.1.Final
    • 1.4.0.Final
    • oracle-connector
    • None
    • False
    • False
    • Undefined
    • Hide

      1) include several DMLs longer 4000 characters into one block of transactions before commiting them;
      2) observe damaged DMLs in debezium log.

      Show
      1) include several DMLs longer 4000 characters into one block of transactions before commiting them; 2) observe damaged DMLs in debezium log.

    Description

      DML statements longer than 4000 characters are incorrectly combined when several updates have same SCN. As I see it the cause is:
      1) long queries are combined in getSqlRedo of RowMapper class;
      2) DML for getSqlRedo supplied by query from V$LOGMNR_CONTENTS composed by logMinerContentsQuery of SqlUtils class;
      3) Query from V$LOGMNR_CONTENTS contains sorting by only SCN, so when several updates have same SCN then order of parts of same queries could be confused and resulting DML became unparsable.
      Maybe V$LOGMNR_CONTENTS.SEQUENCE# should also be used to sort rows properly.

      Attachments

        Activity

          People

            ccranfor@redhat.com Chris Cranford
            ant0nk Anton Kondratev (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: