1 /*-------------------------------------------------------------------------
2  *
3  * sharedtuplestore.h
4  *	  Simple mechanism for sharing tuples between backends.
5  *
6  * Portions Copyright (c) 1996-2021, 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