X-Original-To: pgsql-general-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 3D42D53B12; Tue, 10 May 2005 20:24:10 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 88754-01; Tue, 10 May 2005 23:24:01 +0000 (GMT) Received: from priv-edtnes46.telusplanet.net (defout.telus.net [199.185.220.240]) by svr1.postgresql.org (Postfix) with ESMTP id 33E96536BA; Tue, 10 May 2005 20:23:59 -0300 (ADT) Received: from localhost ([199.185.220.240]) by priv-edtnes46.telusplanet.net (InterMail vM.6.01.04.04 201-2131-118-104-20050224) with ESMTP id <20050510232402.ETXF7617.priv-edtnes46.telusplanet.net@localhost>; Tue, 10 May 2005 17:24:02 -0600 Received: from 209.17.183.249 ( [209.17.183.249]) as user a3a18850@204.209.205.53 by webmail.telus.net with HTTP; Tue, 10 May 2005 16:24:01 -0700 Message-ID: <1115767441.4281429124b9b@webmail.telus.net> Date: Tue, 10 May 2005 16:24:01 -0700 From: Mischa Sandberg To: Tom Lane Cc: "Jim C. Nasby" , Neil Conway , Christopher Petrilli , Ying Lu , pgsql-general@postgresql.org, pgsql-performance@postgresql.org Subject: Re: [PERFORM] "Hash index" vs. "b-tree index" (PostgreSQL References: <427F6853.90308@cs.concordia.ca> <427F757A.8000407@samurai.com> <59d991c405050908271b55e673@mail.gmail.com> <427F8321.5030702@samurai.com> <20050509163423.GH35026@decibel.org> <427F9211.2090008@samurai.com> <20050509165133.GJ35026@decibel.org> <427FFCD3.1010803@samurai.com> <20050510153245.GA31103@decibel.org> <1115760957.4281293e0155b@webmail.telus.net> <27799.1115765781@sss.pgh.pa.us> In-Reply-To: <27799.1115765781@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: Internet Messaging Program (IMP) 3.1-cvs X-Originating-IP: 209.17.183.249 X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=1.052 tagged_above=0 required=5 tests=AWL, DNS_FROM_RFC_POST, FORGED_RCVD_HELO X-Spam-Level: * X-Archive-Number: 200505/522 X-Sequence-Number: 77870 Quoting Tom Lane : > Mischa Sandberg writes: > > The PG hash join is the simplest possible: build a hash table in > memory, and match an input stream against it. > > [ raised eyebrow... ] Apparently you've not read the code. It's > been hybrid hashjoin since we got it from Berkeley. Probably not the > best possible implementation of the concept, but we do > understand about spill to disk. Apologies. I stopped reading around line 750 (PG 8.0.1) in src/backend/executor/nodeHashjoin.c if (!node->hj_hashdone) { .... /* * execute the Hash node, to build the hash table */ hashNode->hashtable = hashtable; (void) ExecProcNode((PlanState *) hashNode); ... and missed the comment: /* * Open temp files for outer batches, */ Will quietly go and read twice, talk once.