On Mon, Aug 18, 2014 at 4:42 PM, 土卜皿 <pengcz.nwpu@gmail.com> wrote: > Recently, for understanding postgresql's optimizer, I read and debug the > source code. these two days, I read these macros in sysattr.h: > > ... > #define ObjectIdAttributeNumber (-2) > ... > > and the relative codes, but I still did not know why authors designed them > like that, especially the value '-2' ? > > what should I do if I want to see the thoughts behind them? thanks in > advance!
Those values define the system attribute IDs associated to a relation. You can have a look at the top of heap.c to see where they come from, particularly the fields FormData_pg_attribute a1..a7. Hope this helps. Regards, -- Michael