Re: helpers to convert C types to postgres types (Array)

From: Merlin Moncure <mmoncure(at)gmail(dot)com>
To: Ivan Sergio Borgonovo <mail(at)webthatworks(dot)it>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: helpers to convert C types to postgres types (Array)
Date: 2010-01-29 14:19:42
Message-ID: b42b73151001290619v142e5683jb5b265d439c4d107@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Jan 29, 2010 at 7:34 AM, Ivan Sergio Borgonovo
<mail(at)webthatworks(dot)it> wrote:
> I'm still trying to collect all the bits to be able to read and
> return several types of data in C functions.
>
> I'm looking for quick ways to deal with ArrayType.
>
> I'd expect some helper because these kind of operation should be
> frequent and without any helper (function/macro) they really make
> the code awful.
>
> Generally you work with C types that later you've to "convert" to
> Postgres types.
>
> So for example you may have an array of int2 that then you've to
> place into an ArrayType.
>
> I think there are 3 kinds of operation you may have to do:
>
> 1 You may have an already "formed" C array type and you'd just copy
>  it into an ArrayType
> 2 You may know the # of elements of the C array type but you're
>  filling it an element at a time
> 3 You don't know the number of elements in the array in advance so
>  you'd like to append to the ArrayType one element at a time
>
> 1 seems to require
> - creating an array of Datum
> - looping over the C array
> - assign to each Datum element the "converted" C value
> - construct_array the Postgres array
> That's a pain. Any other way? macro?
>
> 2 Seems the easiest
>
> 3 ???
> Is there any function in postgres that let you append elements to
> an ArrayType?

well, you have the entire backend array api available. you can always
call array_cat or array_push depending on how you want to do it. if
you are worried about performance though the fastest way is going to
be to collect your element datums in a vector and calling
construct_array however.

merlin

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2010-01-29 14:44:08 Re: Hot Standby: Relation-specific deferred conflict resolution
Previous Message Simon Riggs 2010-01-29 14:18:01 Re: Hot Standby: Relation-specific deferred conflict resolution