agora inbox for pgsql-sql@postgresql.org  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: Josh Berkus <josh@agliodbs.com>
Cc: Tim Dudgeon <tdudgeon.ml@gmail.com>
Cc: pgsql-sql@postgresql.org
Cc: pgsql-performance@postgresql.org
Subject: Re: Re: [SQL] querying with index on jsonb slower than standard column. Why?
Date: Fri, 12 Dec 2014 20:20:37 -0500
Message-ID: <15863.1418433637@sss.pgh.pa.us> (raw)
In-Reply-To: <548B79E3.5070301@dunslane.net>
References: <5484DBDA.6090405@gmail.com>
	<5484EEA7.1030403@aklaver.com>
	<5484F437.2080402@gmail.com>
	<16147.1418002090@sss.pgh.pa.us>
	<5485C449.4020204@aklaver.com>
	<26002.1418053572@sss.pgh.pa.us>
	<5485C8BA.7040704@aklaver.com>
	<5485D584.8080105@aklaver.com>
	<27877.1418057764@sss.pgh.pa.us>
	<3936.1418071989@sss.pgh.pa.us>
	<548614C8.90203@aklaver.com>
	<54861A81.8030509@gmail.com>
	<WM!10a58876093961b15d913f3acfd3ae6e8f5f3f7b48bfbafc745c1350051f176f2eb1f0d024840ed24712614adf91b2b6!@asav-3.01.com>
	<548B5CF4.4030009@agliodbs.com>
	<8867.1418420650@sss.pgh.pa.us>
	<548B79E3.5070301@dunslane.net>
List-Unsubscribe:  <mailto:majordomo@postgresql.org?body=unsub%20pgsql-performance>

Andrew Dunstan <andrew@dunslane.net> writes:
> On 12/12/2014 04:44 PM, Tom Lane wrote:
>> Well, it'd be easy to fix if we were willing to invent distinct operators
>> depending on which type you wanted out (perhaps ->> for text output as
>> today, add ->># for numeric output, etc).

> That was my immediate reaction. Not sure about the operator name. I'd 
> tentatively suggest -># (taking an int or text argument) and #># taking 
> a text[] argument, both returning numeric, and erroring out if the value 
> is a string, boolean, object or array.

>> The usability issue could be fixed by teaching the planner to fold a
>> construct like (jsonb ->> 'foo')::numeric into (jsonb ->># 'foo').
>> But I'm not sure how we do that except in a really ugly and ad-hoc
>> fashion.

> I would be inclined to add the operator and see how cumbersome people 
> find it. I suspect in many cases it might be sufficient.

We can't just add the operator and worry about usability later;
if we're thinking we might want to introduce such an automatic
transformation, we have to be sure the new operator is defined in a
way that allows the transformation to not change any semantics.
What that means in this case is that if (jsonb ->> 'foo')::numeric
would have succeeded, (jsonb ->># 'foo') has to succeed; which means
it'd better be willing to attempt conversion of string values to
numeric, not just throw an error on sight.

			regards, tom lane


-- 
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance



view thread (24+ messages)  latest in thread

Message-ID: <15863.1418433637@sss.pgh.pa.us>
Permalink:  ../15863.1418433637@sss.pgh.pa.us/
Also on:    postgresql.org/message-id/15863.1418433637@sss.pgh.pa.us

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: tgl@sss.pgh.pa.us, andrew@dunslane.net, josh@agliodbs.com, tdudgeon.ml@gmail.com, pgsql-performance@postgresql.org
  Subject: Re: Re: [SQL] querying with index on jsonb slower than standard column. Why?
  In-Reply-To: <15863.1418433637@sss.pgh.pa.us>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox