Re: SQL function parse error ?

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Radu-Adrian Popescu <radu(dot)popescu(at)aldratech(dot)com>
Cc: Achilleus Mantzios <achill(at)matrix(dot)gatewaynet(dot)com>, <pgsql-sql(at)postgresql(dot)org>
Subject: Re: SQL function parse error ?
Date: 2003-01-09 15:47:29
Message-ID: 20030109073958.B91463-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Thu, 9 Jan 2003, Radu-Adrian Popescu wrote:

> Since you can overload and define new operators, the parser must - at some
> point in time - lookup the operator definition.
> It seems to me (but this is just an ideea), that the rules should go like
> this :
> ...
> check >$ is a defined operator
> if true,
> it is applied to left side and 1, in my example.
> if not,
> check that $1 is a valid expression (which it is)
> ...go on...
> This should do the trick. And you would be able to write leftSide>$$1 and
> would get the >$ operator applied to leftSide and $1.
> And leftSide>&1 would apply the >& operator to 1, and my code would then
> have a [very suble] bug.
> Simply put, operator precedence over local identifiers/parameters, which i
> belive is a de facto standard in most languages (no flames please !)
[It's only an issue when you can define

IIRC there are issues with allowing table lookups in parse phase which the
above would require (otherwise you couldn't find out if >$ is defined). I
believe it currently just makes an operator out of the longest sequence of
valid operator characters. Also, I'm not sure how you'd get the above to
work with bison which is a fairly big deal.

If you can write a solution that meets all of the arguments that were made
the last time there was a discussion about it, it'd probably be accepted.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2003-01-09 15:57:06 Re: SQL function parse error ?
Previous Message Radu-Adrian Popescu 2003-01-09 15:38:49 Re: SQL function parse error ?