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