Re: pg_get_constraintdef() doesn't always give an equal constraint

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Jeff Davis <pgsql(at)j-davis(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: pg_get_constraintdef() doesn't always give an equal constraint
Date: 2015-03-30 16:21:57
Message-ID: 17189.1427732517@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Jeff Davis <pgsql(at)j-davis(dot)com> writes:
> On Sat, 2015-03-28 at 15:08 -0400, Tom Lane wrote:
>> Basically, I think we have to change ruleutils so that it quotes anything
>> that wouldn't be seen as a simple integer or numeric constant by the
>> lexer+grammar.
>>
>> The attached patch does this; the regression test changes illustrate
>> what's going to happen to the output if we do this.

> This fixes my problem, thank you.

OK. Given the lack of other suggestions, let's press forward with
fixing it this way.

> There are two switch statements in that function, and they have
> overlapping purposes. Can't we just always set needlabel in the first
> switch statement, and remove the second switch statement?

Meh. The two switches are considering different things and don't have
exactly the same set of switch labels, so I don't really see that as
an improvement ...

> When I refactored it to do that (attached), I noticed that if showtype
> == -1, it returns before appending the collation. I don't see any reason
> those should be related, so I removed the early return (I don't think
> there's an actual bug there, though).

... especially since this change is outright wrong. showtype == -1
implies that the caller is going to print a cast; we cannot insert a
COLLATE clause in the middle of that without breaking things. (It may
be that this case is unreachable because a vanilla Const would never
have nondefault collation, but that doesn't make it a good change.)

>> Looking at the changes, I'm not 100% convinced we want to back-patch.
>> As you say, nobody's complained of this problem before, and I'm worried
>> that people will see the output changes as a bigger deal than the issue
>> we're trying to fix.

> Fine with me.

Agreed, we'll fix HEAD only.

regards, tom lane

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message root 2015-03-30 16:22:47 BUG #12918: Segfault in BackendIdGetTransactionIds
Previous Message Jon Jensen 2015-03-30 16:13:58 Re: pg_get_constraintdef() doesn't always give an equal constraint