This is an automated email from the ASF dual-hosted git repository.

lvyanquan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-cdc.git


The following commit(s) were added to refs/heads/master by this push:
     new a629dfa9f [FLINK-39832] Fix Oracle NUMBER(p,0) with p>=19 incorrectly 
mapped to BIGINT (#4424)
a629dfa9f is described below

commit a629dfa9f43f9004beb6af43780a9e25b927adf7
Author: mike <[email protected]>
AuthorDate: Tue Jun 30 20:42:21 2026 +0800

    [FLINK-39832] Fix Oracle NUMBER(p,0) with p>=19 incorrectly mapped to 
BIGINT (#4424)
---
 .../source/OracleSchemaDataTypeInference.java      |  25 ++
 .../connectors/oracle/utils/OracleTypeUtils.java   |  56 +++-
 .../oracle/source/OracleFullTypesITCase.java       |  44 ++--
 .../source/OracleMetadataAccessorITCase.java       |  14 +-
 .../oracle/source/OraclePipelineITCase.java        |  34 ++-
 .../oracle/utils/OracleTypeUtilsTest.java          | 282 +++++++++++++++++++++
 .../flink/cdc/pipeline/tests/OracleE2eITCase.java  |  88 +++----
 7 files changed, 453 insertions(+), 90 deletions(-)

diff --git 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/main/java/org/apache/flink/cdc/connectors/oracle/source/OracleSchemaDataTypeInference.java
 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/main/java/org/apache/flink/cdc/connectors/oracle/source/OracleSchemaDataTypeInference.java
index e8bfeee66..df0ec5f0c 100644
--- 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/main/java/org/apache/flink/cdc/connectors/oracle/source/OracleSchemaDataTypeInference.java
+++ 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/main/java/org/apache/flink/cdc/connectors/oracle/source/OracleSchemaDataTypeInference.java
@@ -20,10 +20,13 @@ package org.apache.flink.cdc.connectors.oracle.source;
 import org.apache.flink.cdc.common.annotation.Internal;
 import org.apache.flink.cdc.common.types.DataType;
 import org.apache.flink.cdc.common.types.DataTypes;
+import org.apache.flink.cdc.common.types.DecimalType;
 import org.apache.flink.cdc.debezium.event.DebeziumSchemaDataTypeInference;
 
+import io.debezium.data.VariableScaleDecimal;
 import io.debezium.data.geometry.Geometry;
 import org.apache.kafka.connect.data.Schema;
+import org.apache.kafka.connect.data.Struct;
 
 /** {@link DataType} inference for oracle debezium {@link Schema}. */
 @Internal
@@ -31,11 +34,33 @@ public class OracleSchemaDataTypeInference extends 
DebeziumSchemaDataTypeInferen
 
     private static final long serialVersionUID = 1L;
 
+    @Override
     protected DataType inferStruct(Object value, Schema schema) {
         // the Geometry datatype in oracle will be converted to
         // a String with Json format
         if (Geometry.LOGICAL_NAME.equals(schema.name())) {
             return DataTypes.STRING();
+        } else if (VariableScaleDecimal.LOGICAL_NAME.equals(schema.name())) {
+            // For Oracle bare NUMBER and explicit-precision positive-scale
+            // NUMBER with p - s > 18, Debezium encodes the value as a
+            // VariableScaleDecimal struct. We return DECIMAL(38, 19) to
+            // match OracleTypeUtils' schema-level choice (16-byte
+            // BinaryRecordData layout is the same for any DECIMAL).
+            //
+            // For negative-scale NUMBER with (p - s) > 18 (e.g. NUMBER(36, 
-2)),
+            // Debezium also encodes as VariableScaleDecimal but the integer
+            // range exceeds BIGINT. OracleTypeUtils returns STRING for these
+            // to avoid LONG overflow. We must mirror that STRING choice here
+            // at runtime, otherwise the schema/runtime type mismatch would
+            // corrupt the BinaryRecordData layout.
+            if (value instanceof Struct) {
+                Struct struct = (Struct) value;
+                Integer dbzScale = 
struct.getInt32(VariableScaleDecimal.SCALE_FIELD);
+                if (dbzScale != null && dbzScale < 0) {
+                    return DataTypes.STRING();
+                }
+            }
+            return DataTypes.DECIMAL(DecimalType.MAX_PRECISION, 19);
         } else {
             return super.inferStruct(value, schema);
         }
diff --git 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/main/java/org/apache/flink/cdc/connectors/oracle/utils/OracleTypeUtils.java
 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/main/java/org/apache/flink/cdc/connectors/oracle/utils/OracleTypeUtils.java
index f54c14af5..6a334e207 100644
--- 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/main/java/org/apache/flink/cdc/connectors/oracle/utils/OracleTypeUtils.java
+++ 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/main/java/org/apache/flink/cdc/connectors/oracle/utils/OracleTypeUtils.java
@@ -19,6 +19,7 @@ package org.apache.flink.cdc.connectors.oracle.utils;
 
 import org.apache.flink.cdc.common.types.DataType;
 import org.apache.flink.cdc.common.types.DataTypes;
+import org.apache.flink.cdc.common.types.DecimalType;
 
 import io.debezium.relational.Column;
 import oracle.jdbc.OracleTypes;
@@ -72,11 +73,56 @@ public class OracleTypeUtils {
                 return DataTypes.DOUBLE();
             case Types.NUMERIC:
             case Types.DECIMAL:
-                return column.length() == 0
-                                || !column.scale().isPresent()
-                                || column.scale().get() <= 0
-                        ? DataTypes.BIGINT()
-                        : DataTypes.DECIMAL(column.length(), 
column.scale().orElse(0));
+                {
+                    // Bare NUMBER (scale unspecified): floating-point 
semantic,
+                    // can store both integers and decimals up to 38 
significant
+                    // digits. Use DECIMAL(38, 19) as a balanced universal
+                    // numeric type, matching Debezium's VariableScaleDecimal
+                    // encoding and OracleSchemaDataTypeInference.inferStruct.
+                    if (!column.scale().isPresent()) {
+                        return DataTypes.DECIMAL(DecimalType.MAX_PRECISION, 
19);
+                    }
+                    int precision = column.length();
+                    // precision == 0 (e.g. NUMBER(*, s)) means unspecified.
+                    int p = precision > 0 ? precision : 
DecimalType.MAX_PRECISION;
+                    int scale = column.scale().get();
+
+                    // scale < 0: value = unscaled * 10^|scale|. Debezium
+                    // encodes these as INT8 / INT16 / INT32 / INT64 based on
+                    // (precision - scale), which is the number of integer
+                    // digits. The default Debezium runtime
+                    // (DebeziumSchemaDataTypeInference) maps those to
+                    // TINYINT / SMALLINT / INT / BIGINT — all of which live
+                    // in the same 8-byte compact slot of BinaryRecordData's
+                    // fixed area. So we mirror that family here to keep the
+                    // schema and runtime layers in sync. When (precision -
+                    // scale) exceeds 18 the value can no longer fit in a
+                    // BIGINT and Debezium falls back to VariableScaleDecimal;
+                    // we map that case to STRING because the integer range
+                    // is genuinely beyond any native Flink CDC type.
+                    if (scale < 0) {
+                        int intDigits = p - scale; // p + |scale|
+                        if (intDigits <= 18) {
+                            return DataTypes.BIGINT();
+                        }
+                        return DataTypes.STRING();
+                    }
+                    // scale > 36: not safely representable as DECIMAL.
+                    if (scale > 36) {
+                        return DataTypes.STRING();
+                    }
+                    if (scale == 0) {
+                        // Explicit integer: BIGINT for p <= 18 (Debezium 
encodes
+                        // as INT8/16/32/64, parent class runtime returns
+                        // TINYINT/SMALLINT/INT/BIGINT — same 8-byte-or-less
+                        // family), DECIMAL(p, 0) for p > 18 (Debezium encodes
+                        // as VariableScaleDecimal, runtime returns DECIMAL,
+                        // BinaryRecordData layout matches 16-byte DECIMAL).
+                        return p <= 18 ? DataTypes.BIGINT() : 
DataTypes.DECIMAL(p, 0);
+                    }
+                    // 1 <= scale <= 36: standard decimal with fractional part.
+                    return DataTypes.DECIMAL(p, scale);
+                }
             case Types.DATE:
                 return DataTypes.DATE();
             case Types.TIMESTAMP:
diff --git 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OracleFullTypesITCase.java
 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OracleFullTypesITCase.java
index 4e3ddfbc6..e8b234c24 100644
--- 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OracleFullTypesITCase.java
+++ 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OracleFullTypesITCase.java
@@ -113,7 +113,7 @@ public class OracleFullTypesITCase extends 
OracleSourceTestBase {
 
         Object[] expectedSnapshot =
                 new Object[] {
-                    DecimalData.fromBigDecimal(new BigDecimal("1"), 9, 0),
+                    1L,
                     BinaryStringData.fromString("vc2"),
                     BinaryStringData.fromString("vc2"),
                     BinaryStringData.fromString("nvc2"),
@@ -128,17 +128,17 @@ public class OracleFullTypesITCase extends 
OracleSourceTestBase {
                     (float) 6.66,
                     DecimalData.fromBigDecimal(new BigDecimal("1234.567891"), 
10, 6),
                     DecimalData.fromBigDecimal(new BigDecimal("1234.567891"), 
10, 6),
-                    DecimalData.fromBigDecimal(new BigDecimal("77.323"), 10, 
3),
-                    DecimalData.fromBigDecimal(new BigDecimal(1), 10, 0),
-                    DecimalData.fromBigDecimal(new BigDecimal(22), 10, 0),
-                    DecimalData.fromBigDecimal(new BigDecimal(333), 10, 0),
-                    DecimalData.fromBigDecimal(new BigDecimal(4444), 10, 0),
-                    DecimalData.fromBigDecimal(new BigDecimal(5555), 10, 0),
-                    DecimalData.fromBigDecimal(new BigDecimal(1), 10, 0),
-                    DecimalData.fromBigDecimal(new BigDecimal(99), 10, 0),
-                    DecimalData.fromBigDecimal(new BigDecimal(9999), 10, 0),
-                    DecimalData.fromBigDecimal(new BigDecimal(999999999), 38, 
0),
-                    DecimalData.fromBigDecimal(new 
BigDecimal(999999999999999999L), 38, 0),
+                    DecimalData.fromBigDecimal(new BigDecimal("77.323"), 38, 
19),
+                    DecimalData.fromBigDecimal(new BigDecimal(1), 38, 19),
+                    DecimalData.fromBigDecimal(new BigDecimal(22), 38, 19),
+                    DecimalData.fromBigDecimal(new BigDecimal(333), 38, 19),
+                    DecimalData.fromBigDecimal(new BigDecimal(4444), 38, 0),
+                    DecimalData.fromBigDecimal(new BigDecimal(5555), 38, 0),
+                    1L,
+                    99L,
+                    9999L,
+                    999999999L,
+                    999999999999999999L,
                     90L,
                     9900L,
                     999999990L,
@@ -222,7 +222,7 @@ public class OracleFullTypesITCase extends 
OracleSourceTestBase {
 
     private static final RowType COMMON_TYPES =
             RowType.of(
-                    DataTypes.DECIMAL(9, 0).notNull(),
+                    DataTypes.BIGINT().notNull(),
                     DataTypes.STRING(),
                     DataTypes.STRING(),
                     DataTypes.STRING(),
@@ -237,17 +237,17 @@ public class OracleFullTypesITCase extends 
OracleSourceTestBase {
                     DataTypes.FLOAT(),
                     DataTypes.DECIMAL(10, 6),
                     DataTypes.DECIMAL(10, 6),
-                    DataTypes.DECIMAL(10, 3),
-                    DataTypes.DECIMAL(10, 0),
-                    DataTypes.DECIMAL(10, 0),
-                    DataTypes.DECIMAL(10, 0),
+                    DataTypes.DECIMAL(38, 19),
+                    DataTypes.DECIMAL(38, 19),
+                    DataTypes.DECIMAL(38, 19),
+                    DataTypes.DECIMAL(38, 19),
                     DataTypes.DECIMAL(38, 0),
                     DataTypes.DECIMAL(38, 0),
-                    DataTypes.DECIMAL(1, 0),
-                    DataTypes.DECIMAL(2, 0),
-                    DataTypes.DECIMAL(4, 0),
-                    DataTypes.DECIMAL(9, 0),
-                    DataTypes.DECIMAL(18, 0),
+                    DataTypes.BIGINT(),
+                    DataTypes.BIGINT(),
+                    DataTypes.BIGINT(),
+                    DataTypes.BIGINT(),
+                    DataTypes.BIGINT(),
                     DataTypes.BIGINT(),
                     DataTypes.BIGINT(),
                     DataTypes.BIGINT(),
diff --git 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OracleMetadataAccessorITCase.java
 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OracleMetadataAccessorITCase.java
index 2ade43084..8ccfea167 100644
--- 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OracleMetadataAccessorITCase.java
+++ 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OracleMetadataAccessorITCase.java
@@ -126,6 +126,12 @@ public class OracleMetadataAccessorITCase extends 
OracleSourceTestBase {
                                             DataTypes.FLOAT(),
                                             DataTypes.DECIMAL(10, 6),
                                             DataTypes.DECIMAL(10, 6),
+                                            DataTypes.DECIMAL(38, 19),
+                                            DataTypes.DECIMAL(38, 19),
+                                            DataTypes.DECIMAL(38, 19),
+                                            DataTypes.DECIMAL(38, 19),
+                                            DataTypes.DECIMAL(38, 0),
+                                            DataTypes.DECIMAL(38, 0),
                                             DataTypes.BIGINT(),
                                             DataTypes.BIGINT(),
                                             DataTypes.BIGINT(),
@@ -135,13 +141,7 @@ public class OracleMetadataAccessorITCase extends 
OracleSourceTestBase {
                                             DataTypes.BIGINT(),
                                             DataTypes.BIGINT(),
                                             DataTypes.BIGINT(),
-                                            DataTypes.BIGINT(),
-                                            DataTypes.BIGINT(),
-                                            DataTypes.BIGINT(),
-                                            DataTypes.BIGINT(),
-                                            DataTypes.BIGINT(),
-                                            DataTypes.BIGINT(),
-                                            DataTypes.BIGINT(),
+                                            DataTypes.STRING(),
                                             DataTypes.TIMESTAMP(6),
                                             DataTypes.TIMESTAMP(6),
                                             DataTypes.TIMESTAMP(2),
diff --git 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OraclePipelineITCase.java
 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OraclePipelineITCase.java
index 497fa54ea..700e87395 100644
--- 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OraclePipelineITCase.java
+++ 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/source/OraclePipelineITCase.java
@@ -20,6 +20,7 @@ package org.apache.flink.cdc.connectors.oracle.source;
 import org.apache.flink.api.common.eventtime.WatermarkStrategy;
 import org.apache.flink.api.common.typeutils.TypeSerializer;
 import org.apache.flink.cdc.common.configuration.Configuration;
+import org.apache.flink.cdc.common.data.DecimalData;
 import org.apache.flink.cdc.common.data.RecordData;
 import org.apache.flink.cdc.common.data.binary.BinaryStringData;
 import org.apache.flink.cdc.common.event.AddColumnEvent;
@@ -38,6 +39,7 @@ import org.apache.flink.cdc.common.schema.Schema;
 import org.apache.flink.cdc.common.source.FlinkSourceProvider;
 import org.apache.flink.cdc.common.types.DataType;
 import org.apache.flink.cdc.common.types.DataTypes;
+import org.apache.flink.cdc.common.types.DecimalType;
 import org.apache.flink.cdc.common.types.RowType;
 import org.apache.flink.cdc.common.utils.SchemaUtils;
 import org.apache.flink.cdc.connectors.base.options.StartupOptions;
@@ -71,6 +73,7 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestMethodOrder;
 import org.testcontainers.lifecycle.Startables;
 
+import java.math.BigDecimal;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.sql.Connection;
@@ -400,7 +403,10 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                             tableId,
                             Collections.singletonList(
                                     new AddColumnEvent.ColumnWithPosition(
-                                            Column.physicalColumn("COLS27", 
DataTypes.BIGINT())))));
+                                            Column.physicalColumn(
+                                                    "COLS27",
+                                                    DataTypes.DECIMAL(
+                                                            
DecimalType.MAX_PRECISION, 19))))));
             statement.execute(
                     String.format("ALTER TABLE %s.PRODUCTS ADD COLS28 
TIMESTAMP(2)", "DEBEZIUM"));
             expected.add(
@@ -983,7 +989,9 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                 new CreateTableEvent(
                         TableId.tableId("DEBEZIUM", "MYLAKE"),
                         Schema.newBuilder()
-                                .physicalColumn("FEATURE_ID", 
DataTypes.BIGINT().notNull())
+                                .physicalColumn(
+                                        "FEATURE_ID",
+                                        
DataTypes.DECIMAL(DecimalType.MAX_PRECISION, 19).notNull())
                                 .physicalColumn("NAME", DataTypes.VARCHAR(32))
                                 .physicalColumn("SHAPE", DataTypes.STRING())
                                 .primaryKey(Arrays.asList("FEATURE_ID"))
@@ -992,7 +1000,9 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
         RowType rowType =
                 RowType.of(
                         new DataType[] {
-                            DataTypes.BIGINT(), DataTypes.VARCHAR(32), 
DataTypes.STRING()
+                            DataTypes.DECIMAL(DecimalType.MAX_PRECISION, 19),
+                            DataTypes.VARCHAR(32),
+                            DataTypes.STRING()
                         },
                         new String[] {"FEATURE_ID", "NAME", "SHAPE"});
         BinaryRecordDataGenerator generator = new 
BinaryRecordDataGenerator(rowType);
@@ -1004,7 +1014,7 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                         tableId,
                         generator.generate(
                                 new Object[] {
-                                    1L,
+                                    DecimalData.fromBigDecimal(new 
BigDecimal(1), 38, 19),
                                     BinaryStringData.fromString("center"),
                                     BinaryStringData.fromString(
                                             
"{\"coordinates\":\"[[116.6,24.343]]\",\"type\":\"Point\",\"srid\":4326}")
@@ -1014,7 +1024,7 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                         tableId,
                         generator.generate(
                                 new Object[] {
-                                    2L,
+                                    DecimalData.fromBigDecimal(new 
BigDecimal(2), 38, 19),
                                     
BinaryStringData.fromString("two-dimensional point"),
                                     BinaryStringData.fromString(
                                             
"{\"coordinates\":\"[[10.0,5.0]]\",\"type\":\"Point\",\"srid\":4326}")
@@ -1024,7 +1034,7 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                         tableId,
                         generator.generate(
                                 new Object[] {
-                                    3L,
+                                    DecimalData.fromBigDecimal(new 
BigDecimal(3), 38, 19),
                                     BinaryStringData.fromString("straight line 
segment"),
                                     BinaryStringData.fromString(
                                             
"{\"coordinates\":\"[[10.0,10.0],[20.0,20.0],[30.0,30.0]]\",\"type\":\"LineString\",\"srid\":4326}")
@@ -1034,7 +1044,7 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                         tableId,
                         generator.generate(
                                 new Object[] {
-                                    4L,
+                                    DecimalData.fromBigDecimal(new 
BigDecimal(4), 38, 19),
                                     BinaryStringData.fromString("polyline"),
                                     BinaryStringData.fromString(
                                             
"{\"coordinates\":\"[[5.0,5.0],[15.0,10.0],[25.0,5.0],[35.0,10.0]]\",\"type\":\"LineString\",\"srid\":4326}")
@@ -1044,7 +1054,7 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                         tableId,
                         generator.generate(
                                 new Object[] {
-                                    5L,
+                                    DecimalData.fromBigDecimal(new 
BigDecimal(5), 38, 19),
                                     BinaryStringData.fromString("rectangle"),
                                     BinaryStringData.fromString(
                                             
"{\"coordinates\":\"[[0.0,0.0],[10.0,0.0],[10.0,10.0],[0.0,10.0],[0.0,0.0]]\",\"type\":\"Polygon\",\"srid\":4326}")
@@ -1054,7 +1064,7 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                         tableId,
                         generator.generate(
                                 new Object[] {
-                                    6L,
+                                    DecimalData.fromBigDecimal(new 
BigDecimal(6), 38, 19),
                                     BinaryStringData.fromString("Multi-Point"),
                                     BinaryStringData.fromString(
                                             
"{\"coordinates\":\"[[10.0,10.0],[20.0,20.0],[30.0,30.0]]\",\"type\":\"MultiPoint\",\"srid\":4326}")
@@ -1064,7 +1074,7 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                         tableId,
                         generator.generate(
                                 new Object[] {
-                                    7L,
+                                    DecimalData.fromBigDecimal(new 
BigDecimal(7), 38, 19),
                                     BinaryStringData.fromString("Multi line 
collection"),
                                     BinaryStringData.fromString(
                                             
"{\"coordinates\":\"[[10.0,10.0],[20.0,10.0],[10.0,20.0],[20.0,20.0]]\",\"type\":\"MultiLineString\",\"srid\":4326}")
@@ -1075,7 +1085,7 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                         tableId,
                         generator.generate(
                                 new Object[] {
-                                    8L,
+                                    DecimalData.fromBigDecimal(new 
BigDecimal(8), 38, 19),
                                     
BinaryStringData.fromString("Multi-Polygon"),
                                     BinaryStringData.fromString(
                                             
"{\"coordinates\":\"[[0.0,0.0],[10.0,0.0],[10.0,10.0],[0.0,10.0],[0.0,0.0],[15.0,15.0],[25.0,15.0],[25.0,25.0],[15.0,25.0],[15.0,15.0]]\",\"type\":\"MultiPolygon\",\"srid\":4326}")
@@ -1085,7 +1095,7 @@ public class OraclePipelineITCase extends 
OracleSourceTestBase {
                         tableId,
                         generator.generate(
                                 new Object[] {
-                                    9L,
+                                    DecimalData.fromBigDecimal(new 
BigDecimal(9), 38, 19),
                                     BinaryStringData.fromString("Geometry 
Collection"),
                                     BinaryStringData.fromString(
                                             
"{\"geometries\":\"GEOMETRYCOLLECTION (POINT (25 25), LINESTRING (30 30, 35 
25), POLYGON ((0 0, 10 0, 10 10, 0 10, 0 
0)))\",\"type\":\"GeometryCollection\",\"srid\":4326}")
diff --git 
a/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/utils/OracleTypeUtilsTest.java
 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/utils/OracleTypeUtilsTest.java
new file mode 100644
index 000000000..459f423f8
--- /dev/null
+++ 
b/flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-oracle/src/test/java/org/apache/flink/cdc/connectors/oracle/utils/OracleTypeUtilsTest.java
@@ -0,0 +1,282 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.cdc.connectors.oracle.utils;
+
+import org.apache.flink.cdc.common.types.DataType;
+import org.apache.flink.cdc.common.types.DataTypes;
+import org.apache.flink.cdc.common.types.DecimalType;
+
+import io.debezium.relational.Column;
+import org.junit.jupiter.api.Test;
+
+import java.sql.Types;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/** Tests for {@link OracleTypeUtils}. */
+class OracleTypeUtilsTest {
+
+    // --- Bare NUMBER (scale unspecified) tests ---
+
+    @Test
+    void testBareNumberShouldBeDecimal3819() {
+        // NUMBER (scale unspecified) → DECIMAL(38, 19)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(0)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        
assertThat(result).isEqualTo(DataTypes.DECIMAL(DecimalType.MAX_PRECISION, 19));
+    }
+
+    @Test
+    void testBareNumberNotNullShouldBeDecimal3819NotNull() {
+        // NOT NULL NUMBER → DECIMAL(38, 19).notNull()
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(0)
+                        .optional(false)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        
assertThat(result).isEqualTo(DataTypes.DECIMAL(DecimalType.MAX_PRECISION, 
19).notNull());
+    }
+
+    @Test
+    void testNumberPrecision10ScaleAbsentShouldBeDecimal3819() {
+        // NUMBER(10) with no scale info → DECIMAL(38, 19) (treated as bare 
NUMBER)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(10)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        
assertThat(result).isEqualTo(DataTypes.DECIMAL(DecimalType.MAX_PRECISION, 19));
+    }
+
+    // --- Explicit integer (scale = 0) tests ---
+
+    @Test
+    void testNumberPrecision1ShouldBeBigint() {
+        // NUMBER(1, 0) → BIGINT (precision <= 18)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(1)
+                        .scale(0)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        assertThat(result).isEqualTo(DataTypes.BIGINT());
+    }
+
+    @Test
+    void testNumberPrecision18ShouldBeBigint() {
+        // NUMBER(18, 0) → BIGINT (boundary: precision = 18)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(18)
+                        .scale(0)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        assertThat(result).isEqualTo(DataTypes.BIGINT());
+    }
+
+    @Test
+    void testNumberPrecision19ShouldBeDecimal() {
+        // NUMBER(19, 0) → DECIMAL(19, 0) (boundary: precision = 19)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(19)
+                        .scale(0)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        assertThat(result).isEqualTo(DataTypes.DECIMAL(19, 0));
+    }
+
+    @Test
+    void testNumberPrecision38ShouldBeDecimal() {
+        // NUMBER(38, 0) → DECIMAL(38, 0)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(38)
+                        .scale(0)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        assertThat(result).isEqualTo(DataTypes.DECIMAL(38, 0));
+    }
+
+    @Test
+    void testNumberPrecision19NotNullShouldBeDecimalNotNull() {
+        // NOT NULL NUMBER(19, 0) → DECIMAL(19, 0).notNull()
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(19)
+                        .scale(0)
+                        .optional(false)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        assertThat(result).isEqualTo(DataTypes.DECIMAL(19, 0).notNull());
+    }
+
+    // --- Decimal (scale > 0) tests ---
+
+    @Test
+    void testNumberWithScaleShouldBeDecimal() {
+        // NUMBER(10, 6) → DECIMAL(10, 6)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(10)
+                        .scale(6)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        assertThat(result).isEqualTo(DataTypes.DECIMAL(10, 6));
+    }
+
+    @Test
+    void testNumberWithScaleBoundaryShouldBeDecimal() {
+        // NUMBER(38, 36) → DECIMAL(38, 36) (scale at boundary)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(38)
+                        .scale(36)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        assertThat(result).isEqualTo(DataTypes.DECIMAL(38, 36));
+    }
+
+    // --- NUMBER(*, s) (precision == 0, scale > 0) tests ---
+
+    @Test
+    void testNumberStarPrecisionShouldBeDecimal38() {
+        // NUMBER(*, 2) → DECIMAL(38, 2) (precision == 0 defaults to 
MAX_PRECISION)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(0)
+                        .scale(2)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        
assertThat(result).isEqualTo(DataTypes.DECIMAL(DecimalType.MAX_PRECISION, 2));
+    }
+
+    @Test
+    void testNumberStarPrecisionNotNullShouldBeDecimal38NotNull() {
+        // NOT NULL NUMBER(*, 4) → DECIMAL(38, 4).notNull()
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(0)
+                        .scale(4)
+                        .optional(false)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        
assertThat(result).isEqualTo(DataTypes.DECIMAL(DecimalType.MAX_PRECISION, 
4).notNull());
+    }
+
+    // --- Scale < 0 (negative scale) downgrade tests ---
+
+    @Test
+    void testNegativeScaleShouldBeBigint() {
+        // NUMBER(10, -2) → BIGINT (negative scale, p+|s|=12 fits in BIGINT)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(10)
+                        .scale(-2)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        assertThat(result).isEqualTo(DataTypes.BIGINT());
+    }
+
+    @Test
+    void testNegativeScaleStarPrecisionShouldBeString() {
+        // NUMBER(*, -3) → STRING (negative scale downgraded)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(0)
+                        .scale(-3)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        assertThat(result).isEqualTo(DataTypes.STRING());
+    }
+
+    // --- Scale > 36 downgrade tests ---
+
+    @Test
+    void testScaleGreaterThan36ShouldBeString() {
+        // NUMBER(10, 37) → STRING (scale > 36 downgraded)
+        Column column =
+                Column.editor()
+                        .name("col")
+                        .type("NUMBER")
+                        .jdbcType(Types.NUMERIC)
+                        .length(10)
+                        .scale(37)
+                        .optional(true)
+                        .create();
+        DataType result = OracleTypeUtils.fromDbzColumn(column);
+        assertThat(result).isEqualTo(DataTypes.STRING());
+    }
+}
diff --git 
a/flink-cdc-e2e-tests/flink-cdc-pipeline-e2e-tests/src/test/java/org/apache/flink/cdc/pipeline/tests/OracleE2eITCase.java
 
b/flink-cdc-e2e-tests/flink-cdc-pipeline-e2e-tests/src/test/java/org/apache/flink/cdc/pipeline/tests/OracleE2eITCase.java
index e6b5387a2..498012e54 100644
--- 
a/flink-cdc-e2e-tests/flink-cdc-pipeline-e2e-tests/src/test/java/org/apache/flink/cdc/pipeline/tests/OracleE2eITCase.java
+++ 
b/flink-cdc-e2e-tests/flink-cdc-pipeline-e2e-tests/src/test/java/org/apache/flink/cdc/pipeline/tests/OracleE2eITCase.java
@@ -171,49 +171,49 @@ public class OracleE2eITCase extends 
PipelineTestEnvironment {
                     "DataChangeEvent{tableId=DEBEZIUM.PRODUCTS, before=[], 
after=[105, hammer, 14oz carpenters hammer, 0.875], op=INSERT, meta=()}");
 
             waitUntilSpecificEvent(
-                    "CreateTableEvent{tableId=DEBEZIUM.CUSTOMERS, 
schema=columns={`ID` BIGINT NOT NULL,`NAME` VARCHAR(255) NOT NULL,`ADDRESS` 
VARCHAR(1024),`PHONE_NUMBER` VARCHAR(512)}, primaryKeys=ID, options=()}");
+                    "CreateTableEvent{tableId=DEBEZIUM.CUSTOMERS, 
schema=columns={`ID` DECIMAL(38, 0) NOT NULL,`NAME` VARCHAR(255) NOT 
NULL,`ADDRESS` VARCHAR(1024),`PHONE_NUMBER` VARCHAR(512)}, primaryKeys=ID, 
options=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691841, user_1, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[101, user_1, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691841, user_4, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[109, user_4, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691841, user_3, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[103, user_3, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691841, user_2, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[102, user_2, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_13, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1012, user_13, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_14, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1013, user_14, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_11, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1010, user_11, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_12, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1011, user_12, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_21, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[2000, user_21, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_10, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1009, user_10, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691841, user_6, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[111, user_6, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691841, user_5, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[110, user_5, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691841, user_9, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[123, user_9, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_19, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1018, user_19, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_20, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1019, user_20, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691841, user_8, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[121, user_8, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_17, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1016, user_17, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_18, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1017, user_18, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_15, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1014, user_15, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691841, user_7, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[118, user_7, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[171798691842, user_16, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS, before=[], 
after=[1015, user_16, Shanghai, 123567891234], op=INSERT, meta=()}");
 
             stat.execute(
                     "UPDATE DEBEZIUM.PRODUCTS SET DESCRIPTION='18oz carpenter 
hammer' WHERE ID=106 ");
@@ -225,49 +225,49 @@ public class OracleE2eITCase extends 
PipelineTestEnvironment {
             waitUntilSpecificEvent(
                     "DataChangeEvent{tableId=DEBEZIUM.PRODUCTS, before=[107, 
rocks, box of assorted rocks, 5.3], after=[107, rocks, box of assorted rocks, 
5.1], op=UPDATE, meta=()}");
             waitUntilSpecificEvent(
-                    "CreateTableEvent{tableId=DEBEZIUM.CUSTOMERS_1, 
schema=columns={`ID` BIGINT NOT NULL,`NAME` VARCHAR(255) NOT NULL,`ADDRESS` 
VARCHAR(1024),`PHONE_NUMBER` VARCHAR(512)}, primaryKeys=ID, options=()}");
+                    "CreateTableEvent{tableId=DEBEZIUM.CUSTOMERS_1, 
schema=columns={`ID` DECIMAL(38, 0) NOT NULL,`NAME` VARCHAR(255) NOT 
NULL,`ADDRESS` VARCHAR(1024),`PHONE_NUMBER` VARCHAR(512)}, primaryKeys=ID, 
options=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_10, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1009, user_10, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_21, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[2000, user_21, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691841, user_5, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[110, user_5, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_14, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1013, user_14, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691841, user_6, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[111, user_6, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_13, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1012, user_13, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_12, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1011, user_12, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_11, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1010, user_11, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691841, user_4, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[109, user_4, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691841, user_2, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[102, user_2, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691841, user_3, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[103, user_3, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691841, user_1, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[101, user_1, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_18, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1017, user_18, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691841, user_9, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[123, user_9, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_17, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1016, user_17, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_16, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1015, user_16, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_15, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1014, user_15, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691841, user_7, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[118, user_7, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_20, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1019, user_20, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691841, user_8, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[121, user_8, Shanghai, 123567891234], op=INSERT, meta=()}");
             waitUntilSpecificEvent(
-                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[171798691842, user_19, Shanghai, 123567891234], op=INSERT, meta=()}");
+                    "DataChangeEvent{tableId=DEBEZIUM.CUSTOMERS_1, before=[], 
after=[1018, user_19, Shanghai, 123567891234], op=INSERT, meta=()}");
         } catch (Exception e) {
             LOG.error("Update table for CDC failed.", e);
             throw new RuntimeException(e);

Reply via email to