Re: json/jsonb/hstore operator precedence

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Jim Nasby <jim(at)nasby(dot)net>
Cc: Greg Stark <stark(at)mit(dot)edu>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: json/jsonb/hstore operator precedence
Date: 2014-04-01 22:07:42
Message-ID: 533B38AE.80008@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


On 04/01/2014 05:42 PM, Jim Nasby wrote:
> On 4/1/14, 3:07 PM, Andrew Dunstan wrote:
>>> What are cases where things would break if we changed the precedence
>>> of -> and ->>? ISTM that's what we really should do if there's some
>>> way to manage the backwards compatibility...
>>
>>
>> There is no provision for setting the precedence of any operators.
>> The precedence is set in the grammar, and these all have the same
>> precedence. What you're suggesting would a cure far worse than the
>> disease, I strongly suspect. You just need to learn to live with this.
>>
>> What really bugs me about the example is that <> has a different
>> precedence from =, which seems more than odd. The example works just
>> fine if you use = instead of <>. But I guess it's been that way for a
>> very long time and there's not much to be done about it.
>
> I'm confused... first you say there's no precedence and then you're
> saying that there is? Which is it?

No I didn't say there was no precedence. Please reread what I said. I
said there was no provision for setting the precedence. There is
precedence of course, but it's hardcoded.

>
> ISTM that most languages set the priority of de-referencing operators
> to be quite high, so I don't see how that would be a disaster?

The way the grammar works ALL the composite operators have the same
precedence. It has no notion that -> is a dereference operator. You're
suggesting something without actually looking at the code. Look at
gram.y and scan.l and you might understand.

>
> Of course, changing the precedence of = and <> certainly would be a
> disaster; I'm not suggesting that.

There is arguably nothing wrong with the precedence of -> and ->>. The
reason for the problem Greg reported is that <> probably has its
precedence set too low. And no, we can't change it.

cheers

andrew

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Merlin Moncure 2014-04-01 23:28:43 Re: using arrays within structure in ECPG
Previous Message Jim Nasby 2014-04-01 21:42:18 Re: json/jsonb/hstore operator precedence