@@ -514,7 +514,7 @@ pg_wait_sampling_get_current(PG_FUNCTION_ARGS)
514514		params -> ts  =  GetCurrentTimestamp ();
515515
516516		funcctx -> user_fctx  =  params ;
517- 		tupdesc  =  CreateTemplateTupleDesc (4 );
517+ 		tupdesc  =  CreateTemplateTupleDesc (7 );
518518		TupleDescInitEntry (tupdesc , (AttrNumber ) 1 , "pid" ,
519519						   INT4OID , -1 , 0 );
520520		TupleDescInitEntry (tupdesc , (AttrNumber ) 2 , "type" ,
@@ -523,6 +523,12 @@ pg_wait_sampling_get_current(PG_FUNCTION_ARGS)
523523						   TEXTOID , -1 , 0 );
524524		TupleDescInitEntry (tupdesc , (AttrNumber ) 4 , "queryid" ,
525525						   INT8OID , -1 , 0 );
526+ 		TupleDescInitEntry (tupdesc , (AttrNumber ) 5 , "isregularbackend" ,
527+ 						   BOOLOID , -1 , 0 );
528+ 				TupleDescInitEntry (tupdesc , (AttrNumber ) 6 , "databaseid" ,
529+ 						   OIDOID , -1 , 0 );
530+ 				TupleDescInitEntry (tupdesc , (AttrNumber ) 7 , "roleid" ,
531+ 						   OIDOID , -1 , 0 );
526532
527533		funcctx -> tuple_desc  =  BlessTupleDesc (tupdesc );
528534
@@ -540,6 +546,9 @@ pg_wait_sampling_get_current(PG_FUNCTION_ARGS)
540546			item -> pid  =  proc -> pid ;
541547			item -> wait_event_info  =  proc -> wait_event_info ;
542548			item -> queryId  =  pgws_proc_queryids [proc  -  ProcGlobal -> allProcs ];
549+ 			item -> isRegularBackend  =  !(proc -> isBackgroundWorker );
550+ 			item -> databaseId  =  proc -> databaseId ;
551+ 			item -> roleId  =  proc -> roleId ;
543552			funcctx -> max_calls  =  1 ;
544553		}
545554		else 
@@ -562,6 +571,9 @@ pg_wait_sampling_get_current(PG_FUNCTION_ARGS)
562571				params -> items [j ].pid  =  proc -> pid ;
563572				params -> items [j ].wait_event_info  =  proc -> wait_event_info ;
564573				params -> items [j ].queryId  =  pgws_proc_queryids [i ];
574+ 				params -> items [j ].isRegularBackend  =  !(proc -> isBackgroundWorker );
575+ 				params -> items [j ].databaseId  =  proc -> databaseId ;
576+ 				params -> items [j ].roleId  =  proc -> roleId ;
565577				j ++ ;
566578			}
567579			funcctx -> max_calls  =  j ;
@@ -579,8 +591,8 @@ pg_wait_sampling_get_current(PG_FUNCTION_ARGS)
579591	if  (funcctx -> call_cntr  <  funcctx -> max_calls )
580592	{
581593		HeapTuple 	tuple ;
582- 		Datum 		values [4 ];
583- 		bool 		nulls [4 ];
594+ 		Datum 		values [7 ];
595+ 		bool 		nulls [7 ];
584596		const  char  * event_type ,
585597				   * event ;
586598		HistoryItem  * item ;
@@ -604,6 +616,9 @@ pg_wait_sampling_get_current(PG_FUNCTION_ARGS)
604616			nulls [2 ] =  true;
605617
606618		values [3 ] =  UInt64GetDatum (item -> queryId );
619+ 		values [4 ] =  BoolGetDatum (item -> isRegularBackend );
620+ 		values [5 ] =  ObjectIdGetDatum (item -> databaseId );
621+ 		values [6 ] =  ObjectIdGetDatum (item -> roleId );
607622		tuple  =  heap_form_tuple (funcctx -> tuple_desc , values , nulls );
608623
609624		SRF_RETURN_NEXT (funcctx , HeapTupleGetDatum (tuple ));
@@ -858,7 +873,7 @@ pg_wait_sampling_get_history(PG_FUNCTION_ARGS)
858873		funcctx -> max_calls  =  history -> count ;
859874
860875		/* Make tuple descriptor */ 
861- 		tupdesc  =  CreateTemplateTupleDesc (5 );
876+ 		tupdesc  =  CreateTemplateTupleDesc (8 );
862877		TupleDescInitEntry (tupdesc , (AttrNumber ) 1 , "pid" ,
863878						   INT4OID , -1 , 0 );
864879		TupleDescInitEntry (tupdesc , (AttrNumber ) 2 , "sample_ts" ,
@@ -869,6 +884,13 @@ pg_wait_sampling_get_history(PG_FUNCTION_ARGS)
869884						   TEXTOID , -1 , 0 );
870885		TupleDescInitEntry (tupdesc , (AttrNumber ) 5 , "queryid" ,
871886						   INT8OID , -1 , 0 );
887+ 		TupleDescInitEntry (tupdesc , (AttrNumber ) 6 , "isregularbackend" ,
888+ 						   BOOLOID , -1 , 0 ),
889+ 		TupleDescInitEntry (tupdesc , (AttrNumber ) 7 , "databaseid" ,
890+ 						   OIDOID , -1 , 0 ),
891+ 		TupleDescInitEntry (tupdesc , (AttrNumber ) 8 , "roleid" ,
892+ 						   OIDOID , -1 , 0 );
893+ 
872894		funcctx -> tuple_desc  =  BlessTupleDesc (tupdesc );
873895
874896		MemoryContextSwitchTo (oldcontext );
@@ -883,8 +905,8 @@ pg_wait_sampling_get_history(PG_FUNCTION_ARGS)
883905	{
884906		HeapTuple 	tuple ;
885907		HistoryItem  * item ;
886- 		Datum 		values [5 ];
887- 		bool 		nulls [5 ];
908+ 		Datum 		values [8 ];
909+ 		bool 		nulls [8 ];
888910		const  char  * event_type ,
889911				   * event ;
890912
@@ -908,6 +930,9 @@ pg_wait_sampling_get_history(PG_FUNCTION_ARGS)
908930			nulls [3 ] =  true;
909931
910932		values [4 ] =  UInt64GetDatum (item -> queryId );
933+ 		values [5 ] =  BoolGetDatum (item -> isRegularBackend );
934+ 		values [6 ] =  ObjectIdGetDatum (item -> databaseId );
935+ 		values [7 ] =  ObjectIdGetDatum (item -> roleId );
911936		tuple  =  heap_form_tuple (funcctx -> tuple_desc , values , nulls );
912937
913938		history -> index ++ ;
0 commit comments