On 18.11.2010 15:19, Vaibhav Kaushal wrote:
I have a small problem: Suppose that I have a table in PostgreSQL which has
a integer field as its Primary key and I have used the Hash indexing method
for creating the index for the field on the table. Now I want to know the
following details about the index (assuming the machine running PostgreSQL
is a Linux box with DB installed at /var/lib/pgsql/data):
* Which file would contain the index table data? (OR how to find them? Will
I find them in the CATALOG tables?)
SELECT relfilenode FROM pg_class WHERE relname='index name'. The index
data is stored in a file with that name. Something like
/var/lib/pgsql/data/base/11910/<relfilenode from that query>
* Is there some documentation available about the source apart from that on
the website and the the one which gets compiled with the source? (specially
about the conversions and the steps of conversion of the data from they raw
disc reads to the structured layout in the memory just before the executor
is started)
The source and the README files in the source tree are your best help.
And the comments in the header files are very helpful too.
* Which file in the source tree is responsible for the scan of the index?
(The main file in case there are two of them for the btree and hash indexes
separately)
src/backend/access/nbtree/nbtree.c, btgettuple function
and
src/backend/access/hash/hash.c, hashgettuple function
src/backend/access/index/indexam.c is the common entry point for all
index types.
* Which data structures are the most important ones in index scanning? (I
will search them myself but please someone tell me the structures; there are
just too many of them :( )
Depends on what you're interested in. IndexScanDesc is common between
all index scans, Understanding the page structure might also be helpful,
see src/include/storage/bufpage.h.
* Are the pages of the DB file layout of the index table in someway
different than what is discussed at
http://www.postgresql.org/docs/9.0/interactive/storage-file-layout.html ? If
yes then what are the differences?
No, that applies to indexes too.
And I must say that while browsing the source, I was so pleased to read the
comments (they really helped a lot). Thanks to the PostgreSQL coding
conventions and of course the contributors. I am a bit clear about the
working of the executor (thanks to ECLIPSE for support of ctags and a nice
UI) but I am still much in a mess.
Thanks in advance for the answer ;)
Good luck!
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers