aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access')
-rw-r--r--src/backend/access/nbtree/nbtsort.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/src/backend/access/nbtree/nbtsort.c b/src/backend/access/nbtree/nbtsort.c
index c3a8012da20..c8c494d3f94 100644
--- a/src/backend/access/nbtree/nbtsort.c
+++ b/src/backend/access/nbtree/nbtsort.c
@@ -5,7 +5,7 @@
*
*
* IDENTIFICATION
- * $Id: nbtsort.c,v 1.37 1999/02/21 03:48:27 scrappy Exp $
+ * $Id: nbtsort.c,v 1.38 1999/05/09 00:53:19 tgl Exp $
*
* NOTES
*
@@ -85,11 +85,9 @@ static void _bt_uppershutdown(Relation index, BTPageState *state);
#define MAXTAPES (7)
#define TAPEBLCKSZ (BLCKSZ << 2)
-#define TAPETEMP "pg_btsortXXXXXXX"
extern int NDirectFileRead;
extern int NDirectFileWrite;
-extern char *mktemp(char *template);
/*
* this is what we use to shovel BTItems in and out of memory. it's
@@ -107,7 +105,7 @@ extern char *mktemp(char *template);
typedef struct
{
int bttb_magic; /* magic number */
- int bttb_fd; /* file descriptor */
+ File bttb_fd; /* file descriptor */
int bttb_top; /* top of free space within bttb_data */
short bttb_ntup; /* number of tuples in this block */
short bttb_eor; /* End-Of-Run marker */
@@ -380,7 +378,7 @@ _bt_tapereset(BTTapeBlock *tape)
static void
_bt_taperewind(BTTapeBlock *tape)
{
- FileSeek(tape->bttb_fd, 0, SEEK_SET);
+ FileSeek(tape->bttb_fd, 0L, SEEK_SET);
}
/*
@@ -411,7 +409,7 @@ _bt_tapeclear(BTTapeBlock *tape)
* as well as opening a physical tape file.
*/
static BTTapeBlock *
-_bt_tapecreate(char *fname)
+_bt_tapecreate(void)
{
BTTapeBlock *tape = (BTTapeBlock *) palloc(sizeof(BTTapeBlock));
@@ -420,11 +418,7 @@ _bt_tapecreate(char *fname)
tape->bttb_magic = BTTAPEMAGIC;
-#ifndef __CYGWIN32__
- tape->bttb_fd = FileNameOpenFile(fname, O_RDWR | O_CREAT | O_TRUNC, 0600);
-#else
- tape->bttb_fd = FileNameOpenFile(fname, O_RDWR | O_CREAT | O_TRUNC | O_BINARY, 0600);
-#endif
+ tape->bttb_fd = OpenTemporaryFile();
Assert(tape->bttb_fd >= 0);
/* initialize the buffer */
@@ -467,7 +461,7 @@ _bt_tapewrite(BTTapeBlock *tape, int eor)
static int
_bt_taperead(BTTapeBlock *tape)
{
- int fd;
+ File fd;
int nread;
if (tape->bttb_eor)
@@ -550,9 +544,8 @@ _bt_spoolinit(Relation index, int ntapes, bool isunique)
{
BTSpool *btspool = (BTSpool *) palloc(sizeof(BTSpool));
int i;
- char *fname = (char *) palloc(sizeof(TAPETEMP) + 1);
- if (btspool == (BTSpool *) NULL || fname == (char *) NULL)
+ if (btspool == (BTSpool *) NULL)
elog(ERROR, "_bt_spoolinit: out of memory");
MemSet((char *) btspool, 0, sizeof(BTSpool));
btspool->bts_ntapes = ntapes;
@@ -567,10 +560,9 @@ _bt_spoolinit(Relation index, int ntapes, bool isunique)
for (i = 0; i < ntapes; ++i)
{
- btspool->bts_itape[i] = _bt_tapecreate(mktemp(strcpy(fname, TAPETEMP)));
- btspool->bts_otape[i] = _bt_tapecreate(mktemp(strcpy(fname, TAPETEMP)));
+ btspool->bts_itape[i] = _bt_tapecreate();
+ btspool->bts_otape[i] = _bt_tapecreate();
}
- pfree((void *) fname);
_bt_isortcmpinit(index, btspool);