Branch: Tag:

2017-12-07

2017-12-07 01:24:12 by Stephen R. van den Berg <srb@cuci.nl>

pgsql: Make use of native Inet data type.

190:    case MACADDROID:    case BPCHAROID:    case VARCHAROID: +  case CIDROID: +  case INETOID:    case CTIDOID:    case UUIDOID:    return 1; //binary
216:    case CTIDOID:    case UUIDOID:    return 1; //binary +  case CIDROID: +  case INETOID:    case DATEOID:    case TIMEOID:    case TIMETZOID:
908:    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:
1106:    }    }    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);