On Wed, Feb 8, 2012 at 2:38 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Robert Haas <robertmhaas@gmail.com> writes:
>> On Wed, Feb 8, 2012 at 2:15 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>>> ISTM there are two ways we could fix this:
>>>
>>> 1. Introduce a duplicative test at the start of gistbuild().
>>>
>>> 2. Rearrange the order of operations in index_build() so that the init
>>> fork is made first.
>>>
>>> Both of these are kinda ugly, but #2 puts the ugliness into someplace
>>> that shouldn't have to know about it, and furthermore someplace that's
>>> unlikely to get reverted if/when gist is fixed to not have this problem.
>>> So I think I favor #1. Other opinions anyone?
>
>> I don't think I understand your object to #2. It appears to be a
>> trivial rearrangement?
>
> Yeah, but then we are wiring into index_build the idea that ambuildempty
> is more important, or more likely to throw an error, or something, than
> ambuild is. It seems weird. And fragile, since somebody could decide
> to re-order those two steps again for reasons unrelated to gist.
I guess. I think the compelling reason to do ambuildempty first is
that it's fast. So might as well. I think you'e just going to end up
hard-wiring the assumption that ambuild happens before ambuildempty,
which doesn't seem any better than the other way around, but I don't
care enough to argue about if you feel strongly about it.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company