diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index 68109bfda063200d8724b6e5723052e0aa296c1b..80ad3c770a344f56d8b23b8871a6ff69ef973bff 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -60,6 +60,7 @@
 #include "parser/parse_expr.h"
 #include "parser/parse_func.h"
 #include "parser/parse_type.h"
+#include "pgstat.h"
 #include "utils/acl.h"
 #include "utils/builtins.h"
 #include "utils/fmgroids.h"
@@ -2219,6 +2220,7 @@ ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver
 	EState	   *estate;
 	ExprContext *econtext;
 	HeapTuple	tp;
+	PgStat_FunctionCallUsage fcusage;
 	Datum		retval;
 
 	fexpr = stmt->funcexpr;
@@ -2302,7 +2304,9 @@ ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver
 		i++;
 	}
 
+	pgstat_init_function_usage(&fcinfo, &fcusage);
 	retval = FunctionCallInvoke(&fcinfo);
+	pgstat_end_function_usage(&fcusage, true);
 
 	if (fexpr->funcresulttype == VOIDOID)
 	{