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

Oracle not correctly parsing default values

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • 3.3-plan
    • 2.6.3.Final
    • oracle-connector
    • None
    • False
    • Hide

      None

      Show
      None
    • False
    • Important

      In order to make your issue reports as actionable as possible, please provide the following information, depending on the issue type.

      Bug report

      For bug reports, provide this information, please:

      What Debezium connector do you use and what version?

      Debezium Server 2.6.1

      What is the connector configuration?

      Using log mining strategy = hybrid

      What is the captured database version and mode of deployment?

      Oracle 19.3c

      What behavior do you expect?

      Debezium to correctly delineate NULL values and setting the default values appropriately.

      What behavior do you see?

      It's creating an inconsistency between the database and the CDC event being emitted.

      How to reproduce the issue using our tutorial deployment?

      CREATE TABLE MYSCHEMA.ROBIN
      (
          id          NUMBER(4) GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH 101) NOT NULL PRIMARY KEY,
          int_test int default 0,
          int_not_null int
      );

      ALTER TABLE MYSCHEMA.ROBIN ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

      INSERT INTO MYSCHEMA.ROBIN (int_test, int_not_null) VALUES (NULL, 1);
      INSERT INTO MYSCHEMA.ROBIN (int_test, int_not_null) VALUES (2, 1);

       
      SQL> SELECT * FROM MYSCHEMA.ROBIN;
       
      ID   INT_TEST INT_NOT_NULL
      ---------- ---------- ------------
             121 1
             122     2 1
       

       
      CDC messages:
       
      {"schema":{"type":"struct","fields":[{"type":"struct","fields":[

      {"type":"int16","optional":false,"field":"ID"}

      ,{"type":"double","optional":true,"default":0.0,"field":"INT_TEST"},{"type":"double","optional":true,"field":"INT_NOT_NULL"}],"optional":true,"name":"2d46a2b7-0465-452d-a684-cb64dfce5175.3d351180-59ea-4ada-92bd-cfe90d9b9a5b.MYSCHEMA.Value","field":"before"},{"type":"struct","fields":[

      {"type":"int16","optional":false,"field":"ID"}

      ,{"type":"double","optional":true,"default":0.0,"field":"INT_TEST"},{"type":"double","optional":true,"field":"INT_NOT_NULL"}],"optional":true,"name":"2d46a2b7-0465-452d-a684-cb64dfce5175.3d351180-59ea-4ada-92bd-cfe90d9b9a5b.MYSCHEMA.Value","field":"after"},{"type":"struct","fields":[

      {"type":"string","optional":false,"field":"version"}

      ,{"type":"string","optional":false,"field":"connector"},{"type":"string","optional":false,"field":"name"},{"type":"int64","optional":false,"field":"ts_ms"},{"type":"string","optional":true,"name":"io.debezium.data.Enum","version":1,"parameters":

      {"allowed":"true,last,false,incremental"}

      ,"default":"false","field":"snapshot"},{"type":"string","optional":false,"field":"db"},{"type":"string","optional":true,"field":"sequence"},{"type":"int64","optional":false,"field":"ts_us"},{"type":"int64","optional":false,"field":"ts_ns"},{"type":"string","optional":false,"field":"schema"},{"type":"string","optional":false,"field":"table"},{"type":"string","optional":true,"field":"txId"},{"type":"string","optional":true,"field":"scn"},{"type":"string","optional":true,"field":"commit_scn"},{"type":"string","optional":true,"field":"lcr_position"},{"type":"string","optional":true,"field":"rs_id"},{"type":"int64","optional":true,"field":"ssn"},{"type":"int32","optional":true,"field":"redo_thread"},{"type":"string","optional":true,"field":"user_name"},{"type":"string","optional":true,"field":"redo_sql"}],"optional":false,"name":"io.debezium.connector.oracle.Source","field":"source"},{"type":"string","optional":false,"field":"op"},{"type":"int64","optional":true,"field":"ts_ms"},{"type":"int64","optional":true,"field":"ts_us"},{"type":"int64","optional":true,"field":"ts_ns"},{"type":"struct","fields":[

      {"type":"string","optional":false,"field":"id"}

      ,{"type":"int64","optional":false,"field":"total_order"},{"type":"int64","optional":false,"field":"data_collection_order"}],"optional":true,"name":"event.block","version":1,"field":"transaction"}],"optional":false,"name":"2d46a2b7-0465-452d-a684-cb64dfce5175.3d351180-59ea-4ada-92bd-cfe90d9b9a5b.MYSCHEMA.Envelope","version":2},"payload":{"before":null,"after":

      {"ID":121,"INT_TEST":0.0,"INT_NOT_NULL":1.0}

      ,"source":{"version":"2.6.1.Final","connector":"oracle","name":"2d46a2b7-0465-452d-a684-cb64dfce5175.3d351180-59ea-4ada-92bd-cfe90d9b9a5b","ts_ms":1749663562000,"snapshot":"false","db":"ORCLPDB1","sequence":null,"ts_us":1749663562000000,"ts_ns":1749663562000000000,"schema":"MYSCHEMA","table":"ROBIN","txId":"0a00210071090000","scn":"6809366","commit_scn":"6809368","lcr_position":null,"rs_id":"0x000081.00001de4.0010","ssn":0,"redo_thread":1,"user_name":"SYSTEM","redo_sql":null},"op":"c","ts_ms":1749663563677,"ts_us":1749663563677922,"ts_ns":1749663563677922000,"transaction":null}}
      {"schema":{"type":"struct","fields":[{"type":"struct","fields":[

      {"type":"int16","optional":false,"field":"ID"}

      ,{"type":"double","optional":true,"default":0.0,"field":"INT_TEST"},{"type":"double","optional":true,"field":"INT_NOT_NULL"}],"optional":true,"name":"2d46a2b7-0465-452d-a684-cb64dfce5175.3d351180-59ea-4ada-92bd-cfe90d9b9a5b.MYSCHEMA.Value","field":"before"},{"type":"struct","fields":[

      {"type":"int16","optional":false,"field":"ID"}

      ,{"type":"double","optional":true,"default":0.0,"field":"INT_TEST"},{"type":"double","optional":true,"field":"INT_NOT_NULL"}],"optional":true,"name":"2d46a2b7-0465-452d-a684-cb64dfce5175.3d351180-59ea-4ada-92bd-cfe90d9b9a5b.MYSCHEMA.Value","field":"after"},{"type":"struct","fields":[

      {"type":"string","optional":false,"field":"version"}

      ,{"type":"string","optional":false,"field":"connector"},{"type":"string","optional":false,"field":"name"},{"type":"int64","optional":false,"field":"ts_ms"},{"type":"string","optional":true,"name":"io.debezium.data.Enum","version":1,"parameters":

      {"allowed":"true,last,false,incremental"}

      ,"default":"false","field":"snapshot"},{"type":"string","optional":false,"field":"db"},{"type":"string","optional":true,"field":"sequence"},{"type":"int64","optional":false,"field":"ts_us"},{"type":"int64","optional":false,"field":"ts_ns"},{"type":"string","optional":false,"field":"schema"},{"type":"string","optional":false,"field":"table"},{"type":"string","optional":true,"field":"txId"},{"type":"string","optional":true,"field":"scn"},{"type":"string","optional":true,"field":"commit_scn"},{"type":"string","optional":true,"field":"lcr_position"},{"type":"string","optional":true,"field":"rs_id"},{"type":"int64","optional":true,"field":"ssn"},{"type":"int32","optional":true,"field":"redo_thread"},{"type":"string","optional":true,"field":"user_name"},{"type":"string","optional":true,"field":"redo_sql"}],"optional":false,"name":"io.debezium.connector.oracle.Source","field":"source"},{"type":"string","optional":false,"field":"op"},{"type":"int64","optional":true,"field":"ts_ms"},{"type":"int64","optional":true,"field":"ts_us"},{"type":"int64","optional":true,"field":"ts_ns"},{"type":"struct","fields":[

      {"type":"string","optional":false,"field":"id"}

      ,{"type":"int64","optional":false,"field":"total_order"},{"type":"int64","optional":false,"field":"data_collection_order"}],"optional":true,"name":"event.block","version":1,"field":"transaction"}],"optional":false,"name":"2d46a2b7-0465-452d-a684-cb64dfce5175.3d351180-59ea-4ada-92bd-cfe90d9b9a5b.MYSCHEMA.Envelope","version":2},"payload":{"before":null,"after":

      {"ID":122,"INT_TEST":2.0,"INT_NOT_NULL":1.0}

      ,"source":{"version":"2.6.1.Final","connector":"oracle","name":"2d46a2b7-0465-452d-a684-cb64dfce5175.3d351180-59ea-4ada-92bd-cfe90d9b9a5b","ts_ms":1749663562000,"snapshot":"false","db":"ORCLPDB1","sequence":null,"ts_us":1749663562000000,"ts_ns":1749663562000000000,"schema":"MYSCHEMA","table":"ROBIN","txId":"0a00210071090000","scn":"6809366","commit_scn":"6809368","lcr_position":null,"rs_id":"0x000081.00001de5.0170","ssn":0,"redo_thread":1,"user_name":"SYSTEM","redo_sql":null},"op":"c","ts_ms":1749663563680,"ts_us":1749663563680751,"ts_ns":1749663563680751000,"transaction":null}}
       
      As you can see, from the payload for 121:
       

      {"before":null,"after":

      {"ID":121,"INT_TEST":0.0,"INT_NOT_NULL":1.0}

       
      It's giving INT_TEST 0.0 due to the default value. However, that's actually not what's being stored in Oracle.

        1. image-2025-06-11-10-44-08-314.png
          image-2025-06-11-10-44-08-314.png
          7 kB
        2. noname
          3 kB
        3. noname
          3 kB

              Unassigned Unassigned
              robin.tang Robin Tang (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated: