DBZ-1498 Provide precise interval value
parent
3c910fff12
commit
0c48018ddb
|
@ -261,9 +261,7 @@ static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
||||||
const char *output = NULL;
|
const char *output = NULL;
|
||||||
Point *p = NULL;
|
Point *p = NULL;
|
||||||
Timestamp ts;
|
Timestamp ts;
|
||||||
double duration;
|
|
||||||
TimeTzADT *timetz = NULL;
|
TimeTzADT *timetz = NULL;
|
||||||
Interval *interval = NULL;
|
|
||||||
Decoderbufs__Point dp = DECODERBUFS__POINT__INIT;
|
Decoderbufs__Point dp = DECODERBUFS__POINT__INIT;
|
||||||
|
|
||||||
int size = 0;
|
int size = 0;
|
||||||
|
@ -308,6 +306,7 @@ static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
||||||
case BITOID:
|
case BITOID:
|
||||||
case VARBITOID:
|
case VARBITOID:
|
||||||
case UUIDOID:
|
case UUIDOID:
|
||||||
|
case INTERVALOID:
|
||||||
output = OidOutputFunctionCall(typoutput, datum);
|
output = OidOutputFunctionCall(typoutput, datum);
|
||||||
datum_msg->datum_string = pnstrdup(output, strlen(output));
|
datum_msg->datum_string = pnstrdup(output, strlen(output));
|
||||||
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_STRING;
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_STRING;
|
||||||
|
@ -347,15 +346,6 @@ static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
||||||
datum_msg->datum_double = (double) (timetz->time + (timetz->zone * 1000000.0));
|
datum_msg->datum_double = (double) (timetz->time + (timetz->zone * 1000000.0));
|
||||||
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_DOUBLE;
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_DOUBLE;
|
||||||
break;
|
break;
|
||||||
case INTERVALOID:
|
|
||||||
interval = DatumGetIntervalP(datum);
|
|
||||||
/*
|
|
||||||
Convert the month part of Interval to days using assumed average month length of 365.25/12.0 days.
|
|
||||||
*/
|
|
||||||
duration = interval->time + interval->day * (double) USECS_PER_DAY + interval->month * ((DAYS_PER_YEAR / (double) MONTHS_PER_YEAR) * USECS_PER_DAY);
|
|
||||||
datum_msg->datum_double = duration;
|
|
||||||
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_DOUBLE;
|
|
||||||
break;
|
|
||||||
case BYTEAOID:
|
case BYTEAOID:
|
||||||
valptr = DatumGetByteaPCopy(datum);
|
valptr = DatumGetByteaPCopy(datum);
|
||||||
size = VARSIZE(valptr) - VARHDRSZ;
|
size = VARSIZE(valptr) - VARHDRSZ;
|
||||||
|
|
Loading…
Reference in New Issue