DETOAST Datum
От | Nick Raj |
---|---|
Тема | DETOAST Datum |
Дата | |
Msg-id | BANLkTik_s50hVBERYFZb+8rSQdYUEDQRsQ@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: DETOAST Datum
|
Список | pgsql-hackers |
Hi,<br />I have defined some function and also used NDBOX structure that having variable length.<br /><br />typedef structNDBOX<br />{<br /> int32 vl_len_; /* varlena length */<br /> unsigned int dim;<br /> double x[1];<br /> } NDBOX;<br /><br />When i called my function, it gives NDBOX to be null<br />On debugging, i foundout ,FunctionInvokeCall invokes fmgr_oldstyle function, for getting argument<br /><br />if (fnextra->arg_toastable[i]) //this returns false, not able to get arguments<br /> fcinfo->arg[i] = PointerGetDatum(PG_DETOAST_DATUM(fcinfo->arg[i]));<br/> } <br /><br />"How to get arguments toastable??" and even mytable pg_class.reltoastrelid entry is zero.<br />Can i have to tell explicitly to toast?<br /><br />If i commented thatif conditions then, it got stuck below:<br /><br />struct varlena *<br />pg_detoast_datum(struct varlena * datum)<br/>{<br /> if (VARATT_IS_EXTENDED(datum)) //My code get stuck here<br /> return heap_tuple_untoast_attr(datum);<br/> else<br /> return datum;<br />}<br /><br />Can anyone tell me what VARATT_IS_EXTENDED(datum)mean?<br /><br />Thanks<br />
В списке pgsql-hackers по дате отправления: