mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Remove bogus code to apply PathTargets to partial paths.
The partial paths that get modified may already have been used as part of a GatherPath which appears in the path list, so modifying them is not a good idea at this stage - especially because this code has no check that the PathTarget is in fact parallel-safe. When partial aggregation is being performed, this is actually harmless because we'll end up replacing the pathtargets here with the correct ones within create_grouping_paths(). But if we've got a query tree containing only scan/join operations then this can result in incorrectly pushing down parallel-restricted target list entries. If those are, for example, references to subqueries, that can crash the server; but it's wrong in any event. Amit Kapila
This commit is contained in:
		@@ -1758,19 +1758,6 @@ grouping_planner(PlannerInfo *root, bool inheritance_update,
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * Likewise for any partial paths, although this case is simpler, since
 | 
			
		||||
		 * we don't track the cheapest path.
 | 
			
		||||
		 */
 | 
			
		||||
		foreach(lc, current_rel->partial_pathlist)
 | 
			
		||||
		{
 | 
			
		||||
			Path	   *subpath = (Path *) lfirst(lc);
 | 
			
		||||
 | 
			
		||||
			Assert(subpath->param_info == NULL);
 | 
			
		||||
			lfirst(lc) = apply_projection_to_path(root, current_rel,
 | 
			
		||||
											subpath, scanjoin_target);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * Save the various upper-rel PathTargets we just computed into
 | 
			
		||||
		 * root->upper_targets[].  The core code doesn't use this, but it
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user