citus/src/include/distributed/executor_util.h

46 lines
1.6 KiB
C

/*-------------------------------------------------------------------------
*
* executor_util.h
* Utility functions for executing task lists.
*
*-------------------------------------------------------------------------
*/
#ifndef EXECUTOR_UTIL_H
#define EXECUTOR_UTIL_H
#include "fmgr.h"
#include "funcapi.h"
#include "access/tupdesc.h"
#include "nodes/params.h"
#include "nodes/pg_list.h"
#include "distributed/multi_physical_planner.h"
/* utility functions for dealing with tasks in the executor */
extern bool TaskListModifiesDatabase(RowModifyLevel modLevel, List *taskList);
extern bool TaskListRequiresRollback(List *taskList);
extern bool TaskListRequires2PC(List *taskList);
extern bool TaskListCannotBeExecutedInTransaction(List *taskList);
extern bool SelectForUpdateOnReferenceTable(List *taskList);
extern bool ReadOnlyTask(TaskType taskType);
extern bool ModifiedTableReplicated(List *taskList);
extern bool ShouldRunTasksSequentially(List *taskList);
/* utility functions for handling parameters in the executor */
extern void ExtractParametersForRemoteExecution(ParamListInfo paramListInfo,
Oid **parameterTypes,
const char ***parameterValues);
extern void ExtractParametersFromParamList(ParamListInfo paramListInfo,
Oid **parameterTypes,
const char ***parameterValues, bool
useOriginalCustomTypeOids);
/* utility functions for processing tuples in the executor */
extern AttInMetadata * TupleDescGetAttBinaryInMetadata(TupleDesc tupdesc);
extern HeapTuple BuildTupleFromBytes(AttInMetadata *attinmeta, fmStringInfo *values);
#endif /* EXECUTOR_UTIL_H */