GetAttributeByName
От | Clark Evans |
---|---|
Тема | GetAttributeByName |
Дата | |
Msg-id | 36E9C02F.5D3C5DD0@manhattanproject.com обсуждение исходный текст |
Ответ на | RE: [HACKERS] tutorial won't compile in current tree. ("Stupor Genius" <stuporg@erols.com>) |
Список | pgsql-hackers |
I was wondering if this function should be 'wrapped up' and put into the SPI interface. I did some research and think I could pull it off. Currently the tutorial uses this: > bool > c_overpaid( TUPLE t, /* the current instance of EMP */ > int4 limit) > { > bool isnull = false; > int4 salary; > > salary = (int4) GetAttributeByName(t, "salary", &isnull); > > if (isnull) > return false; > return salary > limit; > } And the regression test uses this: > > char > overpaid(tuple) > TUPLE tuple; > { > bool isnull; > long salary; > > salary = (long) GetAttributeByName(tuple, "salary", &isnull); > return salary > 699; > } Here is a proposal: a) An explanation between a TupleTableSlot and a HeapTuple / TupleDesc pair. (help?) Perhaps we call the (TupleTableSlot *) a QueryTuple ? It's called a TUPLE in the two above usages, where a TUPLE ==(void *) b) Six more functions (overloaded?) Existing: Datum SPI_getbinval(HeapTuple, TupleDesc, int, bool *) char *SPI_getvalue (HeapTuple, TupleDesc, int) Two more by index: Datum SPI_getbinval(TupleTableSlot, int, bool *) char *SPI_getvalue (TupleTableSlot, int) Four more by name: Datum SPI_getbinval(HeapTuple, TupleDesc, char *, bool *) char *SPI_getvalue (HeapTuple, TupleDesc, char *) Datum SPI_getbinval(TupleTableSlot,char *, bool *) char *SPI_getvalue (TupleTableSlot, char *) Hmmm. Better yet, is there a way to hide the difference in the SPI by using a 'smart' structure? Clark
В списке pgsql-hackers по дате отправления: