Re: Creating HeapTuple from char and date values
От | Ashutosh Bapat |
---|---|
Тема | Re: Creating HeapTuple from char and date values |
Дата | |
Msg-id | CAExHW5sD=JOMcJO7T8Hc+PjPx5ap_j3jHpm4zFXv2kQLjPBPEA@mail.gmail.com обсуждение исходный текст |
Ответ на | Creating HeapTuple from char and date values (Amin <amin.fallahi@gmail.com>) |
Список | pgsql-hackers |
On Thu, Dec 8, 2022 at 12:56 AM Amin <amin.fallahi@gmail.com> wrote: > > Hi All, > > I am trying to create HeapTuple data structure. > First, I create a tuple descriptor: > TupleDesc *td=CreateTemplateTupleDesc(colCount); > Then, for each variable, I do: > TupleDescInitEntry(*td,v->varattno,NULL,v->vartype,v->vartypmod,0); > Then, I assign values: > if int32: values[v->varattno-1]=Int8GetDatum(myValue); > Similarly for float. > Finally, I create the HeapTuple: > HeapTuple tuple=heap_form_tuple(td,values,isnull); > > Everything works fine with int and float. But I don't know how to handle chars. > Let's say we have a character(10) column. One problem is v->vartypmod will be set to 14. Shouldn't it be 10? I think the 4 extra bytes is varlena header - not sure. but typmod in this case indicates the length of binary representation. 14 looks correct. > Second, how should I assign values? Is values[v->varattno-1]=CStringGetDatum(myValue); correct? Should I set the last parameterto TupleDescInitEntry? Why am I getting "invalid memory alloc request size" or segfault with different configurations? is myValue a char *? I think you need to use CStringGetTextDatum instead of CStringGetDatum. -- Best Wishes, Ashutosh Bapat
В списке pgsql-hackers по дате отправления: