Fixing bug after merging oneof use in protobuf definition
parent
ba4a480643
commit
6fe0d68393
|
@ -370,34 +370,41 @@ static bool geography_point_as_decoderbufs_point(Datum datum,
|
||||||
static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
||||||
Oid typoutput, Datum datum) {
|
Oid typoutput, Datum datum) {
|
||||||
Numeric num;
|
Numeric num;
|
||||||
bytea *valptr;
|
bytea *valptr = NULL;
|
||||||
const char *output;
|
const char *output = NULL;
|
||||||
Point *p;
|
Point *p = NULL;
|
||||||
int size = 0;
|
int size = 0;
|
||||||
switch (typid) {
|
switch (typid) {
|
||||||
case BOOLOID:
|
case BOOLOID:
|
||||||
datum_msg->datum_bool = DatumGetBool(datum);
|
datum_msg->datum_bool = DatumGetBool(datum);
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_BOOL;
|
||||||
break;
|
break;
|
||||||
case INT2OID:
|
case INT2OID:
|
||||||
datum_msg->datum_int32 = DatumGetInt16(datum);
|
datum_msg->datum_int32 = DatumGetInt16(datum);
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_INT32;
|
||||||
break;
|
break;
|
||||||
case INT4OID:
|
case INT4OID:
|
||||||
datum_msg->datum_int32 = DatumGetInt32(datum);
|
datum_msg->datum_int32 = DatumGetInt32(datum);
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_INT32;
|
||||||
break;
|
break;
|
||||||
case INT8OID:
|
case INT8OID:
|
||||||
case OIDOID:
|
case OIDOID:
|
||||||
datum_msg->datum_int64 = DatumGetInt64(datum);
|
datum_msg->datum_int64 = DatumGetInt64(datum);
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_INT64;
|
||||||
break;
|
break;
|
||||||
case FLOAT4OID:
|
case FLOAT4OID:
|
||||||
datum_msg->datum_float = DatumGetFloat4(datum);
|
datum_msg->datum_float = DatumGetFloat4(datum);
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_FLOAT;
|
||||||
break;
|
break;
|
||||||
case FLOAT8OID:
|
case FLOAT8OID:
|
||||||
datum_msg->datum_double = DatumGetFloat8(datum);
|
datum_msg->datum_double = DatumGetFloat8(datum);
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_DOUBLE;
|
||||||
break;
|
break;
|
||||||
case NUMERICOID:
|
case NUMERICOID:
|
||||||
num = DatumGetNumeric(datum);
|
num = DatumGetNumeric(datum);
|
||||||
if (!numeric_is_nan(num)) {
|
if (!numeric_is_nan(num)) {
|
||||||
datum_msg->datum_double = numeric_to_double_no_overflow(num);
|
datum_msg->datum_double = numeric_to_double_no_overflow(num);
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_DOUBLE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CHAROID:
|
case CHAROID:
|
||||||
|
@ -409,6 +416,7 @@ static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
||||||
case UUIDOID:
|
case UUIDOID:
|
||||||
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;
|
||||||
break;
|
break;
|
||||||
case TIMESTAMPOID:
|
case TIMESTAMPOID:
|
||||||
/*
|
/*
|
||||||
|
@ -417,6 +425,7 @@ static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
||||||
case TIMESTAMPTZOID:
|
case TIMESTAMPTZOID:
|
||||||
output = timestamptz_to_str(DatumGetTimestampTz(datum));
|
output = timestamptz_to_str(DatumGetTimestampTz(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;
|
||||||
break;
|
break;
|
||||||
case BYTEAOID:
|
case BYTEAOID:
|
||||||
valptr = DatumGetByteaPCopy(datum);
|
valptr = DatumGetByteaPCopy(datum);
|
||||||
|
@ -424,6 +433,7 @@ static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
||||||
datum_msg->datum_bytes.data = palloc(size);
|
datum_msg->datum_bytes.data = palloc(size);
|
||||||
memcpy(datum_msg->datum_bytes.data, (uint8_t *)VARDATA(valptr), size);
|
memcpy(datum_msg->datum_bytes.data, (uint8_t *)VARDATA(valptr), size);
|
||||||
datum_msg->datum_bytes.len = size;
|
datum_msg->datum_bytes.len = size;
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_BYTES;
|
||||||
break;
|
break;
|
||||||
case POINTOID:
|
case POINTOID:
|
||||||
p = DatumGetPointP(datum);
|
p = DatumGetPointP(datum);
|
||||||
|
@ -432,6 +442,7 @@ static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
||||||
dp.y = p->y;
|
dp.y = p->y;
|
||||||
datum_msg->datum_point = palloc(sizeof(Decoderbufs__Point));
|
datum_msg->datum_point = palloc(sizeof(Decoderbufs__Point));
|
||||||
memcpy(datum_msg->datum_point, &dp, sizeof(dp));
|
memcpy(datum_msg->datum_point, &dp, sizeof(dp));
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_POINT;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// PostGIS uses dynamic OIDs so we need to check the type again here
|
// PostGIS uses dynamic OIDs so we need to check the type again here
|
||||||
|
@ -439,6 +450,7 @@ static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
||||||
elog(DEBUG1, "Converting geography point to datum_point");
|
elog(DEBUG1, "Converting geography point to datum_point");
|
||||||
datum_msg->datum_point = palloc(sizeof(Decoderbufs__Point));
|
datum_msg->datum_point = palloc(sizeof(Decoderbufs__Point));
|
||||||
geography_point_as_decoderbufs_point(datum, datum_msg->datum_point);
|
geography_point_as_decoderbufs_point(datum, datum_msg->datum_point);
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_POINT;
|
||||||
} else {
|
} else {
|
||||||
elog(WARNING, "Encountered unknown typid: %d, using bytes", typid);
|
elog(WARNING, "Encountered unknown typid: %d, using bytes", typid);
|
||||||
output = OidOutputFunctionCall(typoutput, datum);
|
output = OidOutputFunctionCall(typoutput, datum);
|
||||||
|
@ -447,6 +459,7 @@ static void set_datum_value(Decoderbufs__DatumMessage *datum_msg, Oid typid,
|
||||||
datum_msg->datum_bytes.data = palloc(size);
|
datum_msg->datum_bytes.data = palloc(size);
|
||||||
memcpy(datum_msg->datum_bytes.data, (uint8_t *)output, size);
|
memcpy(datum_msg->datum_bytes.data, (uint8_t *)output, size);
|
||||||
datum_msg->datum_bytes.len = len;
|
datum_msg->datum_bytes.len = len;
|
||||||
|
datum_msg->datum_case = DECODERBUFS__DATUM_MESSAGE__DATUM_DATUM_BYTES;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue