Re: Initializing Datums for use with SPI_execute_plan - Mailing list pgsql-general

From Andrew - Supernews
Subject Re: Initializing Datums for use with SPI_execute_plan
Date
Msg-id slrnegjol5.2ea3.andrew+nonews@atlantis.supernews.net
Whole thread Raw
In response to Initializing Datums for use with SPI_execute_plan  ("Jack Orenstein" <jack.orenstein@gmail.com>)
Responses Re: Initializing Datums for use with SPI_execute_plan  ("Jack Orenstein" <jack.orenstein@gmail.com>)
List pgsql-general
On 2006-09-14, "Jack Orenstein" <jack.orenstein@gmail.com> wrote:
> I don't think I explained myself clearly. I have a C string (char*,
> terminating zero) and a byte array (char*, possibly containing zeros,
> and I know the length). I want to obtain Datums wrapping these values
> that will be used to bind varchar and bytea columns, and I'm trying to
> find out how to generate these Datums.

One way:

    bytea *my_bytea = (bytea *) palloc(byte_array_len + VARHDRSZ);
    memcpy(VARDATA(my_bytea), byte_array, byte_array_len);
    VARATT_SIZEP(my_bytea) = byte_array_len + VARHDRSZ;

    values[0] = DirectFunctionCall1(textin,CStringGetDatum(yourstring));
    values[1] = PointerGetDatum(my_bytea);

    SPI_execute_plan...

--
Andrew, Supernews
http://www.supernews.com - individual and corporate NNTP services

pgsql-general by date:

Previous
From: Scott Marlowe
Date:
Subject: Re: PostgreSQL slammed by PHP creator
Next
From: Geoffrey
Date:
Subject: Re: PostgreSQL slammed by PHP creator