Re: BETWEEN Help - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: BETWEEN Help
Date
Msg-id 200204150006.g3F065a17587@candle.pha.pa.us
Whole thread Raw
In response to Re: BETWEEN Help  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-patches
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Tom Lane wrote:
> >> Yup, that's one place that will need to be taught about it.
>
> > That was actually a reason I was wondering if it was worth changing our
> > current BETWEEN code.  The optimizer already is complicated and trying
> > to do BETWEEN rather than the more simpler statements didn't seem like a
> > win.
>
> Actually, an explicit representation of BETWEEN will *help* the
> optimizer; right now it has to try to recognize range restrictions
> by matching up '>' and '<' clauses.  That's a mess already, and I
> had no intention of trying to extend that logic to recognize the
> clause structures that BETWEEN SYMMETRIC would put out if it weren't
> a primitive node type.  But if it's a node then recognizing it is
> a no-brainer.  See clausesel.c.

Oh, good.  Another issue is that "nocachefunc() BETWEEN 1 and 2" should
call the function only once, which my AND/OR hack didn't do.   I can
imagine random() working strangely with BETWEEN.

I just tried:

    test=> select 1 where random() between 0.49999 and 0.5000;

in current CVS and it clearly is printing 1 more often that it should. :-(

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: BETWEEN Help
Next
From: Tom Lane
Date:
Subject: Re: Commands/ directory reorganisation