Skip to content

Malformed output when parsing QMI on compressed table #323

@jxandercrawford

Description

@jxandercrawford

Open Log Replicator will fail to parse records in certain circumstances when a QMI operation is done on a compressed table. In observed cases the application will throw a numeric parsing error. See example below.

2026-04-09 07:14:47 ERROR 50009 error parsing numeric value at offset: 123456

This behavior causes application instability and incorrect data to be written to the change stream. Behavior indicates the application is unable to detect that the redo vector is compressed. THe compressed change is parsed like a regular vector causing the issue parsing.

Correct behavior would either output the record as compressed or output the record correctly.


This issue was observed and replicated using the below SQL on Oracle Database 19c with Open Log Replicator v1.9.0.

-- Create compressed table
CREATE TABLE OLRUSER.COMPRESS_TEST (
  id NUMBER,
  name VARCHAR2(50),
  val NUMBER,
  status VARCHAR2(10)
) ROW STORE COMPRESS ADVANCED;

-- Seed data into table
INSERT INTO OLRUSER.COMPRESS_TEST
SELECT 
  level,
  'NAME_' || MOD(level, 10),
  MOD(level, 100),
  'ACTIVE'
FROM dual
CONNECT BY level <= 500;

COMMIT;

-- ISSUE STEMS FROM THIS OPERATION
-- Bulk insert into table
INSERT INTO OLRUSER.COMPRESS_TEST
SELECT 
  900 + level, 
  'TEST', 
  0, 
  'ACTIVE'
FROM dual
CONNECT BY level <= 5;

COMMIT;

This produces a QMI redo with a compressed change vector.


Please let me know if any more details are needed for replication. Love the application!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions