Class OracleValueConverters

java.lang.Object
io.debezium.jdbc.JdbcValueConverters
io.debezium.connector.oracle.OracleValueConverters
All Implemented Interfaces:
ValueConverterProvider
Direct Known Subclasses:
OpenLogReplicatorValueConverter

public class OracleValueConverters extends JdbcValueConverters
  • Field Details

    • UNAVAILABLE_VALUE

      public static final Object UNAVAILABLE_VALUE
      Marker value indicating an unavilable column value.
    • EMPTY_BLOB_FUNCTION

      public static final String EMPTY_BLOB_FUNCTION
      See Also:
    • EMPTY_CLOB_FUNCTION

      public static final String EMPTY_CLOB_FUNCTION
      See Also:
    • HEXTORAW_FUNCTION_START

      public static final String HEXTORAW_FUNCTION_START
      See Also:
    • HEXTORAW_FUNCTION_END

      public static final String HEXTORAW_FUNCTION_END
      See Also:
    • INTERVAL_DAY_SECOND_PATTERN

      private static final Pattern INTERVAL_DAY_SECOND_PATTERN
    • TIMESTAMP_TZ_FORMATTER

      private static final DateTimeFormatter TIMESTAMP_TZ_FORMATTER
    • TO_TIMESTAMP_TZ

      private static final Pattern TO_TIMESTAMP_TZ
    • MICROSECONDS_PER_SECOND

      private static final BigDecimal MICROSECONDS_PER_SECOND
    • connection

      private final OracleConnection connection
    • lobEnabled

      private final boolean lobEnabled
    • intervalHandlingMode

      private final OracleConnectorConfig.IntervalHandlingMode intervalHandlingMode
    • unavailableValuePlaceholderBinary

      private final byte[] unavailableValuePlaceholderBinary
    • unavailableValuePlaceholderString

      private final String unavailableValuePlaceholderString
    • nationalCharacterSet

      private final oracle.sql.CharacterSet nationalCharacterSet
  • Constructor Details

  • Method Details

    • getUnavailableValuePlaceholderBinary

      public byte[] getUnavailableValuePlaceholderBinary()
    • getUnavailableValuePlaceholderString

      public String getUnavailableValuePlaceholderString()
    • schemaBuilder

      public org.apache.kafka.connect.data.SchemaBuilder schemaBuilder(Column column)
      Specified by:
      schemaBuilder in interface ValueConverterProvider
      Overrides:
      schemaBuilder in class JdbcValueConverters
    • getNumericSchema

      private org.apache.kafka.connect.data.SchemaBuilder getNumericSchema(Column column)
    • variableScaleSchema

      private org.apache.kafka.connect.data.SchemaBuilder variableScaleSchema(Column column)
    • converter

      public ValueConverter converter(Column column, org.apache.kafka.connect.data.Field fieldDefn)
      Specified by:
      converter in interface ValueConverterProvider
      Overrides:
      converter in class JdbcValueConverters
    • getNumericConverter

      private ValueConverter getNumericConverter(Column column, org.apache.kafka.connect.data.Field fieldDefn)
    • withScaleAdjustedIfNeeded

      protected BigDecimal withScaleAdjustedIfNeeded(Column column, BigDecimal data)
      Overrides:
      withScaleAdjustedIfNeeded in class JdbcValueConverters
    • convertString

      protected Object convertString(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertString in class JdbcValueConverters
    • convertBinary

      protected Object convertBinary(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data, CommonConnectorConfig.BinaryHandlingMode mode)
      Overrides:
      convertBinary in class JdbcValueConverters
    • convertInteger

      protected Object convertInteger(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertInteger in class JdbcValueConverters
    • convertFloat

      protected Object convertFloat(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertFloat in class JdbcValueConverters
    • convertDouble

      protected Object convertDouble(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertDouble in class JdbcValueConverters
    • convertDecimal

      protected Object convertDecimal(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertDecimal in class JdbcValueConverters
    • convertNumeric

      protected Object convertNumeric(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertNumeric in class JdbcValueConverters
    • convertNumericAsTinyInt

      protected Object convertNumericAsTinyInt(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
    • convertNumericAsSmallInt

      protected Object convertNumericAsSmallInt(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
    • convertNumericAsInteger

      protected Object convertNumericAsInteger(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
    • convertNumericAsBigInteger

      protected Object convertNumericAsBigInteger(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
    • convertBoolean

      protected Object convertBoolean(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Converts a value object for an expected JDBC type of Types.BOOLEAN.
      Overrides:
      convertBoolean in class JdbcValueConverters
      Parameters:
      column - the column definition describing the data value; never null
      fieldDefn - the field definition; never null
      data - the data object to be converted into a Kafka Connect date type; never null
      Returns:
      the converted value, or null if the conversion could not be made and the column allows nulls
      Throws:
      IllegalArgumentException - if the value could not be converted but the column does not allow nulls
    • convertTinyInt

      protected Object convertTinyInt(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertTinyInt in class JdbcValueConverters
    • convertVariableScale

      protected Object convertVariableScale(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
    • fromOracleTimeClasses

      protected Object fromOracleTimeClasses(Column column, Object data)
    • convertDateToEpochDays

      protected Object convertDateToEpochDays(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertDateToEpochDays in class JdbcValueConverters
    • convertDateToEpochDaysAsDate

      protected Object convertDateToEpochDaysAsDate(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertDateToEpochDaysAsDate in class JdbcValueConverters
    • convertTimestampToEpochMillisAsDate

      protected Object convertTimestampToEpochMillisAsDate(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertTimestampToEpochMillisAsDate in class JdbcValueConverters
    • convertTimestampToEpochMicros

      protected Object convertTimestampToEpochMicros(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertTimestampToEpochMicros in class JdbcValueConverters
    • convertTimestampToEpochMillis

      protected Object convertTimestampToEpochMillis(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertTimestampToEpochMillis in class JdbcValueConverters
    • convertTimestampToEpochNanos

      protected Object convertTimestampToEpochNanos(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertTimestampToEpochNanos in class JdbcValueConverters
    • resolveTimestampStringAsInstant

      private Instant resolveTimestampStringAsInstant(String data)
    • convertTimestampWithZone

      protected Object convertTimestampWithZone(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
      Overrides:
      convertTimestampWithZone in class JdbcValueConverters
    • convertTimestampWithLocalZone

      protected Object convertTimestampWithLocalZone(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
    • convertIntervalYearMonth

      protected Object convertIntervalYearMonth(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
    • convertOracleIntervalYearMonth

      private void convertOracleIntervalYearMonth(Object data, ResultReceiver r)
    • convertIntervalDaySecond

      protected Object convertIntervalDaySecond(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
    • convertOracleIntervalDaySecond

      private void convertOracleIntervalDaySecond(Object data, ResultReceiver r)
    • getHexToRawHexString

      public static String getHexToRawHexString(String hexToRawValue)
      Get the HEXTORAW function argument, removing the function call prefix/suffix if present.
      Parameters:
      hexToRawValue - the hex-to-raw string, optionally wrapped by the function call, never null
      Returns:
      the hex-to-raw argument, never null.
    • isHexToRawFunctionCall

      public static boolean isHexToRawFunctionCall(String value)
      Returns whether the provided value is a HEXTORAW function, format HEXTORAW('<hex>').
      Parameters:
      value - the value to inspect and validate, may be null
      Returns:
      true if the value is a HEXTORAW function call; false otherwise.
    • convertHexToRawFunctionToByteArray

      private byte[] convertHexToRawFunctionToByteArray(String value)
      Takes the HEXTORAW function call and argument and returns a byte array.
      Parameters:
      value - the HEXTORAW function with argument, should not be null
      Returns:
      a byte array of the hex-to-raw function argument
    • convertHexToRawFunctionToString

      private String convertHexToRawFunctionToString(Column column, String function)
      Converts the supplied HEXTORAW function and argument to a string literal. This method supports all character data types, including the nationalized character set data types.
      Parameters:
      column - the column
      function - the HEXTORAW function and argument
      Returns:
      the converted string value
    • convertHexToRawFunctionToNumber

      private Object convertHexToRawFunctionToNumber(Column column, String data)
      Converts the supplied HEXTORAW function and argument to a specific Oracle numeric data type.
      Parameters:
      column - the column
      data - the HEXTORAW function and argument
      Returns:
      the converted numeric data type
    • toStringFromNumericHexToRawIfApplicable

      private String toStringFromNumericHexToRawIfApplicable(Column column, String data)
    • toNumberFromNumericHexToRawIfApplicable

      private Object toNumberFromNumericHexToRawIfApplicable(Column column, String data)
    • toStringFromStringHexToRawIfApplicable

      private Object toStringFromStringHexToRawIfApplicable(Column column, String data)
    • convertHexToRawFunctionToTimestamp

      private ZonedDateTime convertHexToRawFunctionToTimestamp(String value)
      Convert the HEXTORAW timestamp function to a ZonedDateTime.
      Parameters:
      value - the hex-to-raw function and argument
      Returns:
      a zoned date time
      Throws:
      DebeziumException - if the conversion failed