Re: BUG #13829: Exponentiation operator is left-associative

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: henrik(dot)pauli(at)uhusystems(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #13829: Exponentiation operator is left-associative
Date: 2015-12-22 16:00:47
Message-ID: 14107.1450800047@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

henrik(dot)pauli(at)uhusystems(dot)com writes:
> The convention with exponentation is the following (according to Wikipedia):
> "Without parentheses to modify the order of calculation, by convention the
> order is top-down, not bottom-up" -- in programming terms, it means that
> exponentation is by default right-associative.
> ...
> However, PostgreSQL -- as indeed mentioned in the docs -- considers the
> paren-less version more like the one where the left side is parenthesised:

Yeah. I can't see us changing this. Aside from backwards-compatibility
considerations, "^" is not so thoroughly identified with exponentiation
that no-one would ever make a custom operator named "^" that did something
else. Since operator precedence and associativity are determined solely
by the operator name, right-to-left associativity would have to apply to
such custom operators too, which would be mighty surprising if their
semantics were something else.

However, pointing the issue out somewhere near Table 9-2. Mathematical
Operators seems reasonable. The minimum change would just be to call it
out in the table entry itself:

Operator Description Example Result
...
^ exponentiation (associates left to right) 2.0 ^ 3.0 8

Do you think that's sufficient?

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Kevin Grittner 2015-12-22 16:31:56 Re: Fwd: Cannot log in as newly created user EXTRA INFO
Previous Message Kevin Grittner 2015-12-22 15:49:06 Re: BUG #13824: EXISTS sometimes uses seq scan instead of index