Re: Alpha4 release blockers (was Re: wrapping up this CommitFest)

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-hackers(at)postgresql(dot)org, Peter Eisentraut <peter_e(at)gmx(dot)net>, Rémi Zara <remi_zara(at)mac(dot)com>, Stefan Huehner <stefan(at)huehner(dot)org>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Subject: Re: Alpha4 release blockers (was Re: wrapping up this CommitFest)
Date: 2011-03-05 22:49:24
Message-ID: 201103052349.24919.andres@anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Ah. Finally after trying to stare down the code for some more time the issue
is pretty simple.

index_getprocinfo did this:

/* Initialize the lookup info if first time through */
if (locinfo->fn_oid == InvalidOid)
{
...
fmgr_info_cxt(procId, locinfo, irel->rd_indexcxt);
fmgr_info_collation(irel->rd_index->indcollation.values[attnum-1],
locinfo);
}

which is not a good idea because irel->rd_index->indcollation is field after
the variable lenght indkey field.
Indkey is of int2vector type which is important because it means that there is
enough space for a second key without making direct access to indcollation
wrong (which is 4byte alligned). That explains why the issue could only be
triggered by a composite index covering at least 3 columns...

RelationInitIndexAccessInfo already fills the more convenient
Relation.rd_indcollation which makes the fix trivial.

It was a good bug though, because now I understand the relcache to some degree
which I formerly definitely did not ;-)

On Saturday 05 March 2011 18:37:30 Andres Freund wrote:
> test=# CREATE TABLE foo(a int, b text, c int);
> CREATE TABLE
> Time: 65.535 ms
>
> test=# INSERT INTO foo VALUES (1, '1', 2);
> INSERT 0 1
> Time: 66.777 ms
>
> test=# INSERT INTO foo VALUES (1, '2', 2);
> INSERT 0 1
> Time: 40.687 ms

> test=# CREATE INDEX foo_abc ON foo (a, b,c);
> ERROR: locale operation to be invoked, but no collation was derived

Fixed after applying the patch.

Andres

Attachment Content-Type Size
0001-Fix-one-more-locale-operation-to-be-invoked-but-no-c.patch text/x-patch 1.1 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2011-03-05 23:33:52 Parallel make problem with git master
Previous Message Tom Lane 2011-03-05 22:28:06 Re: Alpha4 release blockers (was Re: wrapping up this CommitFest)