index support is NULL

Started by Teodor Sigaevover 19 years ago3 messagespatches
Jump to latest
#1Teodor Sigaev
teodor@sigaev.ru

http://www.sigaev.ru/misc/indexnulls-0.8.gz

Initially patch was developed by Martijn van Oosterhout. But it's reworked and
support of searching NULLS to GiST too. Patch adds new column named amsearchnull
to pg_am. To recognize IS NULL clause ScanKey->sk_flags contains (SK_ISNULL &
SK_INDEXFINDNULL) and ScanKey->sk_strategy sets to InvalidStrategy. IS NOT NULL
isn't supported.

The patch was already suggested to community
(http://archives.postgresql.org/pgsql-patches/2006-12/msg00019.php
and http://archives.postgresql.org/pgsql-hackers/2007-02/msg01162.php), but the
single objection was:
http://archives.postgresql.org/pgsql-patches/2006-12/msg00028.php

Objection was about representing IS [NOT] NULL clause in SkanKey structure,
because it required to set strategy to BTEqualStrategyNumber, and Tom doubted
about needing of such support.

Now ScanKey->sk_strategy = InvalidStrategy and btree code transforms it to
BTEqualStrategyNumber in _bt_preprocess_keys(), btcostestimate knows that fact too.

GiST doesn't need to transform strategy - it looks at SK_INDEXFINDNULL only.

--
Teodor Sigaev E-mail: teodor@sigaev.ru
WWW: http://www.sigaev.ru/

#2Bruce Momjian
bruce@momjian.us
In reply to: Teodor Sigaev (#1)
Re: index support is NULL

Your patch has been added to the PostgreSQL unapplied patches list at:

http://momjian.postgresql.org/cgi-bin/pgpatches

It will be applied as soon as one of the PostgreSQL committers reviews
and approves it.

---------------------------------------------------------------------------

Teodor Sigaev wrote:

http://www.sigaev.ru/misc/indexnulls-0.8.gz

Initially patch was developed by Martijn van Oosterhout. But it's reworked and
support of searching NULLS to GiST too. Patch adds new column named amsearchnull
to pg_am. To recognize IS NULL clause ScanKey->sk_flags contains (SK_ISNULL &
SK_INDEXFINDNULL) and ScanKey->sk_strategy sets to InvalidStrategy. IS NOT NULL
isn't supported.

The patch was already suggested to community
(http://archives.postgresql.org/pgsql-patches/2006-12/msg00019.php
and http://archives.postgresql.org/pgsql-hackers/2007-02/msg01162.php), but the
single objection was:
http://archives.postgresql.org/pgsql-patches/2006-12/msg00028.php

Objection was about representing IS [NOT] NULL clause in SkanKey structure,
because it required to set strategy to BTEqualStrategyNumber, and Tom doubted
about needing of such support.

Now ScanKey->sk_strategy = InvalidStrategy and btree code transforms it to
BTEqualStrategyNumber in _bt_preprocess_keys(), btcostestimate knows that fact too.

GiST doesn't need to transform strategy - it looks at SK_INDEXFINDNULL only.

--
Teodor Sigaev E-mail: teodor@sigaev.ru
WWW: http://www.sigaev.ru/

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Teodor Sigaev (#1)
Re: index support is NULL

Teodor Sigaev <teodor@sigaev.ru> writes:

http://www.sigaev.ru/misc/indexnulls-0.8.gz

Applied with revisions (except I didn't touch the gist code, figuring
you probably understand that better than me).

regards, tom lane