@ -846,7 +846,7 @@ pgstat_reset_counters(void)
* GRANT system .
* GRANT system .
*/
*/
void
void
pgstat_reset ( PgStat_Kind kind , Oid dboid , Oid objo id)
pgstat_reset ( PgStat_Kind kind , Oid dboid , uint64 obj id)
{
{
const PgStat_KindInfo * kind_info = pgstat_get_kind_info ( kind ) ;
const PgStat_KindInfo * kind_info = pgstat_get_kind_info ( kind ) ;
TimestampTz ts = GetCurrentTimestamp ( ) ;
TimestampTz ts = GetCurrentTimestamp ( ) ;
@ -855,7 +855,7 @@ pgstat_reset(PgStat_Kind kind, Oid dboid, Oid objoid)
Assert ( ! pgstat_get_kind_info ( kind ) - > fixed_amount ) ;
Assert ( ! pgstat_get_kind_info ( kind ) - > fixed_amount ) ;
/* reset the "single counter" */
/* reset the "single counter" */
pgstat_reset_entry ( kind , dboid , objo id , ts ) ;
pgstat_reset_entry ( kind , dboid , objid , ts ) ;
if ( ! kind_info - > accessed_across_databases )
if ( ! kind_info - > accessed_across_databases )
pgstat_reset_database_timestamp ( dboid , ts ) ;
pgstat_reset_database_timestamp ( dboid , ts ) ;
@ -926,7 +926,7 @@ pgstat_clear_snapshot(void)
}
}
void *
void *
pgstat_fetch_entry ( PgStat_Kind kind , Oid dboid , Oid objo id)
pgstat_fetch_entry ( PgStat_Kind kind , Oid dboid , uint64 obj id)
{
{
PgStat_HashKey key ;
PgStat_HashKey key ;
PgStat_EntryRef * entry_ref ;
PgStat_EntryRef * entry_ref ;
@ -941,7 +941,7 @@ pgstat_fetch_entry(PgStat_Kind kind, Oid dboid, Oid objoid)
key . kind = kind ;
key . kind = kind ;
key . dboid = dboid ;
key . dboid = dboid ;
key . objo id = objo id ;
key . objid = objid ;
/* if we need to build a full snapshot, do so */
/* if we need to build a full snapshot, do so */
if ( pgstat_fetch_consistency = = PGSTAT_FETCH_CONSISTENCY_SNAPSHOT )
if ( pgstat_fetch_consistency = = PGSTAT_FETCH_CONSISTENCY_SNAPSHOT )
@ -967,7 +967,7 @@ pgstat_fetch_entry(PgStat_Kind kind, Oid dboid, Oid objoid)
pgStatLocal . snapshot . mode = pgstat_fetch_consistency ;
pgStatLocal . snapshot . mode = pgstat_fetch_consistency ;
entry_ref = pgstat_get_entry_ref ( kind , dboid , objo id , false , NULL ) ;
entry_ref = pgstat_get_entry_ref ( kind , dboid , objid , false , NULL ) ;
if ( entry_ref = = NULL | | entry_ref - > shared_entry - > dropped )
if ( entry_ref = = NULL | | entry_ref - > shared_entry - > dropped )
{
{
@ -1036,13 +1036,13 @@ pgstat_get_stat_snapshot_timestamp(bool *have_snapshot)
}
}
bool
bool
pgstat_have_entry ( PgStat_Kind kind , Oid dboid , Oid objo id)
pgstat_have_entry ( PgStat_Kind kind , Oid dboid , uint64 obj id)
{
{
/* fixed-numbered stats always exist */
/* fixed-numbered stats always exist */
if ( pgstat_get_kind_info ( kind ) - > fixed_amount )
if ( pgstat_get_kind_info ( kind ) - > fixed_amount )
return true ;
return true ;
return pgstat_get_entry_ref ( kind , dboid , objo id , false , NULL ) ! = NULL ;
return pgstat_get_entry_ref ( kind , dboid , objid , false , NULL ) ! = NULL ;
}
}
/*
/*
@ -1257,7 +1257,7 @@ pgstat_build_snapshot_fixed(PgStat_Kind kind)
* created , false otherwise .
* created , false otherwise .
*/
*/
PgStat_EntryRef *
PgStat_EntryRef *
pgstat_prep_pending_entry ( PgStat_Kind kind , Oid dboid , Oid objo id, bool * created_entry )
pgstat_prep_pending_entry ( PgStat_Kind kind , Oid dboid , uint64 obj id, bool * created_entry )
{
{
PgStat_EntryRef * entry_ref ;
PgStat_EntryRef * entry_ref ;
@ -1272,7 +1272,7 @@ pgstat_prep_pending_entry(PgStat_Kind kind, Oid dboid, Oid objoid, bool *created
ALLOCSET_SMALL_SIZES ) ;
ALLOCSET_SMALL_SIZES ) ;
}
}
entry_ref = pgstat_get_entry_ref ( kind , dboid , objo id ,
entry_ref = pgstat_get_entry_ref ( kind , dboid , objid ,
true , created_entry ) ;
true , created_entry ) ;
if ( entry_ref - > pending = = NULL )
if ( entry_ref - > pending = = NULL )
@ -1295,11 +1295,11 @@ pgstat_prep_pending_entry(PgStat_Kind kind, Oid dboid, Oid objoid, bool *created
* that it shouldn ' t be needed .
* that it shouldn ' t be needed .
*/
*/
PgStat_EntryRef *
PgStat_EntryRef *
pgstat_fetch_pending_entry ( PgStat_Kind kind , Oid dboid , Oid objo id)
pgstat_fetch_pending_entry ( PgStat_Kind kind , Oid dboid , uint64 obj id)
{
{
PgStat_EntryRef * entry_ref ;
PgStat_EntryRef * entry_ref ;
entry_ref = pgstat_get_entry_ref ( kind , dboid , objo id , false , NULL ) ;
entry_ref = pgstat_get_entry_ref ( kind , dboid , objid , false , NULL ) ;
if ( entry_ref = = NULL | | entry_ref - > pending = = NULL )
if ( entry_ref = = NULL | | entry_ref - > pending = = NULL )
return NULL ;
return NULL ;
@ -1648,8 +1648,9 @@ pgstat_write_statsfile(XLogRecPtr redo)
*/
*/
if ( ! pgstat_is_kind_valid ( ps - > key . kind ) )
if ( ! pgstat_is_kind_valid ( ps - > key . kind ) )
{
{
elog ( WARNING , " found unknown stats entry %u/%u/%u " ,
elog ( WARNING , " found unknown stats entry %u/%u/%llu " ,
ps - > key . kind , ps - > key . dboid , ps - > key . objoid ) ;
ps - > key . kind , ps - > key . dboid ,
( unsigned long long ) ps - > key . objid ) ;
continue ;
continue ;
}
}
@ -1885,8 +1886,9 @@ pgstat_read_statsfile(XLogRecPtr redo)
if ( ! pgstat_is_kind_valid ( key . kind ) )
if ( ! pgstat_is_kind_valid ( key . kind ) )
{
{
elog ( WARNING , " invalid stats kind for entry %u/%u/%u of type %c " ,
elog ( WARNING , " invalid stats kind for entry %u/%u/%llu of type %c " ,
key . kind , key . dboid , key . objoid , t ) ;
key . kind , key . dboid ,
( unsigned long long ) key . objid , t ) ;
goto error ;
goto error ;
}
}
}
}
@ -1957,8 +1959,9 @@ pgstat_read_statsfile(XLogRecPtr redo)
if ( found )
if ( found )
{
{
dshash_release_lock ( pgStatLocal . shared_hash , p ) ;
dshash_release_lock ( pgStatLocal . shared_hash , p ) ;
elog ( WARNING , " found duplicate stats entry %u/%u/%u of type %c " ,
elog ( WARNING , " found duplicate stats entry %u/%u/%llu of type %c " ,
key . kind , key . dboid , key . objoid , t ) ;
key . kind , key . dboid ,
( unsigned long long ) key . objid , t ) ;
goto error ;
goto error ;
}
}
@ -1969,8 +1972,9 @@ pgstat_read_statsfile(XLogRecPtr redo)
pgstat_get_entry_data ( key . kind , header ) ,
pgstat_get_entry_data ( key . kind , header ) ,
pgstat_get_entry_len ( key . kind ) ) )
pgstat_get_entry_len ( key . kind ) ) )
{
{
elog ( WARNING , " could not read data for entry %u/%u/%u of type %c " ,
elog ( WARNING , " could not read data for entry %u/%u/%llu of type %c " ,
key . kind , key . dboid , key . objoid , t ) ;
key . kind , key . dboid ,
( unsigned long long ) key . objid , t ) ;
goto error ;
goto error ;
}
}