Received: from me.tm.ee (adsl895.estpak.ee [213.168.23.133]) by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id eBJ07G628064 for ; Mon, 18 Dec 2000 19:07:19 -0500 (EST) (envelope-from hannu@tm.ee) Received: from tm.ee (IDENT:hannu@localhost.localdomain [127.0.0.1]) by me.tm.ee (8.9.3/8.9.3) with ESMTP id CAA01406; Tue, 19 Dec 2000 02:04:03 +0200 Message-ID: <3A3EA5F2.DF22E9E6@tm.ee> Date: Tue, 19 Dec 2000 02:04:02 +0200 From: Hannu Krosing X-Mailer: Mozilla 4.72 [en] (X11; U; Linux 2.2.17 i686) X-Accept-Language: en MIME-Version: 1.0 To: Tom Lane CC: Oleg Bartunov , Bruce Momjian , PostgreSQL-development Subject: Re: Who is a maintainer of GiST code ? References: <1642.977173813@sss.pgh.pa.us> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Archive-Number: 200012/782 X-Sequence-Number: 2303 Tom Lane wrote: > > Oleg Bartunov writes: > > We have a problem with > > handling NULL values in GiST. Any thought how NULL values > > are handle in Rtree. > > AFAIR, none of the index access methods except btree handle NULLs at > all --- they just ignore NULL values and don't store them in the index. > Feel free to improve on that ;-). The physical representation of index > tuples can handle NULLs, the problem is teaching the index logic where > they should go in the index. > > regards, tom lane and I can't see why btree stores them (as it seems to do judging by the index file size) - at least it does not use it for searching for "IS NULL" --8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<------ hannu=# explain select * from nulltest where i is null; NOTICE: QUERY PLAN: Seq Scan on nulltest (cost=0.00..293.80 rows=5461 width=8) EXPLAIN hannu=# explain select * from nulltest where i =1; NOTICE: QUERY PLAN: Index Scan using nulltest_i_ndx on nulltest (cost=0.00..96.95 rows=164 width=8) --8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<------ nulltest is a 16k record table with numbers 1 to 16384 in field i If it just ignored them we would have a nice way to fake partial indexes - just define a function that returns field value or null and then index on that ;) ----------- Hannu