On Wed, Jan 14, 2015 at 11:49 AM, Merlin Moncure <mmonc...@gmail.com> wrote: > so it looks like nobody ever exits from _bt_moveright. any last > requests before I start bisecting down?
Could you write some code to print out the block number (i.e. "BlockNumber blkno") if there are more than, say, 5 retries within _bt_moveright()? You'll also want to print out the name of the index (so rel->rd_rel->relname.data). That'll probably only trip when this happens (5 retries are very unusual). Then, use contrib/pageinspect to dump that block's contents (I think that'll work, since no one sits on a buffer lock here). I'd like to know what index we're dealing with here. I wonder if it's "pg_attribute_relid_attnam_index". So: call "bt_page_stats('pg_whatever', n)", n being the relevant block number. Try and do the same with the right link (which bt_page_stats() will show). Then try and call bt_page_items() against one or both of those blocks/pages. I'd like to see what that shows. I'm wondering if some invariant has been violated. Which _bt_moveright() caller are we talking about here, BTW? I guess it's just the _bt_first()/ _bt_search() one. That might vary, of course. -- Peter Geoghegan -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers