Re: BUG #6080: information_schema.columns.column_default contains NULL inconsistently

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Chris Bandy <bandy(dot)chris(at)gmail(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #6080: information_schema.columns.column_default contains NULL inconsistently
Date: 2011-07-03 16:31:15
Message-ID: 29289.1309710675@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Chris Bandy <bandy(dot)chris(at)gmail(dot)com> writes:
> On Fri, Jul 1, 2011 at 10:35 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> But AFAICS there is room for implementation dependency in other cases.
>> In the particular cases you show here, PG recognizes some of them as
>> being equivalent to not having a default value, so for efficiency's sake
>> it converts them to that form.

> That makes sense, too. Perhaps I am naive, but a null is a null,
> right? Is the different presentation of defaults for "d" and "e"
> indicative of an *in*efficiency in PG?

Yeah, it's intentional though. What the printout is not telling you
is that there's a hidden cast function invocation to enforce the length
limit in the cases where the column has an explicit length limit. That
is, under the hood the expression is really more like "varchar(NULL, 1)".
The code that recognizes a default expression as being just constant
NULL doesn't think this is a constant NULL. In principle it could
recognize that, since the cast function is marked strict, but so far
it has not seemed worth the trouble.

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Sidney Cadot 2011-07-04 14:30:03 BUG #6089: error in documentation: incorrect string literal for SSL mode; 'disabled' vs 'disable'
Previous Message Magnus Hagander 2011-07-03 11:19:04 Re: BUG #6082: server segfault - pg_stat_reset_shared(null)