mirror of https://github.com/citusdata/citus.git
52 lines
1.8 KiB
C
52 lines
1.8 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* multi_router_planner.h
|
|
*
|
|
* Declarations for public functions and types related to router planning.
|
|
*
|
|
* Copyright (c) 2014-2016, Citus Data, Inc.
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef MULTI_ROUTER_PLANNER_H
|
|
#define MULTI_ROUTER_PLANNER_H
|
|
|
|
#include "c.h"
|
|
|
|
#include "distributed/errormessage.h"
|
|
#include "distributed/multi_logical_planner.h"
|
|
#include "distributed/multi_physical_planner.h"
|
|
#include "distributed/multi_planner.h"
|
|
#include "nodes/parsenodes.h"
|
|
|
|
|
|
/* reserved parameted id, we chose a negative number since it is not assigned by postgres */
|
|
#define UNINSTANTIATED_PARAMETER_ID INT_MIN
|
|
|
|
/* reserved alias name for UPSERTs */
|
|
#define CITUS_TABLE_ALIAS "citus_table_alias"
|
|
|
|
extern bool EnableRouterExecution;
|
|
|
|
extern MultiPlan * CreateRouterPlan(Query *originalQuery, Query *query,
|
|
RelationRestrictionContext *restrictionContext);
|
|
extern MultiPlan * CreateModifyPlan(Query *originalQuery, Query *query,
|
|
RelationRestrictionContext *restrictionContext);
|
|
|
|
extern void AddUninstantiatedPartitionRestriction(Query *originalQuery);
|
|
extern DeferredErrorMessage * ModifyQuerySupported(Query *queryTree);
|
|
extern Query * ReorderInsertSelectTargetLists(Query *originalQuery,
|
|
RangeTblEntry *insertRte,
|
|
RangeTblEntry *subqueryRte);
|
|
extern bool InsertSelectQuery(Query *query);
|
|
extern Oid ExtractFirstDistributedTableId(Query *query);
|
|
extern RangeTblEntry * ExtractSelectRangeTableEntry(Query *query);
|
|
extern RangeTblEntry * ExtractInsertRangeTableEntry(Query *query);
|
|
extern void AddShardIntervalRestrictionToSelect(Query *subqery,
|
|
ShardInterval *shardInterval);
|
|
extern ShardInterval * FastShardPruning(Oid distributedTableId, Datum partitionValue);
|
|
|
|
|
|
#endif /* MULTI_ROUTER_PLANNER_H */
|