Thread: index support is NULL
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/
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. +
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