2017-12-18 23:23:19 +01:00
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
*
|
|
|
|
* sharedtuplestore.h
|
|
|
|
* Simple mechinism for sharing tuples between backends.
|
|
|
|
*
|
2019-01-02 18:44:25 +01:00
|
|
|
* Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
|
2017-12-18 23:23:19 +01:00
|
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
|
|
*
|
|
|
|
* src/include/utils/sharedtuplestore.h
|
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
#ifndef SHAREDTUPLESTORE_H
|
|
|
|
#define SHAREDTUPLESTORE_H
|
|
|
|
|
2017-12-26 16:21:27 +01:00
|
|
|
#include "access/htup.h"
|
2017-12-18 23:23:19 +01:00
|
|
|
#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,
|
2019-05-22 19:04:48 +02:00
|
|
|
int participants,
|
|
|
|
int my_participant_number,
|
|
|
|
size_t meta_data_size,
|
|
|
|
int flags,
|
|
|
|
SharedFileSet *fileset,
|
|
|
|
const char *name);
|
2017-12-18 23:23:19 +01:00
|
|
|
|
|
|
|
extern SharedTuplestoreAccessor *sts_attach(SharedTuplestore *sts,
|
2019-05-22 19:04:48 +02:00
|
|
|
int my_participant_number,
|
|
|
|
SharedFileSet *fileset);
|
2017-12-18 23:23:19 +01:00
|
|
|
|
|
|
|
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,
|
2019-05-22 19:04:48 +02:00
|
|
|
void *meta_data,
|
|
|
|
MinimalTuple tuple);
|
2017-12-18 23:23:19 +01:00
|
|
|
|
|
|
|
extern MinimalTuple sts_parallel_scan_next(SharedTuplestoreAccessor *accessor,
|
2019-05-22 19:04:48 +02:00
|
|
|
void *meta_data);
|
2017-12-18 23:23:19 +01:00
|
|
|
|
|
|
|
#endif /* SHAREDTUPLESTORE_H */
|