Transformations
oracdc provides several Single Message Transformations (SMTs) for converting between Oracle-native data types and standard Kafka Connect types.
OraNumberConverter
Class: solutions.a2.kafka.transforms.OraNumberConverter
Converts native Oracle NUMBER bytes (solutions.a2.cdc.oracle.data.OraNumber / oracle.sql.NUMBER) to standard Kafka Connect numeric types.
Use this transformation when consuming oracdc data with a2.oracdc.schemas=true and you need standard numeric types for downstream consumers.
Configuration
| Parameter | Default | Description |
|---|---|---|
field | (empty) | Field containing OraNumber data to convert. When empty, all fields of type solutions.a2.cdc.oracle.data.OraNumber are processed |
target.type | string | Conversion target type: string, decimal, double, float, long, int, or short |
decimal.scale | 2 | Scale of org.apache.kafka.connect.data.Decimal (used with target.type=decimal) |
decimal.precision | 0 | Precision of org.apache.kafka.connect.data.Decimal (used with target.type=decimal) |
replace.null.with.default | true | When true, null values in fields with a default are replaced by the default value |
transforms=numberConvert
transforms.numberConvert.type=solutions.a2.kafka.transforms.OraNumberConverter
transforms.numberConvert.target.type=decimal
transforms.numberConvert.decimal.scale=2
OraIntervalConverter
Class: solutions.a2.kafka.transforms.OraIntervalConverter
Converts native Oracle INTERVAL bytes to standard Kafka Connect types:
solutions.a2.cdc.oracle.data.OraIntervalYM(INTERVAL YEAR TO MONTH) — converted to string representationsolutions.a2.cdc.oracle.data.OraIntervalDS(INTERVAL DAY TO SECOND) — converted to string representation
Configuration
| Parameter | Default | Description |
|---|---|---|
field | (empty) | Field containing OraIntervalDS/OraIntervalYM data to convert. When empty, all fields of these types are processed |
replace.null.with.default | true | When true, null values in fields with a default are replaced by the default value |
transforms=intervalConvert
transforms.intervalConvert.type=solutions.a2.kafka.transforms.OraIntervalConverter
HeaderToFieldConverter
Class: solutions.a2.kafka.transforms.HeaderToFieldConverter
Converts Kafka record headers to fields within the record value. Useful when header information (such as source metadata added by oracdc) needs to be included in the record for downstream processing or sinking to databases that don't support Kafka headers.
Configuration
| Parameter | Default | Description |
|---|---|---|
header | (empty) | Name of the header to copy. Must be set for the transformation to take effect |
field | (empty) | Name of the value field to write the header content to. Must be set for the transformation to take effect |
map | (empty) | Optional value mapping in h1:v1[,h2:v2] format — replaces header value h1 with v1, etc. |
transforms=headersToFields
transforms.headersToFields.type=solutions.a2.kafka.transforms.HeaderToFieldConverter
transforms.headersToFields.header=op
transforms.headersToFields.field=operation
KeyToValueConverter
Class: solutions.a2.kafka.transforms.KeyToValueConverter
Converts fields from the record key schema into the value schema. Useful when key fields need to be duplicated in the value for systems that don't process key schemas separately (e.g., JDBC sink connectors that only read the value).
Configuration
| Parameter | Default | Description |
|---|---|---|
fields | (required) | Comma-separated list of key fields to copy into the value |
transforms=keyToValue
transforms.keyToValue.type=solutions.a2.kafka.transforms.KeyToValueConverter
transforms.keyToValue.fields=DEPTNO
ToLowerCaseNameConverter
Class: solutions.a2.kafka.transforms.ToLowerCaseNameConverter
Converts schema names and field names to lowercase. Useful when the target system requires lowercase identifiers (e.g., PostgreSQL, which folds unquoted identifiers to lowercase).
Configuration
| Parameter | Default | Description |
|---|---|---|
field | (empty) | Field name, list of field names, or %. When empty or %, all field names are converted to lowercase |
transforms=lowercase
transforms.lowercase.type=solutions.a2.kafka.transforms.ToLowerCaseNameConverter
Chaining Transformations
Multiple transformations can be chained together:
transforms=numberConvert,intervalConvert,lowercase
transforms.numberConvert.type=solutions.a2.kafka.transforms.OraNumberConverter
transforms.intervalConvert.type=solutions.a2.kafka.transforms.OraIntervalConverter
transforms.lowercase.type=solutions.a2.kafka.transforms.ToLowerCaseNameConverter
Transformations are applied in the order listed.