Re: BUG #13829: Exponentiation operator is left-associative
От | Henrik Pauli |
---|---|
Тема | Re: BUG #13829: Exponentiation operator is left-associative |
Дата | |
Msg-id | 56798070.40702@uhusystems.com обсуждение исходный текст |
Ответ на | Re: BUG #13829: Exponentiation operator is left-associative (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: BUG #13829: Exponentiation operator is left-associative
|
Список | pgsql-bugs |
On 22/12/15 17:00, Tom Lane wrote: > henrik.pauli@uhusystems.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. The custom operator thing is one of those situations I didn't think of and that's a reasonable problem there. That said, I guess the (few) users with things like a^b^c in their code also find it "mighty surprising" that it isn't a^(b^c). So one side is left scratching their heads either way. > 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 Might well be enough, not sure. Some parts of the documentation do come with little "Note" boxes in the text (can't quite remember an exact example, but I seem to remember there being such), which increase visibility to such discrepancy more effectively. Might be worth a sentence or two. I guess if there hasn't been a report before (no idea), people just don't do this in Postgres and so haven't been bitten by it at all.
В списке pgsql-bugs по дате отправления: