@@ -7,8 +7,9 @@ import com.fasterxml.jackson.databind.JsonNode
7
7
import com.fasterxml.jackson.databind.ObjectMapper
8
8
import com.fasterxml.jackson.databind.node.ObjectNode
9
9
import io.airbyte.cdk.db.DataTypeUtils
10
+ import io.airbyte.cdk.db.DbAnalyticsUtils.dataTypesSerializationErrorMessage
10
11
import io.airbyte.cdk.db.JdbcCompatibleSourceOperations
11
- import io.airbyte.cdk.integrations.destination.jdbc.SqlOperations.Companion.LOGGER
12
+ import io.airbyte.cdk.integrations.base.AirbyteTraceMessageUtility
12
13
import io.airbyte.commons.json.Jsons
13
14
import io.airbyte.protocol.models.v0.AirbyteRecordMessageMeta
14
15
import io.airbyte.protocol.models.v0.AirbyteRecordMessageMetaChange
@@ -40,18 +41,25 @@ abstract class AbstractJdbcCompatibleSourceOperations<Datatype> :
40
41
41
42
for (i in 1 .. columnCount) {
42
43
val columnName = queryContext.metaData.getColumnName(i)
44
+ val columnTypeName = queryContext.metaData.getColumnTypeName(i)
43
45
try {
44
46
// convert to java types that will convert into reasonable json.
45
47
copyToJsonField(queryContext, i, jsonNode)
46
48
} catch (e: java.lang.Exception ) {
47
- LOGGER .info(" Failed to serialize column: {}, with error {}" , columnName, e.message)
49
+ LOGGER .info(
50
+ " Failed to serialize column: {}, of type {}, with error {}" ,
51
+ columnName,
52
+ columnTypeName,
53
+ e.message
54
+ )
55
+ AirbyteTraceMessageUtility .emitAnalyticsTrace(dataTypesSerializationErrorMessage())
48
56
metaChanges.add(
49
57
AirbyteRecordMessageMetaChange ()
50
58
.withField(columnName)
51
59
.withChange(AirbyteRecordMessageMetaChange .Change .NULLED )
52
60
.withReason(
53
- AirbyteRecordMessageMetaChange .Reason .SOURCE_SERIALIZATION_ERROR
54
- )
61
+ AirbyteRecordMessageMetaChange .Reason .SOURCE_SERIALIZATION_ERROR ,
62
+ ),
55
63
)
56
64
}
57
65
}
@@ -166,8 +174,8 @@ abstract class AbstractJdbcCompatibleSourceOperations<Datatype> :
166
174
columnName,
167
175
DataTypeUtils .returnNullIfInvalid(
168
176
{ resultSet.getDouble(index) },
169
- { d: Double? -> java.lang.Double .isFinite(d!! ) }
170
- )
177
+ { d: Double? -> java.lang.Double .isFinite(d!! ) },
178
+ ),
171
179
)
172
180
}
173
181
@@ -182,8 +190,8 @@ abstract class AbstractJdbcCompatibleSourceOperations<Datatype> :
182
190
columnName,
183
191
DataTypeUtils .returnNullIfInvalid(
184
192
{ resultSet.getFloat(index) },
185
- { f: Float? -> java.lang.Float .isFinite(f!! ) }
186
- )
193
+ { f: Float? -> java.lang.Float .isFinite(f!! ) },
194
+ ),
187
195
)
188
196
}
189
197
@@ -226,7 +234,7 @@ abstract class AbstractJdbcCompatibleSourceOperations<Datatype> :
226
234
) {
227
235
node.put(
228
236
columnName,
229
- DateTimeConverter .convertToTime(getObject(resultSet, index, LocalTime ::class .java))
237
+ DateTimeConverter .convertToTime(getObject(resultSet, index, LocalTime ::class .java)),
230
238
)
231
239
}
232
240
@@ -241,8 +249,8 @@ abstract class AbstractJdbcCompatibleSourceOperations<Datatype> :
241
249
node.put(
242
250
columnName,
243
251
DateTimeConverter .convertToTimestamp(
244
- getObject(resultSet, index, LocalDateTime ::class .java)
245
- )
252
+ getObject(resultSet, index, LocalDateTime ::class .java),
253
+ ),
246
254
)
247
255
} catch (e: Exception ) {
248
256
// for backward compatibility
@@ -450,7 +458,7 @@ abstract class AbstractJdbcCompatibleSourceOperations<Datatype> :
450
458
val localDate = timestamptz.toLocalDate()
451
459
node.put(
452
460
columnName,
453
- resolveEra(localDate, timestamptz.format(DataTypeUtils .TIMESTAMPTZ_FORMATTER ))
461
+ resolveEra(localDate, timestamptz.format(DataTypeUtils .TIMESTAMPTZ_FORMATTER )),
454
462
)
455
463
}
456
464
0 commit comments