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

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

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major 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.

      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.

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

                Created:
                Updated:
                Resolved: