*
* spq_mutate.h
* definitions for spq_mutate.cpp utilities
*
* Portions Copyright (c) 2005-2008, Greenplum inc
* Portions Copyright (c) 2012-Present VMware, Inc. or its affiliates.
*
*
* IDENTIFICATION
* src/include/spq/spq_mutate.h
*
* -------------------------------------------------------------------------
*/
#ifndef SPQ_MUTATE_H
#define SPQ_MUTATE_H
#include "nodes/execnodes.h"
#include "nodes/nodes.h"
#include "nodes/plannodes.h"
typedef struct SpqSliceContext {
PlannedStmt *result;
int curentIndex;
int dmlcount;
} SpqSliceContext;
extern void collect_shareinput_producers(PlannerInfo *root, Plan *plan);
extern Plan *replace_shareinput_targetlists(PlannerInfo *root, Plan *plan);
extern Plan *apply_shareinput_xslice(Plan *plan, PlannerInfo *root, PlanSlice *slices);
extern void remove_subquery_in_RTEs(Node *node);
extern bool is_plan_node(Node *node);
extern void make_spq_remote_query(PlannerInfo *root, PlannedStmt *result, PlannerGlobal *glob);
extern Plan *replace_motion_stream_recurse(PlannerInfo* root, SpqSliceContext *result, Plan *plan, bool &top, bool fromdml = false);
extern Plan* spq_set_plan_references(PlannerInfo* root, Plan* plan);
#endif