mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	Prevent duplicate RTEPermissionInfo for plain-inheritance parents
Currently, expand_single_inheritance_child() doesn't reset
perminfoindex in a plain-inheritance parent's child RTE, because
prior to 387f9ed0a0, the executor would use the first child RTE to
locate the parent's RTEPermissionInfo.  That in turn causes
add_rte_to_flat_rtable() to create an extra RTEPermissionInfo
belonging to the parent's child RTE with the same content as the one
belonging to the parent's original ("root") RTE.
In 387f9ed0a0, we changed things so that the executor can now use the
parent's "root" RTE for locating its RTEPermissionInfo instead of the
child RTE, so the latter's perminfoindex need not be set anymore, so
make it so.
Reported-by: Tom Lane
Discussion: https://postgr.es/m/839708.1698174464@sss.pgh.pa.us
Backpatch-through: 16
			
			
This commit is contained in:
		
							parent
							
								
									29d0a77fa6
								
							
						
					
					
						commit
						01575ad788
					
				| @ -494,13 +494,8 @@ expand_single_inheritance_child(PlannerInfo *root, RangeTblEntry *parentrte, | ||||
| 		childrte->inh = false; | ||||
| 	childrte->securityQuals = NIL; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * No permission checking for the child RTE unless it's the parent | ||||
| 	 * relation in its child role, which only applies to traditional | ||||
| 	 * inheritance. | ||||
| 	 */ | ||||
| 	if (childOID != parentOID) | ||||
| 		childrte->perminfoindex = 0; | ||||
| 	/* No permission checking for child RTEs. */ | ||||
| 	childrte->perminfoindex = 0; | ||||
| 
 | ||||
| 	/* Link not-yet-fully-filled child RTE into data structures */ | ||||
| 	parse->rtable = lappend(parse->rtable, childrte); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user