mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	Expose a routine to print triggers during EXPLAIN ANALYZE
This is so that auto_explain can use it. Kyotaro HORIGUCHI
This commit is contained in:
		
							parent
							
								
									fe0c690dfd
								
							
						
					
					
						commit
						d2458e3b20
					
				| @ -486,29 +486,7 @@ ExplainOnePlan(PlannedStmt *plannedstmt, IntoClause *into, ExplainState *es, | ||||
| 
 | ||||
| 	/* Print info about runtime of triggers */ | ||||
| 	if (es->analyze) | ||||
| 	{ | ||||
| 		ResultRelInfo *rInfo; | ||||
| 		bool		show_relname; | ||||
| 		int			numrels = queryDesc->estate->es_num_result_relations; | ||||
| 		List	   *targrels = queryDesc->estate->es_trig_target_relations; | ||||
| 		int			nr; | ||||
| 		ListCell   *l; | ||||
| 
 | ||||
| 		ExplainOpenGroup("Triggers", "Triggers", false, es); | ||||
| 
 | ||||
| 		show_relname = (numrels > 1 || targrels != NIL); | ||||
| 		rInfo = queryDesc->estate->es_result_relations; | ||||
| 		for (nr = 0; nr < numrels; rInfo++, nr++) | ||||
| 			report_triggers(rInfo, show_relname, es); | ||||
| 
 | ||||
| 		foreach(l, targrels) | ||||
| 		{ | ||||
| 			rInfo = (ResultRelInfo *) lfirst(l); | ||||
| 			report_triggers(rInfo, show_relname, es); | ||||
| 		} | ||||
| 
 | ||||
| 		ExplainCloseGroup("Triggers", "Triggers", false, es); | ||||
| 	} | ||||
| 		ExplainPrintTriggers(es, queryDesc); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Close down the query and free resources.  Include time for this in the | ||||
| @ -564,6 +542,42 @@ ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc) | ||||
| 	ExplainNode(queryDesc->planstate, NIL, NULL, NULL, es); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * ExplainPrintTriggers - | ||||
| 
 | ||||
|  *	  convert a QueryDesc's trigger statistics to text and append it to | ||||
|  *	  es->str | ||||
|  * | ||||
|  * The caller should have set up the options fields of *es, as well as | ||||
|  * initializing the output buffer es->str.	Other fields in *es are | ||||
|  * initialized here. | ||||
|  */ | ||||
| void | ||||
| ExplainPrintTriggers(ExplainState *es, QueryDesc *queryDesc) | ||||
| { | ||||
| 	ResultRelInfo *rInfo; | ||||
| 	bool		show_relname; | ||||
| 	int			numrels = queryDesc->estate->es_num_result_relations; | ||||
| 	List	   *targrels = queryDesc->estate->es_trig_target_relations; | ||||
| 	int			nr; | ||||
| 	ListCell   *l; | ||||
| 
 | ||||
| 	ExplainOpenGroup("Triggers", "Triggers", false, es); | ||||
| 
 | ||||
| 	show_relname = (numrels > 1 || targrels != NIL); | ||||
| 	rInfo = queryDesc->estate->es_result_relations; | ||||
| 	for (nr = 0; nr < numrels; rInfo++, nr++) | ||||
| 		report_triggers(rInfo, show_relname, es); | ||||
| 
 | ||||
| 	foreach(l, targrels) | ||||
| 	{ | ||||
| 		rInfo = (ResultRelInfo *) lfirst(l); | ||||
| 		report_triggers(rInfo, show_relname, es); | ||||
| 	} | ||||
| 
 | ||||
| 	ExplainCloseGroup("Triggers", "Triggers", false, es); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * ExplainQueryText - | ||||
|  *	  add a "Query Text" node that contains the actual text of the query | ||||
|  | ||||
| @ -71,6 +71,7 @@ extern void ExplainOnePlan(PlannedStmt *plannedstmt, IntoClause *into, | ||||
| 			   const char *queryString, ParamListInfo params); | ||||
| 
 | ||||
| extern void ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc); | ||||
| extern void ExplainPrintTriggers(ExplainState *es, QueryDesc *queryDesc); | ||||
| 
 | ||||
| extern void ExplainQueryText(ExplainState *es, QueryDesc *queryDesc); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user