aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeHashjoin.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>1999-10-13 15:02:32 +0000
committerTom Lane <tgl@sss.pgh.pa.us>1999-10-13 15:02:32 +0000
commitdb3c4c3a2d980dcdd9a19feeddd11230587f0d21 (patch)
tree2505c67a886b7f5696fa8885da1a98219043e14d /src/backend/executor/nodeHashjoin.c
parentc3ac9f07b7bf2f764155a9b0e97c761fa780ac27 (diff)
downloadpostgresql-db3c4c3a2d980dcdd9a19feeddd11230587f0d21.tar.gz
postgresql-db3c4c3a2d980dcdd9a19feeddd11230587f0d21.zip
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.
Diffstat (limited to 'src/backend/executor/nodeHashjoin.c')
-rw-r--r--src/backend/executor/nodeHashjoin.c14
1 files changed, 4 insertions, 10 deletions
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");
/*