Re: BETWEEN SYMMETRIC/ASYMMETRIC - Mailing list pgsql-hackers

From Tom Lane
Subject Re: BETWEEN SYMMETRIC/ASYMMETRIC
Date
Msg-id 26593.1018494560@sss.pgh.pa.us
Whole thread Raw
In response to Re: BETWEEN SYMMETRIC/ASYMMETRIC  ("Christopher Kings-Lynne" <chriskl@familyhealth.com.au>)
Responses Make text output more generic  ("Christopher Kings-Lynne" <chriskl@familyhealth.com.au>)
List pgsql-hackers
"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:
> Since it's really just two ways of writing the same thing, wouldn't bison
> just produce the exact same C code?  I'll rewrite it anyway for elegance,
> but just wondering...

The emitted code might or might not be the same --- but duplicate or
near-duplicate chunks of source code are always best avoided, if only
from a maintenance perspective.

>> BTW, I've forgotten whether your patch is purely syntactic or not,
>> but I'd really like to see someone fix things so that BETWEEN has its
>> own expression node tree type and is not expanded into some ugly
>> "A>=B and A<=C" equivalent.  This would (a) allow it to be
>> reverse-listed reasonably, and (b) eliminate redundant evaluations of
>> the subexpressions.

> It is purely syntactic.  Anyone want to give me a quick hint on how to make
> a new node tree type for BETWEEN?

Try chasing the references to another extant expression node type,
perhaps NullTest.  It's fairly straightforward, but tedious to teach
all the relevant places about it.

> What does reverse-listing mean as well?

reverse-listing is what src/backend/utils/adt/ruleutils.c does: produce
something readable from an internal node tree.  \d for a view, pg_dump,
and other useful things depend on this.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Neil Conway
Date:
Subject: Re: help with bison
Next
From: "Christopher Kings-Lynne"
Date:
Subject: Re: help with bison