Re: [PATCH] Support SK_SEARCHNULL / SK_SEARCHNOTNULL for heap-only scans
От | Andres Freund |
---|---|
Тема | Re: [PATCH] Support SK_SEARCHNULL / SK_SEARCHNOTNULL for heap-only scans |
Дата | |
Msg-id | 20230213163651.hicmmfqt2zka63dz@awork3.anarazel.de обсуждение исходный текст |
Ответ на | [PATCH] Support SK_SEARCHNULL / SK_SEARCHNOTNULL for heap-only scans (Aleksander Alekseev <aleksander@timescale.com>) |
Ответы |
Re: [PATCH] Support SK_SEARCHNULL / SK_SEARCHNOTNULL for heap-only scans
|
Список | pgsql-hackers |
Hi, On 2023-02-13 17:59:13 +0300, Aleksander Alekseev wrote: > @@ -36,20 +36,36 @@ HeapKeyTest(HeapTuple tuple, TupleDesc tupdesc, int nkeys, ScanKey keys) > bool isnull; > Datum test; > > - if (cur_key->sk_flags & SK_ISNULL) > - return false; > + if (cur_key->sk_flags & (SK_SEARCHNULL | SK_SEARCHNOTNULL)) > + { > + /* special case: looking for NULL / NOT NULL values */ > + Assert(cur_key->sk_flags & SK_ISNULL); > > - atp = heap_getattr(tuple, cur_key->sk_attno, tupdesc, &isnull); > + atp = heap_getattr(tuple, cur_key->sk_attno, tupdesc, &isnull); > > - if (isnull) > - return false; > + if (isnull && (cur_key->sk_flags & SK_SEARCHNOTNULL)) > + return false; > > - test = FunctionCall2Coll(&cur_key->sk_func, > - cur_key->sk_collation, > - atp, cur_key->sk_argument); > + if (!isnull && (cur_key->sk_flags & SK_SEARCHNULL)) > + return false; Shouldn't need to extract the column if we just want to know if it's NULL (see heap_attisnull()). Afaics the value isn't accessed after this. Greetings, Andres Freund
В списке pgsql-hackers по дате отправления: