Re: macaddr data type issue

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Justin Clift <justin(at)postgresql(dot)org>
Cc: Gayland Gump <gumpg(at)pacifier(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: macaddr data type issue
Date: 2001-08-21 18:39:43
Message-ID: 9915.998419183@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Justin Clift <justin(at)postgresql(dot)org> writes:
> What you're attempting to insert is being interpreted as the NULL value

Actually, it's not NULL. The curious behavior comes from a test in the
macaddr_out routine that causes it to produce an empty-string display if
the MAC address is all zeroes:

if ((hibits(addr) > 0) || (lobits(addr) > 0))
{
sprintf(result, "%02x:%02x:%02x:%02x:%02x:%02x",
addr->a, addr->b, addr->c, addr->d, addr->e, addr->f);
}
else
{
result[0] = '\0'; /* special case for missing address */
}

This seems a tad bizarre to me, if not an outright bug. The right,
SQL-approved way to represent "missing data" is as a NULL; there's no
rationale I can see for treating an all-zeroes address like this.

There's also a special case in macaddr_in that accepts an empty input
string as meaning an all-zeroes address. This seems bogus as well.

I'm inclined to rip out both special cases, so that an all-zeroes MAC
address is handled exactly like any other address. Comments?

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jason Earl 2001-08-21 18:52:24 Re: time interval question
Previous Message Gilles DAROLD 2001-08-21 18:35:25 Re: [HACKERS] Postgresql log analyzer