diff options
Diffstat (limited to 'src/include/utils/psort.h')
-rw-r--r-- | src/include/utils/psort.h | 88 |
1 files changed, 4 insertions, 84 deletions
diff --git a/src/include/utils/psort.h b/src/include/utils/psort.h index 9a100bad0d8..5f7a638442d 100644 --- a/src/include/utils/psort.h +++ b/src/include/utils/psort.h @@ -1,101 +1,21 @@ /*------------------------------------------------------------------------- * * psort.h - * - * + * Polyphase merge sort. * * Copyright (c) 1994, Regents of the University of California * - * $Id: psort.h,v 1.22 1999/10/13 15:02:28 tgl Exp $ + * $Id: psort.h,v 1.23 1999/10/16 19:49:28 tgl Exp $ * *------------------------------------------------------------------------- */ #ifndef PSORT_H #define PSORT_H -#include "access/relscan.h" +#include "access/htup.h" +#include "access/skey.h" #include "nodes/plannodes.h" -#include "storage/buffile.h" -#include "utils/lselect.h" - -#define MAXTAPES 7 /* See Knuth Fig. 70, p273 */ - -struct tape -{ - int tp_dummy; /* (D) */ - int tp_fib; /* (A) */ - BufFile *tp_file; /* (TAPE) */ - struct tape *tp_prev; -}; - -struct cmplist -{ - int cp_attn; /* attribute number */ - int cp_num; /* comparison function code */ - int cp_rev; /* invert comparison flag */ - struct cmplist *cp_next; /* next in chain */ -}; - -/* This structure preserves the state of psort between calls from different - * nodes to its interface functions. Basically, it includes all of the global - * variables in psort. In case you were wondering, pointers to these structures - * are included in Sort node structures. -Rex 2.6.1995 - */ -typedef struct Psortstate -{ - LeftistContextData treeContext; - - int TapeRange; - int Level; - int TotalDummy; - struct tape Tape[MAXTAPES]; - - int BytesRead; - int BytesWritten; - int tupcount; - - struct leftist *Tuples; - - BufFile *psort_grab_file; - long psort_current; /* array index (only used if not tape) */ - int psort_saved_fileno; /* upper bits of psort_saved, if tape */ - long psort_saved; /* could be file offset, or array index */ - bool using_tape_files; - bool all_fetched; /* this is for cursors */ - - HeapTuple *memtuples; -} Psortstate; - -#ifdef EBUG -#include "storage/buf.h" -#include "storage/bufmgr.h" - -#define PDEBUG(PROC, S1)\ -elog(DEBUG, "%s:%d>> PROC: %s.", __FILE__, __LINE__, S1) - -#define PDEBUG2(PROC, S1, D1)\ -elog(DEBUG, "%s:%d>> PROC: %s %d.", __FILE__, __LINE__, S1, D1) - -#define PDEBUG4(PROC, S1, D1, S2, D2)\ -elog(DEBUG, "%s:%d>> PROC: %s %d, %s %d.", __FILE__, __LINE__, S1, D1, S2, D2) - -#define VDEBUG(VAR, FMT)\ -elog(DEBUG, "%s:%d>> VAR =FMT", __FILE__, __LINE__, VAR) - -#define ASSERT(EXPR, STR)\ -if (!(EXPR)) elog(FATAL, "%s:%d>> %s", __FILE__, __LINE__, STR) - -#define TRACE(VAL, CODE)\ -if (1) CODE; else - -#else -#define PDEBUG(MSG) -#define VDEBUG(VAR, FMT) -#define ASSERT(EXPR, MSG) -#define TRACE(VAL, CODE) -#endif -/* psort.c */ extern bool psort_begin(Sort *node, int nkeys, ScanKey key); extern HeapTuple psort_grabtuple(Sort *node, bool *should_free); extern void psort_markpos(Sort *node); |