GIN code managing entry insertion not able to differentiate fresh and old indexes - Mailing list pgsql-hackers

From Michael Paquier
Subject GIN code managing entry insertion not able to differentiate fresh and old indexes
Date
Msg-id CAB7nPqSc4VQ9mHKqm_YvAfcTEhO-iUY8SKbXYdnMGnAi1XnPaw@mail.gmail.com
Whole thread Raw
Responses Re: GIN code managing entry insertion not able to differentiate fresh and old indexes  (Michael Paquier <michael.paquier@gmail.com>)
Re: GIN code managing entry insertion not able to differentiate fresh and old indexes  (Bruce Momjian <bruce@momjian.us>)
List pgsql-hackers
Hi all,

While playing with the GIN code for an upcoming patch, I noticed that
when inserting a new entry in a new index, this code path is not able
to make the difference if the index is in a build state or not.
Basically, when entering in ginEntryInsert@gininsert.c GinBtree built
via ginPrepareEntryScan does not have its flag isBuild set up
properly. I think that it should be set as follows to let this code
path be aware that index is in build state:
btree.isBuild = (buildStats != NULL);

Note that the entry insertion code does nothing with isBuild yet, so
it does not really impact back-branches. However, if in the future we
fix a bug in this area and need to make distinction between a fresh
index and an old one well there will be problems. For those reasons,
this correctness fix should be perhaps master-only for now (perhaps
even 9.4 stuff as well).

Patch is attached.

Regards,
--
Michael

Attachment

pgsql-hackers by date:

Previous
From: Abhijit Menon-Sen
Date:
Subject: Re: What exactly is our CRC algorithm?
Next
From: Michael Paquier
Date:
Subject: Re: GIN code managing entry insertion not able to differentiate fresh and old indexes