1 /*------------------------------------------------------------------------- 2 * 3 * sharedtuplestore.h 4 * Simple mechanism for sharing tuples between 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/utils/sharedtuplestore.h 10 * 11 *------------------------------------------------------------------------- 12 */ 13 #ifndef SHAREDTUPLESTORE_H 14 #define SHAREDTUPLESTORE_H 15 16 #include "access/htup.h" 17 #include "storage/fd.h" 18 #include "storage/sharedfileset.h" 19 20 struct SharedTuplestore; 21 typedef struct SharedTuplestore SharedTuplestore; 22 23 struct SharedTuplestoreAccessor; 24 typedef struct SharedTuplestoreAccessor SharedTuplestoreAccessor; 25 26 /* 27 * A flag indicating that the tuplestore will only be scanned once, so backing 28 * files can be unlinked early. 29 */ 30 #define SHARED_TUPLESTORE_SINGLE_PASS 0x01 31 32 extern size_t sts_estimate(int participants); 33 34 extern SharedTuplestoreAccessor *sts_initialize(SharedTuplestore *sts, 35 int participants, 36 int my_participant_number, 37 size_t meta_data_size, 38 int flags, 39 SharedFileSet *fileset, 40 const char *name); 41 42 extern SharedTuplestoreAccessor *sts_attach(SharedTuplestore *sts, 43 int my_participant_number, 44 SharedFileSet *fileset); 45 46 extern void sts_end_write(SharedTuplestoreAccessor *accessor); 47 48 extern void sts_reinitialize(SharedTuplestoreAccessor *accessor); 49 50 extern void sts_begin_parallel_scan(SharedTuplestoreAccessor *accessor); 51 52 extern void sts_end_parallel_scan(SharedTuplestoreAccessor *accessor); 53 54 extern void sts_puttuple(SharedTuplestoreAccessor *accessor, 55 void *meta_data, 56 MinimalTuple tuple); 57 58 extern MinimalTuple sts_parallel_scan_next(SharedTuplestoreAccessor *accessor, 59 void *meta_data); 60 61 #endif /* SHAREDTUPLESTORE_H */ 62