Martijn van Oosterhout <[EMAIL PROTECTED]> writes: > On Tue, Oct 28, 2008 at 12:38:09PM -0400, Tom Lane wrote: >> Right offhand, I don't see any alternative but to make both ROWS and >> RANGE reserved. It's pretty annoying since that might break existing >> applications that have been using these as identifiers, but the SQL >> committee seems to care little about that :-(
> Given that the only problematic case is if expr_list ends with a > postfix operator, wouldn't it be sufficient to simply decree that in > that case you need parentheses? Seems a lot less painful than adding > two reserved words. Hmm ... actually, it might be possible to fix it with a suitable precedence declaration? The trick is to make sure that in ... ORDER BY foo ! ROWS ... the operator is taken as postfix not infix, which is the exact opposite of what we did for AS-less column aliases (and, in fact, is the opposite of what bison will do by default, IIRC). So it might be possible to fix by attaching some new precedence level to the ROWS token. On the other hand, this would still mean that ROWS acts oddly differently from any other column name, and in a way that would be hard to explain or document. So I'm really not sure that this is a better solution than reserving it. Still another trick in our toolbox is to use merged tokens to fix the lack of lookahead. If I read the spec correctly, the problematic cases of ROWS and RANGE must be followed by UNBOUNDED or BETWEEN, so folding these token pairs into four merged-tokens would get rid of the need to reserve anything. Merged tokens create their own little oddities too though, as I was just complaining to Peter. I wonder whether it would be possible to improve on that problem by arranging some way for the grammar to signal the lexer about whether lookahead is needed, and thus not do the merging in contexts where it couldn't be appropriate. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers