pike.git
/
lib
/
modules
/
Sql.pmod
/
pgsql_util.pmod
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/lib/modules/Sql.pmod/pgsql_util.pmod:183:
case XMLOID: case DATEOID: case TIMEOID: case TIMETZOID: case TIMESTAMPOID: case TIMESTAMPTZOID: case INTERVALOID: case MACADDROID: case BPCHAROID: case VARCHAROID:
+
case CIDROID:
+
case INETOID:
case CTIDOID: case UUIDOID: return 1; //binary } return 0; // text } private int writeoidformat(int oid, array(string|int) paramValues, array(int) ai) { mixed value = paramValues[ai[0]++];
pike.git/lib/modules/Sql.pmod/pgsql_util.pmod:209:
case INT4OID: case TEXTOID: case OIDOID: case XMLOID: case MACADDROID: case BPCHAROID: case VARCHAROID: case CTIDOID: case UUIDOID: return 1; //binary
+
case CIDROID:
+
case INETOID:
case DATEOID: case TIMEOID: case TIMETZOID: case TIMESTAMPOID: case TIMESTAMPTZOID: case INTERVALOID: if (!stringp(value)) return 1; } return 0; // text
pike.git/lib/modules/Sql.pmod/pgsql_util.pmod:901:
break; case TEXTOID: case BPCHAROID: case VARCHAROID: value = cr->read(collen); if (cenc == UTF8CHARSET && catch(value = utf8_to_string(value)) && !serror) serror = SERROR("%O contains non-%s characters\n", value, UTF8CHARSET); break;
+
case CIDROID:
+
case INETOID:
+
if (_forcetext)
+
value = cr->read(collen);
+
else {
+
value = __builtin.Sql.Inet();
+
cr->read_int8(); // 2 == IPv4, 3 == IPv6
+
value->masklen = cr->read_int8();
+
cr->read_int8(); // 0 == INET, 1 == CIDR
+
value->address = cr->read_hstring(1);
+
}
+
break;
case TIMESTAMPOID: case TIMESTAMPTZOID: case INTERVALOID: case TIMETZOID: case TIMEOID: case DATEOID: if (_forcetext) value = cr->read(collen); else { array totype = oidtotype[typ];
pike.git/lib/modules/Sql.pmod/pgsql_util.pmod:1099:
SUSERERROR( "\"char\" types must be 1 byte wide, got %O\n", value); case 0: plugbuffer->add_int32(-1); // NULL break; case 1: plugbuffer->add_hstring(value[0], 4); } } break;
+
case CIDROID:
+
case INETOID:
+
if (stringp(value))
+
plugbuffer->add_hstring(value, 4);
+
else
+
plugbuffer->add_int32(4 + sizeof(value->address))
+
->add_int8(sizeof(value->address) == 4 ? 2 : 3)
+
->add_int8(value->masklen)
+
->add_int8(dtoid[i] == CIDROID)
+
->add_hstring(value->address, 1);
+
break;
+
break;
case DATEOID: case TIMEOID: case TIMETZOID: case INTERVALOID: case TIMESTAMPOID: case TIMESTAMPTZOID:
-
if (stringp(value))
{
+
if (stringp(value))
plugbuffer->add_hstring(value, 4);
-
}
else {
+
else {
array totype = oidtotype[dtoid[i]]; if (!objectp(value)) value = totype[0](value); plugbuffer->add_int32(totype[1]); int i = 2; do plugbuffer->add_int(value[totype[i]], totype[i+1]); while ((i += 2) < sizeof(totype)); } break;