From: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | Dan Langille <dan(at)langille(dot)org> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: inet versus text for ip addresses |
Date: | 2003-07-21 03:47:04 |
Message-ID: | 200307210347.h6L3l4L23262@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Dan Langille wrote:
> The PostgreSQL inet datatype stores an holds an IP host address, and
> optionally the identity of the subnet it is in, all in one field.
> This requires 12 bytes.
>
> Using my "random" data of approximately 8000 IP addresses collected
> during previous polls, I've found the average length of an IP address
> is 13.1 bytes. An integer requires 4 bytes.
>
> First question: Why not store an option to store just an IP address?
> That should require less than the 12 bytes for inet.
We store inet and cidr in similar structures, and they are of variable
length (4 byte overhead):
/*
* This is the internal storage format for IP addresses
* (both INET and CIDR datatypes):
*/
typedef struct
{
unsigned char family;
unsigned char bits;
unsigned char type;
union
{
unsigned int ipv4_addr; /* network byte order */
/* add IPV6 address type here */
} addr;
} inet_struct;
/*
* Both INET and CIDR addresses are represented within Postgres as varlena
* objects, ie, there is a varlena header (basically a length word) in front
* of the struct type depicted above.
*
* Although these types are variable-length, the maximum length
* is pretty short, so we make no provision for TOASTing them.
*/
typedef struct varlena inet;
In 7.4, we support IPv6, so they will be even larger.
--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
From | Date | Subject | |
---|---|---|---|
Next Message | Wolfgang Slany | 2003-07-21 09:30:50 | Re: "Truncate [ Table ] name [Cascade]"? |
Previous Message | Oleg Bartunov | 2003-07-20 07:44:49 | Re: Join table with itself for heirarchial system? |