1 /*-------------------------------------------------------------------------
2  *
3  * tqueue.h
4  *	  Use shm_mq to send & receive tuples between parallel backends
5  *
6  * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * src/include/executor/tqueue.h
10  *
11  *-------------------------------------------------------------------------
12  */
13 
14 #ifndef TQUEUE_H
15 #define TQUEUE_H
16 
17 #include "storage/shm_mq.h"
18 #include "tcop/dest.h"
19 
20 /* Opaque struct, only known inside tqueue.c. */
21 typedef struct TupleQueueReader TupleQueueReader;
22 
23 /* Use this to send tuples to a shm_mq. */
24 extern DestReceiver *CreateTupleQueueDestReceiver(shm_mq_handle *handle);
25 
26 /* Use these to receive tuples from a shm_mq. */
27 extern TupleQueueReader *CreateTupleQueueReader(shm_mq_handle *handle,
28 					   TupleDesc tupledesc);
29 extern void DestroyTupleQueueReader(TupleQueueReader *reader);
30 extern HeapTuple TupleQueueReaderNext(TupleQueueReader *reader,
31 					 bool nowait, bool *done);
32 
33 #endif							/* TQUEUE_H */
34