Thanks Tom, for the explanation. Gokul.
On Sun, Feb 7, 2010 at 10:14 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Gokulakannan Somasundaram <gokul...@gmail.com> writes: > > Is there any reason why we have given lesser precedence for postfix > > operator compared to multiplication/division? Usually postfix operators > have > > more precedence than the binary operations. Is this some kind of work > around > > to provide user-defined operators? Can someone help me understand this? > > A bit of poking in the CVS logs for gram.y reveals > > 2001-01-23 17:39 tgl > > * src/backend/parser/gram.y: Give 'a_expr ::= a_expr Op' production > a slightly lower precedence than Op, so that the sequence 'a_expr > Op Op a_expr' will be parsed as a_expr Op (Op a_expr) not (a_expr > Op) Op a_expr as formerly. In other words, prefer treating > user-defined operators as prefix operators to treating them as > postfix operators, when there is an ambiguity. Also clean up a > couple of other infelicities in production priority assignment --- > for example, BETWEEN wasn't being given the intended priority, but > that of AND. > > There are several other nasty things that we've had to do in order to > keep supporting postfix operators at all. I thibk most people view them > as a legacy feature best avoided. > > regards, tom lane >