From: | "Thomas G(dot) Lockhart" <lockhart(at)alumni(dot)caltech(dot)edu> |
---|---|
To: | Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>, Postgres Hackers List <hackers(at)postgresql(dot)org> |
Subject: | Re: [HACKERS] Function call problems with BETWEEN |
Date: | 1998-03-11 04:44:38 |
Message-ID: | 350616B5.ADB2725F@alumni.caltech.edu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> I think I've tracked down a problem I see using the BETWEEN operator:
>
> postgres=> select 1 where float8(1) between 0.0 and 2.0;
> ERROR: transformExpr: does not know how to transform node 105
>
> I'm pretty sure that the problem stems from the fact that in gram.y the
> BETWEEN clause is expanded into the AND clauses as in the second
> example, _but_ the parse tree for the function call is reused! So,
> transformExpr() is run twice on the same part of the parse tree, and
> does not know how to cope.
> ...
> Another possible solution would be to have transformExpr() accept a
> previously transformed parse tree without damaging it. A simple minded
> fix having transformExpr() ignore the T_Const (the "105" node in the
> example) and T_Var nodes did not work.
Hmm. I forgot to set the return value for this. I now get:
postgres=> select 1 where float8(1) between 0.0 and 2.0;
?column?
--------
1
(1 row)
But I'm not really happy putting in this change without knowing what the
side effects might be. I'll go ahead and try the regression tests...
- Tom
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Yeung | 1998-03-11 04:47:46 | ODBC DRIVERS FOR 6.1/6.2 |
Previous Message | Thomas G. Lockhart | 1998-03-11 04:20:08 | Function call problems with BETWEEN |