public class PostgresValueConverter extends JdbcValueConverters
ValueConverters and SchemaBuilders for various Postgres specific column types.
In addition to handling data type conversion from values coming from JDBC, this is also expected to handle data type
conversion for data types coming from the logical decoding plugin.JdbcValueConverters.BigIntUnsignedMode, JdbcValueConverters.DecimalMode| Modifier and Type | Field and Description |
|---|---|
private Charset |
databaseCharset
The current database's character encoding.
|
private PostgresConnectorConfig.HStoreHandlingMode |
hStoreMode |
private boolean |
includeUnknownDatatypes
true if fields of data type not know should be handle as opaque binary;
false if they should be omitted |
private com.fasterxml.jackson.core.JsonFactory |
jsonFactory |
static String |
N_A_N
A string denoting not-a- number for FP and Numeric types
|
private static long |
NANO_SECONDS_PER_DAY |
static String |
NEGATIVE_INFINITY
A string denoting negative infinity for FP and Numeric types
|
private static Duration |
ONE_DAY |
static String |
POSITIVE_INFINITY
A string denoting positive infinity for FP and Numeric types
|
private static DateTimeFormatter |
TIME_WITH_TIMEZONE_FORMATTER
A formatter used to parse TIMETZ columns when provided as strings.
|
private byte[] |
toastPlaceholderBinary |
private String |
toastPlaceholderString |
private TypeRegistry |
typeRegistry |
private static int |
VARIABLE_SCALE_DECIMAL_LENGTH
Variable scale decimal/numeric is defined by metadata
scale - 0
length - 131089
|
adaptiveTimeMicrosecondsPrecisionMode, adaptiveTimePrecisionMode, bigIntUnsignedMode, decimalMode, logger| Modifier | Constructor and Description |
|---|---|
protected |
PostgresValueConverter(Charset databaseCharset,
JdbcValueConverters.DecimalMode decimalMode,
TemporalPrecisionMode temporalPrecisionMode,
ZoneOffset defaultOffset,
JdbcValueConverters.BigIntUnsignedMode bigIntUnsignedMode,
boolean includeUnknownDatatypes,
TypeRegistry typeRegistry,
PostgresConnectorConfig.HStoreHandlingMode hStoreMode,
byte[] toastPlaceholder) |
| Modifier and Type | Method and Description |
|---|---|
private String |
asHstoreString(byte[] data)
Returns an Hstore field as string in the form of
"key 1"=>"value1", "key_2"=>"val 1"; i.e. |
private String |
changePlainStringRepresentationToJsonStringRepresentation(String text) |
protected Object |
convertArray(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
ValueConverter elementConverter,
Object data) |
protected Object |
convertBinary(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data)
Extracts a value from a PGobject .
|
protected Object |
convertBit(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
protected Object |
convertBits(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data,
int numBytes) |
protected Object |
convertCitext(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
protected Object |
convertDecimal(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data,
JdbcValueConverters.DecimalMode mode) |
ValueConverter |
converter(Column column,
org.apache.kafka.connect.data.Field fieldDefn) |
protected Object |
convertGeography(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
protected Object |
convertGeometry(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
protected Object |
convertHStore(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data,
PostgresConnectorConfig.HStoreHandlingMode mode) |
private Object |
convertHstoreToJsonString(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
private Object |
convertHstoreToMap(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
protected Object |
convertInterval(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
private String |
convertMapToJsonStringRepresentation(Map<String,String> map) |
protected Object |
convertMoney(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
protected Object |
convertPoint(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data)
Converts a value representing a Postgres point for a column, to a Kafka Connect value.
|
protected Object |
convertString(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data)
Replaces toasted value with a placeholder
|
protected Object |
convertTime(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
protected Object |
convertTimestampToLocalDateTime(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
protected Object |
convertTimestampWithZone(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
protected Object |
convertTimeWithZone(Column column,
org.apache.kafka.connect.data.Field fieldDefn,
Object data) |
private ValueConverter |
createArrayConverter(Column column,
org.apache.kafka.connect.data.Field fieldDefn) |
protected int |
getTimePrecision(Column column) |
private org.apache.kafka.connect.data.SchemaBuilder |
hstoreSchema() |
private boolean |
isVariableScaleDecimal(Column column) |
private org.apache.kafka.connect.data.SchemaBuilder |
numericSchema(Column column) |
org.apache.kafka.connect.data.SchemaBuilder |
schemaBuilder(Column column) |
static Optional<SpecialValueDecimal> |
toSpecialValue(String value) |
byteOrderOfBitType, convertBigInt, convertBits, convertBoolean, convertByteArray, convertDateToEpochDays, convertDateToEpochDaysAsDate, convertDecimal, convertDouble, convertFloat, convertInteger, convertNumeric, convertReal, convertRowId, convertSmallInt, convertTimestampToEpochMicros, convertTimestampToEpochMillis, convertTimestampToEpochMillisAsDate, convertTimestampToEpochNanos, convertTimeToMicrosPastMidnight, convertTimeToMillisPastMidnight, convertTimeToMillisPastMidnightAsDate, convertTimeToNanosPastMidnight, convertTinyInt, convertValue, handleUnknownData, padLittleEndian, toBigDecimal, unexpectedBinaryprivate static final int VARIABLE_SCALE_DECIMAL_LENGTH
public static final String N_A_N
public static final String POSITIVE_INFINITY
public static final String NEGATIVE_INFINITY
private static final DateTimeFormatter TIME_WITH_TIMEZONE_FORMATTER
private static final Duration ONE_DAY
private static final long NANO_SECONDS_PER_DAY
private final boolean includeUnknownDatatypes
true if fields of data type not know should be handle as opaque binary;
false if they should be omittedprivate final TypeRegistry typeRegistry
private final PostgresConnectorConfig.HStoreHandlingMode hStoreMode
private final Charset databaseCharset
private final com.fasterxml.jackson.core.JsonFactory jsonFactory
private final String toastPlaceholderString
private final byte[] toastPlaceholderBinary
protected PostgresValueConverter(Charset databaseCharset, JdbcValueConverters.DecimalMode decimalMode, TemporalPrecisionMode temporalPrecisionMode, ZoneOffset defaultOffset, JdbcValueConverters.BigIntUnsignedMode bigIntUnsignedMode, boolean includeUnknownDatatypes, TypeRegistry typeRegistry, PostgresConnectorConfig.HStoreHandlingMode hStoreMode, byte[] toastPlaceholder)
public org.apache.kafka.connect.data.SchemaBuilder schemaBuilder(Column column)
schemaBuilder in interface ValueConverterProviderschemaBuilder in class JdbcValueConvertersprivate org.apache.kafka.connect.data.SchemaBuilder numericSchema(Column column)
private org.apache.kafka.connect.data.SchemaBuilder hstoreSchema()
public ValueConverter converter(Column column, org.apache.kafka.connect.data.Field fieldDefn)
converter in interface ValueConverterProviderconverter in class JdbcValueConvertersprivate ValueConverter createArrayConverter(Column column, org.apache.kafka.connect.data.Field fieldDefn)
protected Object convertTime(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
convertTime in class JdbcValueConvertersprotected Object convertDecimal(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data, JdbcValueConverters.DecimalMode mode)
protected Object convertHStore(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data, PostgresConnectorConfig.HStoreHandlingMode mode)
private Object convertHstoreToMap(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
private String asHstoreString(byte[] data)
"key 1"=>"value1", "key_2"=>"val 1"; i.e. the given byte
array is NOT the byte representation returned by HStoreConverter#toBytes(Map,
org.postgresql.core.Encoding)), but the String based representationprivate Object convertHstoreToJsonString(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
private String changePlainStringRepresentationToJsonStringRepresentation(String text)
private String convertMapToJsonStringRepresentation(Map<String,String> map)
protected Object convertBit(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
convertBit in class JdbcValueConvertersprotected Object convertBits(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data, int numBytes)
convertBits in class JdbcValueConvertersprotected Object convertMoney(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
protected Object convertInterval(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
protected Object convertTimestampWithZone(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
convertTimestampWithZone in class JdbcValueConvertersprotected Object convertTimeWithZone(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
convertTimeWithZone in class JdbcValueConvertersprotected Object convertGeometry(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
protected Object convertGeography(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
protected Object convertCitext(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
protected Object convertPoint(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
column - the JDBC column; never nullfieldDefn - the Connect field definition for this column; never nulldata - a data for the point column, either coming from the JDBC driver or logical decoding pluginprotected Object convertArray(Column column, org.apache.kafka.connect.data.Field fieldDefn, ValueConverter elementConverter, Object data)
private boolean isVariableScaleDecimal(Column column)
public static Optional<SpecialValueDecimal> toSpecialValue(String value)
protected Object convertTimestampToLocalDateTime(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
protected int getTimePrecision(Column column)
getTimePrecision in class JdbcValueConvertersprotected Object convertBinary(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
convertBinary in class JdbcValueConverterscolumn - the column definition describing the data value; never nullfieldDefn - the field definition; never nulldata - the data object to be converted into a Kafka Connect typeIllegalArgumentException - if the value could not be converted but the column does not allow nullsprotected Object convertString(Column column, org.apache.kafka.connect.data.Field fieldDefn, Object data)
convertString in class JdbcValueConverterscolumn - the column definition describing the data value; never nullfieldDefn - the field definition; never nulldata - the data object to be converted into a Kafka Connect typeIllegalArgumentException - if the value could not be converted but the column does not allow nullsCopyright © 2019 JBoss by Red Hat. All rights reserved.