Re: BUG #12694: crash if the number of result rows is lower than gin_fuzzy_search_limit

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: BUG #12694: crash if the number of result rows is lower than gin_fuzzy_search_limit
Дата
Msg-id 54CA57B9.3070602@vmware.com
обсуждение исходный текст
Ответ на Re: BUG #12694: crash if the number of result rows is lower than gin_fuzzy_search_limit  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: BUG #12694: crash if the number of result rows is lower than gin_fuzzy_search_limit  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
On 01/29/2015 05:26 PM, Tom Lane wrote:
> Heikki Linnakangas <hlinnakangas@vmware.com> writes:
>> The fix is simple: make sure that startScanKey() is always called, by
>> getting rid of the early return above. Attached. I'll apply this later
>> today or tomorrow unless someone sees a problem with this.
>
> Another, even simpler fix would be to just move the startScanKey()
> call loop to before the "if (GinFuzzySearchLimit > 0)" block.
> Is there a particular reason why it's a good idea to do things in
> the current order?  It almost looks like a patch application error
> as it stands.

The code in startScanKey() uses the predictNumberResult estimates, which
the loop modifies, so it would change how that behaves. I'm not sure if
it would actually be better that way though; it's not clear to me how
the fuzzy search limit should interact with the fast scan code. It won't
affect correctness either way.

The for()-loop sets the so->entries[i]-reduceResult fields, so it makes
sense to do it right after the startScanEntry() calls. Otherwise the
logic would be "1. do some initialization on entries, 2. initialize
keys, 3. do more initialization on entries", which would be a bit strange.

<looks at the loop a bit more>

Hmm, isn't the if-check in the second loop unnecessary? The first loop
checks that so->entries[i]->predictNumberResult > so->totalentries *
GinFuzzySearchLimit for all entries. If there are any where that doesn't
hold, it returns (which is a bad idea). There's no need to check for the
same condition again in the second loop.

- Heikki

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #12694: crash if the number of result rows is lower than gin_fuzzy_search_limit
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #12694: crash if the number of result rows is lower than gin_fuzzy_search_limit