On Jan 2, 2008 6:24 PM, Martijn van Oosterhout <kleptog@svana.org> wrote:
On Wed, Jan 02, 2008 at 04:46:11PM +0530, Gokulakannan Somasundaram wrote: > > All indexes are done by user-defined functions, even b-trees. People can > > make their own b-tree indexes by defining an operator class. Note that > > "user-defined" is this case means anything called via the fmgr > > interface. > > Again, i think i have one more wrong understanding. My understanding is, > We are discussing about user-defined functions because, they might be > actually be mutable functions, but the user might have classified as > immutable.
This is where it gets a bit beyond by depth, so someone may have to correct me. The point is that during the recovery the system is not yet fully running and not everything works yet. For example, what happens if the system crashed halfway through updating a page in pg_proc and that page needs to be recovered from WAL. Yet to insert into the index you need to be able to read pg_am, pg_amproc, pg_proc at least, probably more.
The point being, you can't rely on anything except WAL during recovery.
Thanks a lot for the nice explanation. That was something new for me....:((