mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* lselect.h--
|
|
* definitions for the replacement selection algorithm.
|
|
*
|
|
*
|
|
* Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $Id: lselect.h,v 1.8 1997/11/26 01:14:33 momjian Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef LSELECT_H
|
|
#define LSELECT_H
|
|
|
|
#include <stdio.h>
|
|
|
|
#include "access/skey.h"
|
|
#include "access/tupdesc.h"
|
|
#include "access/htup.h"
|
|
#include "utils/syscache.h"
|
|
|
|
struct leftist
|
|
{
|
|
short lt_dist; /* distance to leaf/empty node */
|
|
short lt_devnum; /* device number of tuple */
|
|
HeapTuple lt_tuple;
|
|
struct leftist *lt_left;
|
|
struct leftist *lt_right;
|
|
};
|
|
|
|
/* replaces global variables in lselect.c to make it reentrant */
|
|
typedef struct
|
|
{
|
|
TupleDesc tupDesc;
|
|
int nKeys;
|
|
ScanKey scanKeys;
|
|
int sortMem; /* needed for psort */
|
|
} LeftistContextData;
|
|
typedef LeftistContextData *LeftistContext;
|
|
|
|
extern struct leftist *
|
|
lmerge(struct leftist * pt, struct leftist * qt,
|
|
LeftistContext context);
|
|
extern HeapTuple
|
|
gettuple(struct leftist ** treep, short *devnum,
|
|
LeftistContext context);
|
|
extern void
|
|
puttuple(struct leftist ** treep, HeapTuple newtuple, short devnum,
|
|
LeftistContext context);
|
|
extern int tuplecmp(HeapTuple ltup, HeapTuple rtup, LeftistContext context);
|
|
|
|
#ifdef EBUG
|
|
extern void checktree(struct leftist * tree, LeftistContext context);
|
|
extern int checktreer(struct leftist * tree, int level, LeftistContext context);
|
|
|
|
#endif /* EBUG */
|
|
|
|
#endif /* LSELECT_H */
|