From: | Gregor Trefs <gregor(dot)trefs(at)delphit(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: C function returns null values |
Date: | 2011-07-18 14:04:02 |
Message-ID: | 5987F6572432A3439988CDF27C6239A60124F7A43D8B@winserver.delphit.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Thanks for your answer. I edited my code, but still get these random null values. What else can I do ?
Regards
-----Ursprüngliche Nachricht-----
Von: Tom Lane [mailto:tgl(at)sss(dot)pgh(dot)pa(dot)us]
Gesendet: Freitag, 15. Juli 2011 16:24
An: Gregor Trefs
Cc: pgsql-general(at)postgresql(dot)org
Betreff: Re: [GENERAL] C function returns null values
Gregor Trefs <gregor(dot)trefs(at)delphit(dot)com> writes:
> I developed a C function which returns a record. The record contains 3 scalar values and 2 arrays. Randomly some record elements are null and I wonder why. I could trace down the problem to the point where the return record is created. Until this point everything is computed correctly. Below you see an excerpt of the relevant code. I use PostGres 8.4 on Ubuntu 10.10 (x64).
You're not bothering to fill in the nulls[] array:
> // Allocate enough memory for nulls
> nulls = palloc(tuplen * sizeof (bool));
> // Create tuple
> res_tuple = heap_form_tuple(tupdesc, values, nulls);
palloc0 would work better here.
BTW, it's a good idea to develop/test C code in a backend built with --enable-debug --enable-cassert. Had you been doing so, palloc would have given you back intentionally-garbage-filled memory, and you'd have noticed the mistake immediately.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2011-07-18 14:32:42 | Re: C function returns null values |
Previous Message | Adrian Klaver | 2011-07-18 13:38:57 | Re: Table dublicates values |