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

    • Steps to Reproduce:
      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

            Assignee:
            ccranfor Chris Cranford
            Reporter:
            ant0nk Anton Kondratev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: