mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Mark more nodes with attribute no_query_jumble
This commit removes most of the Plan and Path nodes, which should never be included in the query jumbling because we ignore these in Query nodes. This is facilitated by making no_query_jumble an inherited attribute, like no_copy, no_equal and no_read when the supertype of a node is found as marked with that. RawStmt is not used in parsed queries, so it can be removed from the query jumbling. A couple of nodes defined in pathnodes.h, plannodes.h and primnodes.h with NodeTag as supertype need to be marked individually. Forcing the execution of the query jumbling code with compute_query_id = auto while pg_stat_statements is loaded brings the code coverage of queryjumblefuncs.funcs.c to 95.6%. The core code does not yet include a way to enforce the execution in query jumbling except in pg_stat_statements, so the numbers I am mentioning above will not reflect on the default coverage report with just what is done in this commit. Reported-by: Tom Lane Reviewed-by: Tom Lane Discussion: https://postgr.es/m/3344827.1675809127@sss.pgh.pa.us
This commit is contained in:
		@@ -77,10 +77,10 @@ typedef enum NodeTag
 | 
			
		||||
 *
 | 
			
		||||
 * Node types can be supertypes of other types whether or not they are marked
 | 
			
		||||
 * abstract: if a node struct appears as the first field of another struct
 | 
			
		||||
 * type, then it is the supertype of that type.  The no_copy, no_equal, and
 | 
			
		||||
 * no_read node attributes are automatically inherited from the supertype.
 | 
			
		||||
 * (Notice that nodetag_only does not inherit, so it's not quite equivalent
 | 
			
		||||
 * to a combination of other attributes.)
 | 
			
		||||
 * type, then it is the supertype of that type.  The no_copy, no_equal,
 | 
			
		||||
 * no_query_jumble and no_read node attributes are automatically inherited
 | 
			
		||||
 * from the supertype.  (Notice that nodetag_only does not inherit, so it's
 | 
			
		||||
 * not quite equivalent to a combination of other attributes.)
 | 
			
		||||
 *
 | 
			
		||||
 * Valid node field attributes:
 | 
			
		||||
 *
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user