Thread: Accessing structured datatypes using libpq

Accessing structured datatypes using libpq

From
Raimo Jormakka
Date:
Hi,

What is the recommended way of accessing structured data-types (especially JSONB and HSTORE) using libpq? It seems that by default JSONB data for example is returned as text. 

Is it not possible to have binary access to these data-types? If it is possible, then how do I do it exactly as the only thing I get from libpq is a void-pointer?

Cheers,
Raimo

Re: Accessing structured datatypes using libpq

From
John R Pierce
Date:
On 6/10/2014 11:20 PM, Raimo Jormakka wrote:
>
> What is the recommended way of accessing structured data-types
> (especially JSONB and HSTORE) using libpq? It seems that by default
> JSONB data for example is returned as text.
>
> Is it not possible to have binary access to these data-types? If it is
> possible, then how do I do it exactly as the only thing I get from
> libpq is a void-pointer?

those are text data types.   there is no binary representations.



--
john r pierce                                      37N 122W
somewhere on the middle of the left coast



Re: Accessing structured datatypes using libpq

From
Raimo Jormakka
Date:
2014-06-11 9:44 GMT+03:00 John R Pierce <pierce@hogranch.com>:
On 6/10/2014 11:20 PM, Raimo Jormakka wrote:

What is the recommended way of accessing structured data-types (especially JSONB and HSTORE) using libpq? It seems that by default JSONB data for example is returned as text.

Is it not possible to have binary access to these data-types? If it is possible, then how do I do it exactly as the only thing I get from libpq is a void-pointer?

those are text data types.   there is no binary representations.

Can someone elaborate this a bit? Isn't the key distinction between the JSONB and JSON data-types the fact that the former is a binary format while the latter one is text-based? 

Re: Accessing structured datatypes using libpq

From
Michael Paquier
Date:
On Wed, Jun 11, 2014 at 6:59 PM, Raimo Jormakka
<raimo.jormakka@gmail.com> wrote:
> 2014-06-11 9:44 GMT+03:00 John R Pierce <pierce@hogranch.com>:
>
>> On 6/10/2014 11:20 PM, Raimo Jormakka wrote:
>>>
>>>
>>> What is the recommended way of accessing structured data-types
>>> (especially JSONB and HSTORE) using libpq? It seems that by default JSONB
>>> data for example is returned as text.
>>>
>>> Is it not possible to have binary access to these data-types? If it is
>>> possible, then how do I do it exactly as the only thing I get from libpq is
>>> a void-pointer?
>>
>>
>> those are text data types.   there is no binary representations.
>
>
> Can someone elaborate this a bit? Isn't the key distinction between the
> JSONB and JSON data-types the fact that the former is a binary format while
> the latter one is text-based?
Internally yes, representation of those data types on disk is
different. However the output result, the one obtained by libpq or any
client is similar in appearance.
--
Michael


Re: Accessing structured datatypes using libpq

From
Merlin Moncure
Date:
On Wed, Jun 11, 2014 at 1:20 AM, Raimo Jormakka
<raimo.jormakka@gmail.com> wrote:
> Hi,
>
> What is the recommended way of accessing structured data-types (especially
> JSONB and HSTORE) using libpq? It seems that by default JSONB data for
> example is returned as text.
>
> Is it not possible to have binary access to these data-types? If it is
> possible, then how do I do it exactly as the only thing I get from libpq is
> a void-pointer?

check out libpqtypes: http://libpqtypes.esilo.com/. it gives C client
side representations of most common types including hstore. jsonb is
not supported yet but the library is pluggable to add support for new
types.

merlin