From d4eb4227e3f26a1e8fb9e904d770ac484913002b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20Dub=C3=A9?= Date: Tue, 14 May 2024 23:27:05 +0000 Subject: [PATCH] replace infinite time values from postgres with NULL (#1720) --- flow/connectors/postgres/qvalue_convert.go | 24 ++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/flow/connectors/postgres/qvalue_convert.go b/flow/connectors/postgres/qvalue_convert.go index ef12fd61c4..246da6b49a 100644 --- a/flow/connectors/postgres/qvalue_convert.go +++ b/flow/connectors/postgres/qvalue_convert.go @@ -247,11 +247,19 @@ func parseFieldFromQValueKind(qvalueKind qvalue.QValueKind, value interface{}) ( switch qvalueKind { case qvalue.QValueKindTimestamp: - timestamp := value.(time.Time) - return qvalue.QValueTimestamp{Val: timestamp}, nil + switch val := value.(type) { + case time.Time: + return qvalue.QValueTimestamp{Val: val}, nil + case pgtype.InfinityModifier: + return qvalue.QValueNull(qvalueKind), nil + } case qvalue.QValueKindTimestampTZ: - timestamp := value.(time.Time) - return qvalue.QValueTimestampTZ{Val: timestamp}, nil + switch val := value.(type) { + case time.Time: + return qvalue.QValueTimestampTZ{Val: val}, nil + case pgtype.InfinityModifier: + return qvalue.QValueNull(qvalueKind), nil + } case qvalue.QValueKindInterval: intervalObject := value.(pgtype.Interval) var interval datatypes.PeerDBInterval @@ -274,8 +282,12 @@ func parseFieldFromQValueKind(qvalueKind qvalue.QValueKind, value interface{}) ( return qvalue.QValueString{Val: string(intervalJSON)}, nil case qvalue.QValueKindDate: - date := value.(time.Time) - return qvalue.QValueDate{Val: date}, nil + switch val := value.(type) { + case time.Time: + return qvalue.QValueDate{Val: val}, nil + case pgtype.InfinityModifier: + return qvalue.QValueNull(qvalueKind), nil + } case qvalue.QValueKindTime: timeVal := value.(pgtype.Time) if timeVal.Valid {