Oh, I almost forget the problem of item size. What I consider is just to modify the source code as few as possible;-( Thank you for reminding me, Heikki. I can see in the older version of postgresql, it remove a structure HashItem and just use indextuple to store the item. Now I would use a structure HashItem to store it again;-)
On Tue, Jul 15, 2008 at 8:04 PM, Heikki Linnakangas <[EMAIL PROTECTED]> wrote: > Xiao Meng wrote: >> >> Hi, hackers. >> I'm working on my gsoc project - improving hash index. >> I need to create a TupldeDesc with uint32 attribute. >> Here is the reason why I need it - >> If we store hash code only in the tuple, then the TupleDesc's >> attribute should be uint32 > > Something along the lines of: > > TupleDesc tupdesc = CreateTemplateTupleDesc(1, false); > TupleDescInitEntry(tupdesc, 1, "hashcode", INT4OID, -1, 0); > >> In this way, we can use index_form_tuple() to create a tuple and >> needn't write a function for hash specially. > > I would actually suggest ditching the normal page layout with line pointers > and IndexTuples altogether. All the entries are fixed size, so you can get > away with a much simpler structure, and store more entries per page. Storing > an IndexTuple with one int32 column takes > > (sizeof(IndexTupleData) + sizeof(uint32) + sizeof(ItemIdData)) = 16 bytes, > > but you only need a pointer to the heap tuple, and the hash code, which is > just 10 bytes in total. Or 12 if you have to align the hash code to 4 byte > boundary. > > -- > Heikki Linnakangas > EnterpriseDB http://www.enterprisedb.com > -- Best Regards, Xiao Meng DKERC, Harbin Institute of Technology, China Gtalk: [EMAIL PROTECTED] MSN: [EMAIL PROTECTED] http://xiaomeng.yo2.cn -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers