Skip to content

Commit 7a8c8b8

Browse files
jpechanegunnarmorling
authored andcommitted
DBZ-2565 Process infinite timestamps
1 parent e29a258 commit 7a8c8b8

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

src/decoderbufs.c

+8-10
Original file line numberDiff line numberDiff line change
@@ -304,23 +304,21 @@ static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
304304
case TIMESTAMPOID:
305305
ts = DatumGetTimestamp(datum);
306306
if (TIMESTAMP_NOT_FINITE(ts)) {
307-
ereport(ERROR, (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
308-
errmsg("timestamp \'%s\'out of range", ts ? strVal(ts) : "(null)")));
307+
datum_msg->datum_int64 = ts;
309308
} else {
310309
datum_msg->datum_int64 = TIMESTAMPTZ_TO_USEC_SINCE_EPOCH(ts);
311-
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_INT64;
312-
break;
313310
}
311+
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_INT64;
312+
break;
314313
case TIMESTAMPTZOID:
315314
ts = DatumGetTimestampTz(datum);
316315
if (TIMESTAMP_NOT_FINITE(ts)) {
317-
ereport(ERROR, (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
318-
errmsg("timestamp \'%s\'out of range", ts ? strVal(ts) : "(null)")));
319-
} else {
316+
datum_msg->datum_int64 = ts;
317+
} else {
320318
datum_msg->datum_int64 = TIMESTAMPTZ_TO_USEC_SINCE_EPOCH(ts);
321-
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_INT64;
322-
break;
323-
}
319+
}
320+
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_INT64;
321+
break;
324322
case DATEOID:
325323
/* simply get the number of days as the stored 32 bit value and convert to EPOCH */
326324
datum_msg->datum_int32 = DATE_TO_DAYS_SINCE_EPOCH(DatumGetDateADT(datum));

0 commit comments

Comments
 (0)