From db3c4c3a2d980dcdd9a19feeddd11230587f0d21 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 13 Oct 1999 15:02:32 +0000 Subject: Split 'BufFile' routines out of fd.c into a new module, buffile.c. Extend BufFile so that it handles multi-segment temporary files transparently. This allows sorts and hashes to work with data exceeding 2Gig (or whatever the local limit on file size is). Change psort.c to use relative seeks instead of absolute seeks for backwards scanning, so that it won't fail when the data volume exceeds 2Gig. --- src/backend/executor/nodeHashjoin.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'src/backend/executor/nodeHashjoin.c') diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c index 439b8634cda..ffda9723182 100644 --- a/src/backend/executor/nodeHashjoin.c +++ b/src/backend/executor/nodeHashjoin.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.26 1999/07/17 20:16:58 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.27 1999/10/13 15:02:25 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -129,12 +129,7 @@ ExecHashJoin(HashJoin *node) * ---------------- */ for (i = 0; i < hashtable->nbatch; i++) - { - File tfile = OpenTemporaryFile(); - - Assert(tfile >= 0); - hashtable->outerBatchFile[i] = BufFileCreate(tfile); - } + hashtable->outerBatchFile[i] = BufFileCreateTemp(); } else if (hashtable == NULL) return NULL; @@ -551,13 +546,12 @@ ExecHashJoinNewBatch(HashJoinState *hjstate) * Rewind inner and outer batch files for this batch, so that we can * start reading them. */ - if (BufFileSeek(hashtable->outerBatchFile[newbatch - 1], 0L, - SEEK_SET) != 0L) + if (BufFileSeek(hashtable->outerBatchFile[newbatch - 1], 0, 0L, SEEK_SET)) elog(ERROR, "Failed to rewind hash temp file"); innerFile = hashtable->innerBatchFile[newbatch - 1]; - if (BufFileSeek(innerFile, 0L, SEEK_SET) != 0L) + if (BufFileSeek(innerFile, 0, 0L, SEEK_SET)) elog(ERROR, "Failed to rewind hash temp file"); /* -- cgit v1.2.3