fastgetattr

heap_getattrなどから実行されるマクロ。

isnullがNULL以外のとき,*isnullをfalseで初期化する。
HeapTupleNoNulls()でタプルにNULLデータが存在しないときは,以下の2通り。
tupleDescのattcacheoffに有効な値が入っているとき,fetchatt()を実行。
無効な値のとき,nocachegetattr()を実行。
タプルにNULLがあるときは,以下の2通り。
att_isnull()でタプルのNULL bitmapを調べて,trueのときはNULL。
NULLではないとき,nocachegetattr()を実行する。

nocachegetattr()はタプルの先頭から調べていくため時間がかかるので,
できるだけ実行しないように,このようなマクロを使っている。