pike.git/
lib/
modules/
Sql.pmod/
pgsql_util.pmod
Branch:
Tag:
Non-build tags
All tags
No tags
2017-12-11
2017-12-11 22:09:52 by Stephen R. van den Berg <srb@cuci.nl>
a46919e524775576da3e2755551ab2a1edd0ceac (
38
lines) (+
35
/-
3
)
[
Show
|
Annotate
]
Branch:
master
pgsql: Support binary transfer IEEE float formats.
178:
case INT8OID: case INT2OID: case INT4OID:
+
case FLOAT4OID:
+
#if !constant(__builtin.__SINGLE_PRECISION_FLOAT__)
+
case FLOAT8OID:
+
#endif
case TEXTOID: case OIDOID: case XMLOID:
236:
case DATERANGEOID: case TSRANGEOID: case TSTZRANGEOID:
+
case FLOAT4OID:
+
#if !constant(__builtin.__SINGLE_PRECISION_FLOAT__)
+
case FLOAT8OID:
+
#endif
if (!stringp(value)) return 1; }
897:
mixed value; switch (typ) { case FLOAT4OID:
-
#if
SIZEOF
_FLOAT
>=8
+
#if
!constant(
_
_builtin.__SINGLE_PRECISION_
FLOAT
__)
case FLOAT8OID: #endif
-
+
if (_forcetext) {
if (!alltext) { value = (float)cr->read(collen); break; }
-
+
} else {
+
[ value ] = cr->sscanf(collen == 4 ? "%4F" : "%8F");
+
if (alltext)
+
value = (string)value;
+
break;
+
}
default:value = cr->read(collen); break; case CHAROID:
958:
} } value = __builtin.Range(from, till);
+
if (alltext)
+
value = (string)value;
} break; case CIDROID:
970:
value->masklen = cr->read_int8() + (iptype == 2 && 12*8); cr->read_int8(); // 0 == INET, 1 == CIDR value->address = cr->read_hint(1);
+
if (alltext)
+
value = (string)value;
} break; case TIMESTAMPOID:
1235:
while ((i += 2) < sizeof(totype)); } break;
+
case FLOAT4OID:
+
#if !constant(__builtin.__SINGLE_PRECISION_FLOAT__)
+
case FLOAT8OID:
+
#endif
+
if (stringp(value))
+
plugbuffer->add_hstring(value, 4);
+
else {
+
int w = dtoid[i] == FLOAT4OID ? 4 : 8;
+
plugbuffer->add_int32(w)
+
->sprintf(w == 4 ? "%4F" : "%8F", value);
+
}
+
break;
case INT8OID: plugbuffer->add_int32(8)->add_int((int)value, 8); break;