Re: Convert Datum* to char*
От | Heikki Linnakangas |
---|---|
Тема | Re: Convert Datum* to char* |
Дата | |
Msg-id | 52CAAD31.6030801@vmware.com обсуждение исходный текст |
Ответ на | Convert Datum* to char* (Masterprojekt Naumann1 <mpws2013n1@gmail.com>) |
Ответы |
Re: Convert Datum* to char*
|
Список | pgsql-hackers |
On 01/06/2014 03:09 PM, Masterprojekt Naumann1 wrote: > I want to read an attribute value from a TupleTableSlot. When I try to > convert an attribute of SQL type varchar from Datum* to char* with the help > of the method TextDatumGetCString(...), sometimes there is a segmentation > fault. The segmentation fault comes from the method > TextDatumGetCString(...), which is defined in utils/builtins.h. > Unfortunately, the fault is not always reproducible. I debugged the code > and figured out that the value of result->tts_values[i] sometimes is > random. It may be uninitialized memory. In other cases, the variable value > is NULL. Then, I can just skip the conversion from Datum* to char*, so that > there is no segmentation fault. I attached a patch with the code. The > relevant line is: > char *value = TextDatumGetCString(result->tts_values[i]); > The SQL-Query is a simple "SELECT * from ..." on the TPC-H table customer. > About every third execution leads to a segmentation fault. Maybe the field is NULL? By convention, we normally set the Datum to 0 on an SQL NULL, but you're supposed to check tts_isnull first, and ignore tts_values[x] when tts_isnull[x] is true. - Heikki
В списке pgsql-hackers по дате отправления: