osheroff / mysql-binlog-connector-java

MySQL Binary Log connector
641 stars 161 forks source link

TransactionPayloadEventDataDeserializer may lost the CompatibilityMode settings from parent EventDeserializer #127

Open ZzzCrazyPig opened 9 months ago

ZzzCrazyPig commented 9 months ago

According to the implement code of TransactionPayloadEventDataDeserializer:

// Read and store events from decompressed byte array into input stream
        ArrayList<Event> decompressedEvents = new ArrayList<>();
        //  may lost the CompatibilityMode settings from parent EventDeserializer
        EventDeserializer transactionPayloadEventDeserializer = new EventDeserializer();
        ByteArrayInputStream destinationInputStream = new ByteArrayInputStream(dst);

        Event internalEvent = transactionPayloadEventDeserializer.nextEvent(destinationInputStream);
        while(internalEvent != null) {
            decompressedEvents.add(internalEvent);
            internalEvent = transactionPayloadEventDeserializer.nextEvent(destinationInputStream);
        }

we are sure that it create the default EventDeserializer to deserialize internal uncompressed event , it will lost the CompatibilityMode settings from parent EventDeserializer

ZzzCrazyPig commented 9 months ago

@osheroff Please confirm ?