Re: [HACKERS] index fix report - Mailing list pgsql-hackers

From David Hartwig
Subject Re: [HACKERS] index fix report
Date
Msg-id 35EF5D02.812438CC@bellatlantic.net
Whole thread Raw
In response to Re: [HACKERS] index fix report  (Bruce Momjian <maillist@candle.pha.pa.us>)
Responses Re: [HACKERS] index fix report  (Bruce Momjian <maillist@candle.pha.pa.us>)
List pgsql-hackers

Bruce Momjian wrote:

> > > Forgot to mention.  I still have the problem also.    Tom, what are
> > > you running on?   Is platform still a factor in this problem?
> >
> > Platform is a problem in that Bruce's FreeBSD/i686 machine does not show
> > the symptoms, but it's a pretty widespread problem beyond that afaik.
> > I'm running on Linux/i686. Tatsuo sees problems on Linux/PPC. Some Sparc
> > machines running Solaris and Linux apparently still show problems.
> >
> > I'm guessing that it is a byte alignment difference in malloc behavior
> > between the systems which exposes misaligned structures on some
> > platforms. How's that for pure speculation, eh?
>
> Let me tell you what I need to help debug this.
>
> It would help to know if it is the cache, or an index problem.  It is
> sometimes hard to determine because the cache often uses the indexes to
> load the cache.
>
> Can someone step through a bad entry, and tell me where it is failing?
> If it is in the executor, it probably is an index.  EXPLAIN does show
> what indexes are involved.  Are several indexes failing, or just one?
>
> I like the malloc idea, but am unsure how the problem just started
> happening with the multi-key system indexes.

I will try to frame this as best I can.   I would be good it other could
verify my statements or add to them.

When I run this simple scenario:

    create table foo (i int);
    -- everything is fine
    select * from pg_class where relname = 'foo'
    -- no problem
    select * from pg_class where oid = {oid_num}
    -- no problem
    create index foo_x on foo using btree(i);
    --  Looks ok but it is not
     select * from pg_class where relname = 'foo'
    -- no rows found
     select * from pg_class where oid = {oid_num}
    -- no rows found
    -- The table and the index in pg_class cannot be found via ether index.
    --  They look like single part indexes too.
    select * from pg_class
    --  shows foo and foo_x along w/ everything else.
    --  I can use the UPDATE statement to rewrite the foo and foo_x rows into
pg_class
    --  and all is well again.
    -- INSERTing into foo does not seem to be a problem.
    --  ALTER table has similar negative effects on the system tables, but I
have yet to sort them all out.

I have verified all this using the latest snapshot on an AIX 4.1.4 system.
Non-gcc compiler.   I will let you know if the problem is on my Linux box.   I
need to reboot and test.   But to the best of my knowledge the problem in not
showing itself there.


pgsql-hackers by date:

Previous
From: Vadim Mikheev
Date:
Subject: Re: [HACKERS] Open 6.4 items
Next
From: David Hartwig
Date:
Subject: Re: [HACKERS] Open 6.4 items