pike.git / lib / modules / Sql.pmod / pgsql_util.pmod

version» Context lines:

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;