blob: 46415392e774404bd91b96ce368557b9c47c22c8 [file] [log] [blame]
/*-------------------------------------------------------------------------
*
* htupfifo.h
* A FIFO queue for HeapTuples.
*
* NOTES:
* This FIFO doesn't do any tuple-copying right now. It may be that we
* need to take memory-contexts into account in the future, and that
* would mean we would possibly need to make copies of tuples when they
* are added and/or when they are retrieved.
*
* Portions Copyright (c) 2005-2008, Greenplum inc
* Portions Copyright (c) 2012-Present VMware, Inc. or its affiliates.
*
*
* IDENTIFICATION
* src/include/cdb/htupfifo.h
*
*-------------------------------------------------------------------------
*/
#ifndef HTUPFIFO_H
#define HTUPFIFO_H
#include "access/htup.h"
#include "access/memtup.h"
/* An entry in the HeapTuple FIFO. Entries are formed into queues. */
typedef struct htf_entry_data
{
/* The tuple itself. */
MinimalTuple tup;
/* The next entry in the FIFO. */
struct htf_entry_data *p_next;
} htf_entry_data, *htf_entry;
/* A HeapTuple FIFO. The FIFO is dynamically sizable, since there is no
* specified upper bound on the number of entries in the FIFO.
*/
typedef struct htup_fifo_state
{
htf_entry p_first;
htf_entry p_last;
htf_entry freelist;
} htup_fifo_state, *htup_fifo;
extern htup_fifo htfifo_create(void);
extern void htfifo_destroy(htup_fifo htf);
extern void htfifo_addtuple(htup_fifo htf, MinimalTuple htup);
extern MinimalTuple htfifo_gettuple(htup_fifo htf);
#endif /* HTUPFIFO_H */