| 1 | /*------------------------------------------------------------------------- |
| 2 | * |
| 3 | * tqueue.h |
| 4 | * Use shm_mq to send & receive tuples between parallel backends |
| 5 | * |
| 6 | * Portions Copyright (c) 1996-2019, 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 | extern void DestroyTupleQueueReader(TupleQueueReader *reader); |
| 29 | extern HeapTuple TupleQueueReaderNext(TupleQueueReader *reader, |
| 30 | bool nowait, bool *done); |
| 31 | |
| 32 | #endif /* TQUEUE_H */ |
| 33 | |