hi,is it dangerous to only use tuple pointer through heap_getnext()?
hi,i use these codes to store only pointer of tuple :
HeapTuple *tuple;
tuple = heap_getnext(pHeapScanDesc,ForwardScanDirection);
while(tuple){
//[1#]here i only store the pointer of tuple in an array for later
using,that means i don't retrive attribute data from this tuple ,is this ok?
myArray[i++]=tuple;
//then next tuple
tuple = heap_getnext(pHeapScanDesc,ForwardScanDirection);
}
at place [1#],i only store the pointer of current tuple in an array for
later using,that means i don't retrieve attribute data from this tuple ,is
this ok?
could these tuple pointers be invalid sometimes later if myArray still
reference these tuples? i know these tuples have been read into buffers in
shared memory, yet I am not sure wether these buffers be replaced or marked
invalid when myArray still points to these tuples in according buffers.
thanks a lot!
peng
Excerpts from sunpeng's message of vie may 14 19:15:47 -0400 2010:
hi,i use these codes to store only pointer of tuple :
HeapTuple *tuple;
tuple = heap_getnext(pHeapScanDesc,ForwardScanDirection);
while(tuple){
//[1#]here i only store the pointer of tuple in an array for later
using,that means i don't retrive attribute data from this tuple ,is this ok?
No, this is not safe. The buffer is unpinned after heap_getnext walks
to the next buffer, and thus could be used for a different page.
--