Re: ipv6 patch #3 - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: ipv6 patch #3
Date
Msg-id 200306242242.h5OMgJo17884@candle.pha.pa.us
Whole thread Raw
In response to ipv6 patch #3  (Michael Graff <explorer@flame.org>)
Responses Re: ipv6 patch #3  (Michael Graff <explorer@flame.org>)
List pgsql-patches
I have applied the newest version of this patch.  I did find one warning
reported by my compiler:

    inet_net_ntop.c:273: warning: too many arguments for format
    inet_net_ntop.c:275: warning: too many arguments for format

I have applied the attached patch to prevent the warnings.  Please check
that the patch matches your intentions.

Thanks. I have been waiting for this patch for a long time.

FYI, I also changed the 631 oid because that was already used, probably
by a recent patch.

---------------------------------------------------------------------------

Michael Graff wrote:
> This includes several revisions from others.
>
> Major changes:
>
>         Add ipv6 address parsing support to 'inet' and 'cidr' data types.
>
>         Regression tests for IPv6 operations added.
>
>         Documentation updated to document IPv6 bits.
>
>         Stop treating IPv4 as an "unsigned int" and IPv6 as an array of
>         characters.  Instead, always use the array of characters so we
>         can have one function fits all.  This makes bitncmp(), addressOK(),
>         and several other functions "just work" on both address families.
>
>         add family() function which returns integer 4 or 6 for IPv4 or
>         IPv6.  (See examples below)  Note that to add this new function
>         you will need to dump/initdb/reload or find the correct magic
>         to add the function to the postgresql function catalogs.
>
>         IPv4 addresses always sort before IPv6.
>
>         On disk we use AF_INET for IPv4, and AF_INET+1 for IPv6 addresses.
>         This prevents the need for a dump and reload, but lets IPv6 parsing
>         work on machines without AF_INET6.
>
>         To select all IPv4 addresses from a table:
>
>                 select * from foo where family(addr) = 4 ...
>
>         Order by and other bits should all work.
>
> Regression tests pass, at least on my NetBSD machine.
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/backend/utils/adt/inet_net_ntop.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/inet_net_ntop.c,v
retrieving revision 1.13
diff -c -c -r1.13 inet_net_ntop.c
*** src/backend/utils/adt/inet_net_ntop.c    24 Jun 2003 22:21:22 -0000    1.13
--- src/backend/utils/adt/inet_net_ntop.c    24 Jun 2003 22:22:44 -0000
***************
*** 270,278 ****

      if (!double_colon) {
          if (bits < 128 - 32)
!             cp += SPRINTF((cp, "::", bits));
          else if (bits < 128 - 16)
!             cp += SPRINTF((cp, ":0", bits));
      }

      /* Format CIDR /width. */
--- 270,278 ----

      if (!double_colon) {
          if (bits < 128 - 32)
!             cp += SPRINTF((cp, "::%d", bits));
          else if (bits < 128 - 16)
!             cp += SPRINTF((cp, ":0%d", bits));
      }

      /* Format CIDR /width. */

pgsql-patches by date:

Previous
From: Larry Rosenman
Date:
Subject: Interval Patch
Next
From: Bruce Momjian
Date:
Subject: Re: [GENERAL] Bug in metaphone (contrib/fuzzystrmatch)