mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Faster partition pruning
Add a new module backend/partitioning/partprune.c, implementing a more sophisticated algorithm for partition pruning. The new module uses each partition's "boundinfo" for pruning instead of constraint exclusion, based on an idea proposed by Robert Haas of a "pruning program": a list of steps generated from the query quals which are run iteratively to obtain a list of partitions that must be scanned in order to satisfy those quals. At present, this targets planner-time partition pruning, but there exist further patches to apply partition pruning at execution time as well. This commit also moves some definitions from include/catalog/partition.h to a new file include/partitioning/partbounds.h, in an attempt to rationalize partitioning related code. Authors: Amit Langote, David Rowley, Dilip Kumar Reviewers: Robert Haas, Kyotaro Horiguchi, Ashutosh Bapat, Jesper Pedersen. Discussion: https://postgr.es/m/098b9c71-1915-1a2a-8d52-1a7a50ce79e8@lab.ntt.co.jp
This commit is contained in:
		@@ -193,6 +193,9 @@ typedef enum NodeTag
 | 
			
		||||
	T_FromExpr,
 | 
			
		||||
	T_OnConflictExpr,
 | 
			
		||||
	T_IntoClause,
 | 
			
		||||
	T_PartitionPruneStep,
 | 
			
		||||
	T_PartitionPruneStepOp,
 | 
			
		||||
	T_PartitionPruneStepCombine,
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * TAGS FOR EXPRESSION STATE NODES (execnodes.h)
 | 
			
		||||
@@ -262,7 +265,6 @@ typedef enum NodeTag
 | 
			
		||||
	T_PlaceHolderVar,
 | 
			
		||||
	T_SpecialJoinInfo,
 | 
			
		||||
	T_AppendRelInfo,
 | 
			
		||||
	T_PartitionedChildRelInfo,
 | 
			
		||||
	T_PlaceHolderInfo,
 | 
			
		||||
	T_MinMaxAggInfo,
 | 
			
		||||
	T_PlannerParamItem,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user