X-Original-To: pgsql-sql@postgresql.org Received: from localhost (postgresql.org [64.49.215.8]) by postgresql.org (Postfix) with ESMTP id D0B624758E6 for ; Tue, 25 Feb 2003 22:29:39 -0500 (EST) Received: from postgresql.org ([64.49.215.8]) by localhost (postgresql.org [64.49.215.8:10024]) (amavisd-new) with SMTP id 62083-02 for ; Tue, 25 Feb 2003 22:29:08 -0500 (EST) Received: from nycsmtp2out.rdc-nyc.rr.com (nycsmtp2out.rdc-nyc.rr.com [24.29.99.223]) by postgresql.org (Postfix) with ESMTP id D20DF474E4F for ; Tue, 25 Feb 2003 22:29:07 -0500 (EST) Received: from math-hat.com (66-65-68-135.nyc.rr.com [66.65.68.135]) by nycsmtp2out.rdc-nyc.rr.com (8.12.1/Road Runner SMTP Server 1.0) with SMTP id h1Q3NPBe001547 for ; Tue, 25 Feb 2003 22:23:25 -0500 (EST) Received: (nullmailer pid 21392 invoked by uid 1000); Wed, 26 Feb 2003 03:29:11 -0000 To: pgsql-sql@postgresql.org Subject: OffsetNumber, picksplit, and GiST Mail-Copies-To: never From: Itai Zukerman Date: Tue, 25 Feb 2003 22:29:11 -0500 Message-ID: <87bs0z1zzs.fsf@matt.w80.math-hat.com> User-Agent: Gnus/5.090015 (Oort Gnus v0.15) Emacs/21.2 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Virus-Scanned: by amavisd-new X-Archive-Number: 200302/572 X-Sequence-Number: 11970 Is the GiST examples I've looked through, in the picksplit functions, I see code that looks roughly like this: bytea *entryvec = (bytea *) PG_GETARG_POINTER(0); OffsetNumber i, maxoff; maxoff = ((VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY)) - 1; for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) { ... DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[i].key)) ... } I'm wondering, since FirstOffsetNumber is 1, what about the 0'th index in entryvec? Is it just not set? Also, is there some rationalle for using OffsetNumber in GIST_SPLITVEC? I see in off.h: /* * OffsetNumber: * * this is a 1-based index into the linp (ItemIdData) array in the * header of each disk page. */ and I don't get the connection with what picksplit is doing (keeping in mind that I don't know what "linp", "ItemIdData" or "disk page" mean). I have a very tenuous understanding of all this, so please bear with me. -- Itai Zukerman