| /*------------------------------------------------------------------------- |
| * |
| * sharedtuplestore.h |
| * Simple mechanism for sharing tuples between backends. |
| * |
| * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group |
| * Portions Copyright (c) 1994, Regents of the University of California |
| * |
| * src/include/utils/sharedtuplestore.h |
| * |
| *------------------------------------------------------------------------- |
| */ |
| #ifndef SHAREDTUPLESTORE_H |
| #define SHAREDTUPLESTORE_H |
| |
| #include "access/htup.h" |
| #include "storage/fd.h" |
| #include "storage/sharedfileset.h" |
| |
| struct SharedTuplestore; |
| typedef struct SharedTuplestore SharedTuplestore; |
| |
| struct SharedTuplestoreAccessor; |
| typedef struct SharedTuplestoreAccessor SharedTuplestoreAccessor; |
| |
| /* |
| * A flag indicating that the tuplestore will only be scanned once, so backing |
| * files can be unlinked early. |
| */ |
| #define SHARED_TUPLESTORE_SINGLE_PASS 0x01 |
| |
| extern size_t sts_estimate(int participants); |
| |
| extern SharedTuplestoreAccessor *sts_initialize(SharedTuplestore *sts, |
| int participants, |
| int my_participant_number, |
| size_t meta_data_size, |
| int flags, |
| SharedFileSet *fileset, |
| const char *name); |
| |
| extern SharedTuplestoreAccessor *sts_attach(SharedTuplestore *sts, |
| int my_participant_number, |
| SharedFileSet *fileset); |
| |
| extern void sts_end_write(SharedTuplestoreAccessor *accessor); |
| |
| extern void sts_reinitialize(SharedTuplestoreAccessor *accessor); |
| |
| extern void sts_begin_parallel_scan(SharedTuplestoreAccessor *accessor); |
| |
| extern void sts_end_parallel_scan(SharedTuplestoreAccessor *accessor); |
| |
| extern void sts_puttuple(SharedTuplestoreAccessor *accessor, |
| void *meta_data, |
| MinimalTuple tuple); |
| |
| extern MinimalTuple sts_parallel_scan_next(SharedTuplestoreAccessor *accessor, |
| void *meta_data); |
| |
| #endif /* SHAREDTUPLESTORE_H */ |