Oh! yeah, i got it. Thanks.... On Wed, Mar 24, 2010 at 12:26 AM, Gokulakannan Somasundaram < gokul...@gmail.com> wrote:
> > > T2 : session 1 releases the lock on p1 (its waiting to acquire a ex lock >> on >> > p2) >> >> That's not what we do. See _bt_findinsertloc. >> >> regards, tom lane >> > > I am really confused. Please keep the cool and explain me, if i am > wrong. I could see this code in _bt_findinsertloc. There is a > _bt_relandgetbuf, which releases lock on p1 and tries to acquire a lock on > p2. I wrote ex lock in the place of BT_WRITE. > * > * > > *00589 for (;;) > 00590 { > 00591 BlockNumber > <http://doxygen.postgresql.org/block_8h.html#0be1c1ab88d7f8120e2cd2e8ac2697a1> > rblkno = lpageop->btpo_next > <http://doxygen.postgresql.org/structBTPageOpaqueData.html#0e96302f6e2aa4203cef0e243362b692>; > 00592 > 00593 rbuf = _bt_relandgetbuf > <http://doxygen.postgresql.org/nbtpage_8c.html#023261cd645fc5e8b4e8517fe9027bd6>(rel, > rbuf, rblkno, BT_WRITE > <http://doxygen.postgresql.org/nbtree_8h.html#e494b1ec6ecbe7251dfc412a1ec53c1b>); > 00594 page = BufferGetPage > <http://doxygen.postgresql.org/bufmgr_8h.html#fb570c83a17839dabeb75dba7ea8e1a5>(rbuf); > 00595 lpageop = (BTPageOpaque > <http://doxygen.postgresql.org/structBTPageOpaqueData.html>) > PageGetSpecialPointer > <http://doxygen.postgresql.org/bufpage_8h.html#3be45495654ca1ff61f6ae45805e25f6>(page); > 00596 if (!P_IGNORE > <http://doxygen.postgresql.org/nbtree_8h.html#a8df35238449d00d7e14c3f1ccd3121c>(lpageop)) > 00597 break; > 00598 if (P_RIGHTMOST > <http://doxygen.postgresql.org/nbtree_8h.html#8b5e4857926b514c0f97592bf3344293>(lpageop)) > 00599 elog > <http://doxygen.postgresql.org/elog_8h.html#850290250a1449fc513da20ae2ce5ec5>(ERROR > > <http://doxygen.postgresql.org/elog_8h.html#8fe83ac76edc595f6b98cd4a4127aed5>, > "fell off the end of index \"%s\"", > 00600 RelationGetRelationName > <http://doxygen.postgresql.org/rel_8h.html#5e9d450c92f70171110e22ffc678ed04>(rel)); > 00601 }* > > > What is that, i am missing here? > > Gokul. >