Skip to content

Commit 1af195b

Browse files
committed
Fix double qual values failing to convert. Closes #243
1 parent 715baf2 commit 1af195b

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

fdw/common.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,13 @@ typedef struct FdwDeparsedSortGroup
9393

9494
// datum.c
9595
char *datumString(Datum datum, ConversionInfo *cinfo);
96+
int64 datumInt16(Datum datum, ConversionInfo *cinfo);
97+
int64 datumInt32(Datum datum, ConversionInfo *cinfo);
9698
int64 datumInt64(Datum datum, ConversionInfo *cinfo);
9799
inet *datumInet(Datum datum, ConversionInfo *cinfo);
98100
inet *datumCIDR(Datum datum, ConversionInfo *cinfo);
99-
double datumDouble(Datum datum, ConversionInfo *cinfo);
101+
double datumFloat4(Datum datum, ConversionInfo *cinfo);
102+
double datumFloat8(Datum datum, ConversionInfo *cinfo);
100103
bool datumBool(Datum datum, ConversionInfo *cinfo);
101104
Jsonb *datumJsonb(Datum datum, ConversionInfo *cinfo);
102105
Timestamp datumDate(Datum datum, ConversionInfo *cinfo);

fdw/datum.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,27 @@ inet *datumInet(Datum datum, ConversionInfo *cinfo) {
1818
return DatumGetInetPP(datum);
1919
}
2020

21+
22+
int64 datumInt16(Datum datum, ConversionInfo *cinfo) {
23+
return DatumGetInt16(datum);
24+
}
25+
26+
int64 datumInt32(Datum datum, ConversionInfo *cinfo) {
27+
return DatumGetInt32(datum);
28+
}
29+
2130
int64 datumInt64(Datum datum, ConversionInfo *cinfo) {
2231
return DatumGetInt64(datum);
2332
}
2433

25-
double datumDouble(Datum datum, ConversionInfo *cinfo) {
34+
double datumFloat4(Datum datum, ConversionInfo *cinfo) {
2635
return DatumGetFloat4(datum);
2736
}
2837

38+
double datumFloat8(Datum datum, ConversionInfo *cinfo) {
39+
return DatumGetFloat8(datum);
40+
}
41+
2942
bool datumBool(Datum datum, ConversionInfo *cinfo) {
3043
return DatumGetBool(datum);
3144
}

quals.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -427,10 +427,16 @@ func datumToQualValue(datum C.Datum, typeOid C.Oid, cinfo *C.ConversionInfo) (re
427427
break
428428
}
429429
result.Value = &proto.QualValue_TimestampValue{TimestampValue: timestamp}
430-
case C.INT2OID, C.INT4OID, C.INT8OID:
430+
case C.INT2OID:
431+
result.Value = &proto.QualValue_Int64Value{Int64Value: int64(C.datumInt16(datum, cinfo))}
432+
case C.INT4OID:
433+
result.Value = &proto.QualValue_Int64Value{Int64Value: int64(C.datumInt32(datum, cinfo))}
434+
case C.INT8OID:
431435
result.Value = &proto.QualValue_Int64Value{Int64Value: int64(C.datumInt64(datum, cinfo))}
432436
case C.FLOAT4OID:
433-
result.Value = &proto.QualValue_DoubleValue{DoubleValue: float64(C.datumDouble(datum, cinfo))}
437+
result.Value = &proto.QualValue_DoubleValue{DoubleValue: float64(C.datumFloat4(datum, cinfo))}
438+
case C.FLOAT8OID:
439+
result.Value = &proto.QualValue_DoubleValue{DoubleValue: float64(C.datumFloat8(datum, cinfo))}
434440
case C.BOOLOID:
435441
result.Value = &proto.QualValue_BoolValue{BoolValue: bool(C.datumBool(datum, cinfo))}
436442
case C.JSONBOID:

0 commit comments

Comments
 (0)