Skip site navigation (1) Skip section navigation (2)


From: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: gincostestimate
Date: 2011-04-08 21:07:06
Message-ID: (view raw or whole thread)
Lists: pgsql-hackers
Dear Hackers,

A gin index created on an initially empty table will never get used
until the table is vacuumed, which for a table with no update or
delete activity could be forever unless someone manually intervenes.

The problem is that numEntries in src/backend/utils/adt/selfuncs.c is
zero and eventually causes a division by zero and a cost estimate of

The code below does not save the day, because nTotalPages and
nEntryPages are 2 and 1 respectively when an index is created on an
empty table, or when an indexed table is truncated.

    if (ginStats.nTotalPages == 0 || ginStats.nEntryPages == 0)
        numEntryPages = numPages;
        numDataPages = 0;
        numEntries = numTuples;     /* bogus, but no other info available */

I don't know what the solution is.  Simply setting numEntries to 1 if
ginStats.nEntries zero solves this particular problem, but I don't
know what other consequences it might have.




pgsql-hackers by date

Next:From: Tom LaneDate: 2011-04-08 21:11:45
Subject: Re: pg_upgrade bug found!
Previous:From: Robert HaasDate: 2011-04-08 21:05:10
Subject: Re: WIP: Allow SQL-language functions to reference parameters by parameter name

Privacy Policy | About PostgreSQL
Copyright © 1996-2015 The PostgreSQL Global Development Group