Re: pgsql: Get rid of pg_class.reltoastidxid.

From: Andres Freund <andres(at)2ndquadrant(dot)com>
To: Fujii Masao <fujii(at)postgresql(dot)org>
Cc: pgsql-committers(at)postgresql(dot)org, Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Subject: Re: pgsql: Get rid of pg_class.reltoastidxid.
Date: 2014-01-15 12:29:48
Message-ID: 20140115122948.GF9762@awork2.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Hi Fujii, Michael,

Coverity indicated that there's a problem with this - a quick look
confirms that:

foreach(lc, indexlist)
(*toastidxs)[i++] = index_open(lfirst_oid(lc), lock);

/* Fetch the first valid index in list */
for (i = 0; i < *num_indexes; i++)
{
Relation toastidx = *toastidxs[i];
if (toastidx->rd_index->indisvalid)
{
res = i;
found = true;
break;
}
}

Note how the second access to toastidxs is missing parentheses. It
should be (*toastidxs)[i].

I think this happens to mostly work because usually the older index will
still be valid when we open the toast indexes when there are multiple
ones and RelationGetIndexList() returns indexes in toast order.

Greetings,

Andres Freund

--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2014-01-15 12:54:34 Re: pgsql: Get rid of pg_class.reltoastidxid.
Previous Message Tom Lane 2014-01-15 00:28:25 pgsql: Improve FILES section of psql reference page.