2
0

sharedtuplestore.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*-------------------------------------------------------------------------
  2. *
  3. * sharedtuplestore.h
  4. * Simple mechanism for sharing tuples between backends.
  5. *
  6. * Portions Copyright (c) 1996-2022, 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. #include "access/htup.h"
  16. #include "storage/fd.h"
  17. #include "storage/sharedfileset.h"
  18. struct SharedTuplestore;
  19. typedef struct SharedTuplestore SharedTuplestore;
  20. struct SharedTuplestoreAccessor;
  21. typedef struct SharedTuplestoreAccessor SharedTuplestoreAccessor;
  22. /*
  23. * A flag indicating that the tuplestore will only be scanned once, so backing
  24. * files can be unlinked early.
  25. */
  26. #define SHARED_TUPLESTORE_SINGLE_PASS 0x01
  27. extern size_t sts_estimate(int participants);
  28. extern SharedTuplestoreAccessor *sts_initialize(SharedTuplestore *sts,
  29. int participants,
  30. int my_participant_number,
  31. size_t meta_data_size,
  32. int flags,
  33. SharedFileSet *fileset,
  34. const char *name);
  35. extern SharedTuplestoreAccessor *sts_attach(SharedTuplestore *sts,
  36. int my_participant_number,
  37. SharedFileSet *fileset);
  38. extern void sts_end_write(SharedTuplestoreAccessor *accessor);
  39. extern void sts_reinitialize(SharedTuplestoreAccessor *accessor);
  40. extern void sts_begin_parallel_scan(SharedTuplestoreAccessor *accessor);
  41. extern void sts_end_parallel_scan(SharedTuplestoreAccessor *accessor);
  42. extern void sts_puttuple(SharedTuplestoreAccessor *accessor,
  43. void *meta_data,
  44. MinimalTuple tuple);
  45. extern MinimalTuple sts_parallel_scan_next(SharedTuplestoreAccessor *accessor,
  46. void *meta_data);
  47. #endif /* SHAREDTUPLESTORE_H */