PostgreSQL Source Code
git master
|
#include "nodes/execnodes.h"
#include "nodes/parsenodes.h"
#include "nodes/plannodes.h"
#include "partitioning/partprune.h"
Go to the source code of this file.
Data Structures | |
struct | PartitionedRelPruningData |
struct | PartitionPruningData |
struct | PartitionPruneState |
Typedefs | |
typedef struct PartitionDispatchData * | PartitionDispatch |
typedef struct PartitionTupleRouting | PartitionTupleRouting |
typedef struct PartitionedRelPruningData | PartitionedRelPruningData |
typedef struct PartitionPruningData | PartitionPruningData |
typedef struct PartitionPruneState | PartitionPruneState |
Functions | |
PartitionTupleRouting * | ExecSetupPartitionTupleRouting (EState *estate, ModifyTableState *mtstate, Relation rel) |
ResultRelInfo * | ExecFindPartition (ModifyTableState *mtstate, ResultRelInfo *rootResultRelInfo, PartitionTupleRouting *proute, TupleTableSlot *slot, EState *estate) |
void | ExecCleanupTupleRouting (ModifyTableState *mtstate, PartitionTupleRouting *proute) |
PartitionPruneState * | ExecCreatePartitionPruneState (PlanState *planstate, PartitionPruneInfo *partitionpruneinfo) |
Bitmapset * | ExecFindMatchingSubPlans (PartitionPruneState *prunestate) |
Bitmapset * | ExecFindInitialMatchingSubPlans (PartitionPruneState *prunestate, int nsubplans) |
typedef struct PartitionDispatchData* PartitionDispatch |
Definition at line 22 of file execPartition.h.
typedef struct PartitionedRelPruningData PartitionedRelPruningData |
typedef struct PartitionPruneState PartitionPruneState |
typedef struct PartitionPruningData PartitionPruningData |
typedef struct PartitionTupleRouting PartitionTupleRouting |
Definition at line 23 of file execPartition.h.
void ExecCleanupTupleRouting | ( | ModifyTableState * | mtstate, |
PartitionTupleRouting * | proute | ||
) |
Definition at line 1184 of file execPartition.c.
References FdwRoutine::EndForeignInsert, ExecCloseIndices(), ExecDropSingleTupleTableSlot(), HASH_FIND, hash_search(), i, NoLock, PartitionTupleRouting::num_dispatch, PartitionTupleRouting::num_partitions, PartitionTupleRouting::partition_dispatch_info, PartitionTupleRouting::partitions, ModifyTableState::ps, RelationGetRelid, PartitionDispatchData::reldesc, ResultRelInfo::ri_FdwRoutine, ResultRelInfo::ri_RelationDesc, PlanState::state, PartitionTupleRouting::subplan_resultrel_htab, table_close(), and PartitionDispatchData::tupslot.
Referenced by apply_handle_tuple_routing(), CopyFrom(), and ExecEndModifyTable().
PartitionPruneState* ExecCreatePartitionPruneState | ( | PlanState * | planstate, |
PartitionPruneInfo * | partitionpruneinfo | ||
) |
Definition at line 1639 of file execPartition.c.
References ALLOCSET_DEFAULT_SIZES, AllocSetContextCreate, Assert, bms_add_members(), bms_copy(), CreatePartitionDirectory(), CurrentMemoryContext, PartitionPruneState::do_exec_prune, PartitionPruneState::do_initial_prune, elog, ERROR, EState::es_partition_directory, EState::es_query_cxt, PartitionedRelPruningData::exec_context, PartitionedRelPruningData::exec_pruning_steps, PartitionedRelPruneInfo::exec_pruning_steps, ExecGetRangeTableRelation(), ExecInitPruningContext(), PartitionPruneState::execparamids, PartitionedRelPruneInfo::execparamids, i, PartitionedRelPruningData::initial_context, PartitionedRelPruningData::initial_pruning_steps, PartitionedRelPruneInfo::initial_pruning_steps, lfirst_node, list_length(), PartitionDescData::nparts, PartitionedRelPruningData::nparts, PartitionedRelPruneInfo::nparts, PartitionPruneState::num_partprunedata, PartitionPruningData::num_partrelprunedata, offsetof, OidIsValid, PartitionDescData::oids, PartitionPruneState::other_subplans, PartitionPruneInfo::other_subplans, palloc(), PartitionDirectoryLookup(), PartitionPruneState::partprunedata, PartitionPruningData::partrelprunedata, PartitionedRelPruningData::present_parts, PartitionedRelPruneInfo::present_parts, PartitionPruneState::prune_context, PartitionPruneInfo::prune_infos, RelationGetPartitionKey(), PartitionedRelPruneInfo::relid_map, PartitionedRelPruneInfo::rtindex, PlanState::state, PartitionedRelPruningData::subpart_map, PartitionedRelPruneInfo::subpart_map, PartitionedRelPruningData::subplan_map, and PartitionedRelPruneInfo::subplan_map.
Referenced by ExecInitAppend(), and ExecInitMergeAppend().
Bitmapset* ExecFindInitialMatchingSubPlans | ( | PartitionPruneState * | prunestate, |
int | nsubplans | ||
) |
Definition at line 1927 of file execPartition.c.
References Assert, bms_add_member(), bms_add_members(), bms_copy(), bms_free(), bms_is_empty(), bms_next_member(), bms_num_members(), PartitionPruneState::do_exec_prune, PartitionPruneState::do_initial_prune, find_matching_subplans_recurse(), i, PartitionedRelPruningData::initial_context, PartitionedRelPruningData::initial_pruning_steps, MemoryContextReset(), MemoryContextSwitchTo(), PartitionedRelPruningData::nparts, PartitionPruneState::num_partprunedata, PartitionPruningData::num_partrelprunedata, PartitionPruneState::other_subplans, palloc0(), PartitionPruneState::partprunedata, PartitionPruningData::partrelprunedata, pfree(), PartitionPruneContext::planstate, PartitionedRelPruningData::present_parts, PartitionPruneState::prune_context, PlanState::ps_ExprContext, ResetExprContext, PartitionedRelPruningData::subpart_map, and PartitionedRelPruningData::subplan_map.
Referenced by ExecInitAppend(), and ExecInitMergeAppend().
Bitmapset* ExecFindMatchingSubPlans | ( | PartitionPruneState * | prunestate | ) |
Definition at line 2094 of file execPartition.c.
References Assert, bms_add_members(), bms_copy(), PartitionPruneState::do_exec_prune, PartitionedRelPruningData::exec_context, PartitionedRelPruningData::exec_pruning_steps, find_matching_subplans_recurse(), i, MemoryContextReset(), MemoryContextSwitchTo(), PartitionPruneState::num_partprunedata, PartitionPruneState::other_subplans, PartitionPruneState::partprunedata, PartitionPruningData::partrelprunedata, PartitionPruneContext::planstate, PartitionPruneState::prune_context, PlanState::ps_ExprContext, and ResetExprContext.
Referenced by choose_next_subplan_for_leader(), choose_next_subplan_for_worker(), choose_next_subplan_locally(), and ExecMergeAppend().
ResultRelInfo* ExecFindPartition | ( | ModifyTableState * | mtstate, |
ResultRelInfo * | rootResultRelInfo, | ||
PartitionTupleRouting * | proute, | ||
TupleTableSlot * | slot, | ||
EState * | estate | ||
) |
Definition at line 277 of file execPartition.c.
References Assert, TupleConversionMap::attrMap, PartitionDescData::boundinfo, CHECK_FOR_INTERRUPTS, CheckValidResultRel(), CMD_INSERT, PartitionBoundInfoData::default_index, ExprContext::ecxt_scantuple, ereport, errcode(), errdetail(), errmsg(), ERROR, errtable(), ExecBuildSlotPartitionKeyDescription(), ExecClearTuple(), ExecInitPartitionDispatchInfo(), ExecInitPartitionInfo(), ExecInitRoutingInfo(), ExecPartitionCheck(), execute_attr_map_slot(), FormPartitionKeyDatum(), get_partition_for_tuple(), GetPerTupleExprContext, GetPerTupleMemoryContext, HASH_FIND, hash_search(), PartitionDispatchData::indexes, PartitionDescData::is_leaf, likely, MemoryContextSwitchTo(), PartitionTupleRouting::nonleaf_partitions, PartitionDescData::nparts, PartitionTupleRouting::num_dispatch, PartitionTupleRouting::num_partitions, OidIsValid, PartitionDescData::oids, PartitionDispatchData::partdesc, PartitionTupleRouting::partition_dispatch_info, PARTITION_MAX_KEYS, PartitionTupleRouting::partitions, ModifyTableState::ps, RelationData::rd_rel, RelationGetRelationName, RelationGetRelid, PartitionDispatchData::reldesc, ResultRelInfo::ri_PartitionTupleSlot, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_RootToPartitionMap, SubplanResultRelHashElem::rri, PlanState::state, PartitionTupleRouting::subplan_resultrel_htab, PartitionDispatchData::tupmap, PartitionDispatchData::tupslot, and values.
Referenced by apply_handle_tuple_routing(), CopyFrom(), and ExecPrepareTupleRouting().
PartitionTupleRouting* ExecSetupPartitionTupleRouting | ( | EState * | estate, |
ModifyTableState * | mtstate, | ||
Relation | rel | ||
) |
Definition at line 217 of file execPartition.c.
References CMD_UPDATE, CurrentMemoryContext, ExecHashSubPlanResultRelsByOid(), ExecInitPartitionDispatchInfo(), PartitionTupleRouting::memcxt, ModifyTable::operation, palloc0(), PartitionTupleRouting::partition_root, PlanState::plan, ModifyTableState::ps, and RelationGetRelid.
Referenced by apply_handle_tuple_routing(), CopyFrom(), and ExecInitModifyTable().