From: | Yuriy Rusinov <yrusinov(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | POSTGRES <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: SPI_execute_with_args call |
Date: | 2013-05-05 20:22:27 |
Message-ID: | CAA5U4sy68ZtEuCebs7vHc4q-BqL-WOh+b2VcJYXpbqJXikCmwQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hello !
There is one's more question, which way I have to determine that void *
randBuf acceptable or not for bytea type ?
Thanks in advance.
On Fri, May 3, 2013 at 9:44 PM, Yuriy Rusinov <yrusinov(at)gmail(dot)com> wrote:
> Thanks a lot, I have corrected and bug was fixed.
>
>
> On Fri, May 3, 2013 at 6:42 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
>> Yuriy Rusinov <yrusinov(at)gmail(dot)com> writes:
>> > In C-function I do
>> > size_t nr_ins = strlen ("insert into rand_state (state_rand) values
>> ($1);");
>> > char * r_sql = (char *) palloc (nr_ins + 1);
>> > strncpy (r_sql, "insert into rand_state (state_rand) values ($1);",
>> nr_ins);
>>
>> This is a hard, error-prone, and ultimately incorrect way to do
>> pstrdup() --- you're not ensuring that the new string is
>> null-terminated.
>>
>> > Datum * val = PointerGetDatum (randBuf);
>>
>> Didn't your compiler give you a warning about that? PointerGetDatum
>> produces a Datum, not a pointer to a Datum. You'd need something more
>> like
>>
>> Datum val[1];
>> val[0] = PointerGetDatum (randBuf);
>>
>> This is assuming that randBuf is even of the right format to be a bytea
>> value, which is unclear from your extract.
>>
>> > const char * nulls = "NULL";
>>
>> And that's just wrong. Personally I'd just pass NULL to
>> SPI_execute_with_args since you don't have any null values to pass, but
>> if you don't want to do that you'd need something more like
>>
>> char nulls[1];
>> nulls[0] = ' ';
>>
>> (hmm, it looks like the SPI documentation leaves something to be desired
>> here --- the SPI_execute_with_args page, at least, isn't explaining the
>> convention for elements of the nulls[] array)
>>
>> > Could you give some work examples for SPI_execute_with_args because I
>> > didn't find them in documentation.
>>
>> A quick grep says there's a usage in src/pl/plpgsql/src/pl_exec.c
>>
>> regards, tom lane
>>
>
>
>
> --
> Best regards,
> Sincerely yours,
> Yuriy Rusinov.
>
--
Best regards,
Sincerely yours,
Yuriy Rusinov.
From | Date | Subject | |
---|---|---|---|
Next Message | Tim Uckun | 2013-05-06 02:16:38 | Shortcut evaluation in OR or IN |
Previous Message | Tom Lane | 2013-05-05 14:06:55 | Re: Composite fields and the query planner |