adjust query id feature to use pg_stat_activity.query_id

Previously, it was pg_stat_activity.queryid to match the
pg_stat_statements queryid column.  This is an adjustment to patch
4f0b0966c8.  This also adjusts some of the internal function calls to
match.  Catversion bumped.

Reported-by: Álvaro Herrera, Julien Rouhaud

Discussion: https://postgr.es/m/20210408032704.GA7498@alvherre.pgsql
This commit is contained in:
Bruce Momjian 2021-04-20 12:22:26 -04:00
parent 7645376774
commit 9660834dd8
14 changed files with 40 additions and 40 deletions

View File

@ -919,7 +919,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>queryid</structfield> <type>bigint</type>
<structfield>query_id</structfield> <type>bigint</type>
</para>
<para>
Identifier of this backend's most recent query. If

View File

@ -833,7 +833,7 @@ CREATE VIEW pg_stat_activity AS
S.state,
S.backend_xid,
s.backend_xmin,
S.queryid,
S.query_id,
S.query,
S.backend_type
FROM pg_stat_get_activity(NULL) AS S

View File

@ -131,11 +131,11 @@ ExecutorStart(QueryDesc *queryDesc, int eflags)
{
/*
* In some cases (e.g. an EXECUTE statement) a query execution will skip
* parse analysis, which means that the queryid won't be reported. Note
* that it's harmless to report the queryid multiple time, as the call will
* be ignored if the top level queryid has already been reported.
* parse analysis, which means that the query_id won't be reported. Note
* that it's harmless to report the query_id multiple time, as the call will
* be ignored if the top level query_id has already been reported.
*/
pgstat_report_queryid(queryDesc->plannedstmt->queryId, false);
pgstat_report_query_id(queryDesc->plannedstmt->queryId, false);
if (ExecutorStart_hook)
(*ExecutorStart_hook) (queryDesc, eflags);

View File

@ -175,7 +175,7 @@ ExecSerializePlan(Plan *plan, EState *estate)
*/
pstmt = makeNode(PlannedStmt);
pstmt->commandType = CMD_SELECT;
pstmt->queryId = pgstat_get_my_queryid();
pstmt->queryId = pgstat_get_my_query_id();
pstmt->hasReturning = false;
pstmt->hasModifyingCTE = false;
pstmt->canSetTag = true;

View File

@ -132,7 +132,7 @@ parse_analyze(RawStmt *parseTree, const char *sourceText,
free_parsestate(pstate);
pgstat_report_queryid(query->queryId, false);
pgstat_report_query_id(query->queryId, false);
return query;
}
@ -171,7 +171,7 @@ parse_analyze_varparams(RawStmt *parseTree, const char *sourceText,
free_parsestate(pstate);
pgstat_report_queryid(query->queryId, false);
pgstat_report_query_id(query->queryId, false);
return query;
}

View File

@ -694,7 +694,7 @@ pg_analyze_and_rewrite_params(RawStmt *parsetree,
free_parsestate(pstate);
pgstat_report_queryid(query->queryId, false);
pgstat_report_query_id(query->queryId, false);
if (log_parser_stats)
ShowUsage("PARSE ANALYSIS STATISTICS");
@ -1031,7 +1031,7 @@ exec_simple_query(const char *query_string)
DestReceiver *receiver;
int16 format;
pgstat_report_queryid(0, true);
pgstat_report_query_id(0, true);
/*
* Get the command name for use in status display (it also becomes the

View File

@ -544,7 +544,7 @@ pgstat_report_activity(BackendState state, const char *cmd_str)
beentry->st_activity_start_timestamp = 0;
/* st_xact_start_timestamp and wait_event_info are also disabled */
beentry->st_xact_start_timestamp = 0;
beentry->st_queryid = UINT64CONST(0);
beentry->st_query_id = UINT64CONST(0);
proc->wait_event_info = 0;
PGSTAT_END_WRITE_ACTIVITY(beentry);
}
@ -605,7 +605,7 @@ pgstat_report_activity(BackendState state, const char *cmd_str)
* identifier.
*/
if (state == STATE_RUNNING)
beentry->st_queryid = UINT64CONST(0);
beentry->st_query_id = UINT64CONST(0);
if (cmd_str != NULL)
{
@ -618,32 +618,32 @@ pgstat_report_activity(BackendState state, const char *cmd_str)
}
/* --------
* pgstat_report_queryid() -
* pgstat_report_query_id() -
*
* Called to update top-level query identifier.
* --------
*/
void
pgstat_report_queryid(uint64 queryId, bool force)
pgstat_report_query_id(uint64 query_id, bool force)
{
volatile PgBackendStatus *beentry = MyBEEntry;
/*
* if track_activities is disabled, st_queryid should already have been
* if track_activities is disabled, st_query_id should already have been
* reset
*/
if (!beentry || !pgstat_track_activities)
return;
/*
* We only report the top-level query identifiers. The stored queryid is
* We only report the top-level query identifiers. The stored query_id is
* reset when a backend calls pgstat_report_activity(STATE_RUNNING), or
* with an explicit call to this function using the force flag. If the
* saved query identifier is not zero it means that it's not a top-level
* command, so ignore the one provided unless it's an explicit call to
* reset the identifier.
*/
if (beentry->st_queryid != 0 && !force)
if (beentry->st_query_id != 0 && !force)
return;
/*
@ -652,7 +652,7 @@ pgstat_report_queryid(uint64 queryId, bool force)
* ensure the compiler doesn't try to get cute.
*/
PGSTAT_BEGIN_WRITE_ACTIVITY(beentry);
beentry->st_queryid = queryId;
beentry->st_query_id = query_id;
PGSTAT_END_WRITE_ACTIVITY(beentry);
}
@ -1022,12 +1022,12 @@ pgstat_get_crashed_backend_activity(int pid, char *buffer, int buflen)
}
/* ----------
* pgstat_get_my_queryid() -
* pgstat_get_my_query_id() -
*
* Return current backend's query identifier.
*/
uint64
pgstat_get_my_queryid(void)
pgstat_get_my_query_id(void)
{
if (!MyBEEntry)
return 0;
@ -1037,7 +1037,7 @@ pgstat_get_my_queryid(void)
* pg_stat_get_activity which is already protected, or from the same
* backend which means that there won't be concurrent writes.
*/
return MyBEEntry->st_queryid;
return MyBEEntry->st_query_id;
}

View File

@ -914,10 +914,10 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
values[27] = BoolGetDatum(false); /* GSS Encryption not in
* use */
}
if (beentry->st_queryid == 0)
if (beentry->st_query_id == 0)
nulls[29] = true;
else
values[29] = UInt64GetDatum(beentry->st_queryid);
values[29] = UInt64GetDatum(beentry->st_query_id);
}
else
{

View File

@ -2717,10 +2717,10 @@ log_line_prefix(StringInfo buf, ErrorData *edata)
case 'Q':
if (padding != 0)
appendStringInfo(buf, "%*lld", padding,
(long long) pgstat_get_my_queryid());
(long long) pgstat_get_my_query_id());
else
appendStringInfo(buf, "%lld",
(long long) pgstat_get_my_queryid());
(long long) pgstat_get_my_query_id());
break;
default:
/* format error - ignore it */
@ -2967,7 +2967,7 @@ write_csvlog(ErrorData *edata)
appendStringInfoChar(&buf, ',');
/* query id */
appendStringInfo(&buf, "%lld", (long long) pgstat_get_my_queryid());
appendStringInfo(&buf, "%lld", (long long) pgstat_get_my_query_id());
appendStringInfoChar(&buf, '\n');

View File

@ -39,7 +39,7 @@
#define JUMBLE_SIZE 1024 /* query serialization buffer size */
static uint64 compute_utility_queryid(const char *str, int query_location, int query_len);
static uint64 compute_utility_query_id(const char *str, int query_location, int query_len);
static void AppendJumble(JumbleState *jstate,
const unsigned char *item, Size size);
static void JumbleQueryInternal(JumbleState *jstate, Query *query);
@ -97,7 +97,7 @@ JumbleQuery(Query *query, const char *querytext)
JumbleState *jstate = NULL;
if (query->utilityStmt)
{
query->queryId = compute_utility_queryid(querytext,
query->queryId = compute_utility_query_id(querytext,
query->stmt_location,
query->stmt_len);
}
@ -135,7 +135,7 @@ JumbleQuery(Query *query, const char *querytext)
* Compute a query identifier for the given utility query string.
*/
static uint64
compute_utility_queryid(const char *query_text, int query_location, int query_len)
compute_utility_query_id(const char *query_text, int query_location, int query_len)
{
uint64 queryId;
const char *sql;

View File

@ -53,6 +53,6 @@
*/
/* yyyymmddN */
#define CATALOG_VERSION_NO 202104162
#define CATALOG_VERSION_NO 202104201
#endif

View File

@ -5281,7 +5281,7 @@
prorettype => 'record', proargtypes => 'int4',
proallargtypes => '{int4,oid,int4,oid,text,text,text,text,text,timestamptz,timestamptz,timestamptz,timestamptz,inet,text,int4,xid,xid,text,bool,text,text,int4,text,numeric,text,bool,text,bool,int4,int8}',
proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
proargnames => '{pid,datid,pid,usesysid,application_name,state,query,wait_event_type,wait_event,xact_start,query_start,backend_start,state_change,client_addr,client_hostname,client_port,backend_xid,backend_xmin,backend_type,ssl,sslversion,sslcipher,sslbits,ssl_client_dn,ssl_client_serial,ssl_issuer_dn,gss_auth,gss_princ,gss_enc,leader_pid,queryid}',
proargnames => '{pid,datid,pid,usesysid,application_name,state,query,wait_event_type,wait_event,xact_start,query_start,backend_start,state_change,client_addr,client_hostname,client_port,backend_xid,backend_xmin,backend_type,ssl,sslversion,sslcipher,sslbits,ssl_client_dn,ssl_client_serial,ssl_issuer_dn,gss_auth,gss_princ,gss_enc,leader_pid,query_id}',
prosrc => 'pg_stat_get_activity' },
{ oid => '3318',
descr => 'statistics: information about progress of backends running maintenance command',

View File

@ -167,7 +167,7 @@ typedef struct PgBackendStatus
int64 st_progress_param[PGSTAT_NUM_PROGRESS_PARAM];
/* query identifier, optionally computed using post_parse_analyze_hook */
uint64 st_queryid;
uint64 st_query_id;
} PgBackendStatus;
@ -297,14 +297,14 @@ extern void pgstat_clear_backend_activity_snapshot(void);
/* Activity reporting functions */
extern void pgstat_report_activity(BackendState state, const char *cmd_str);
extern void pgstat_report_queryid(uint64 queryId, bool force);
extern void pgstat_report_query_id(uint64 query_id, bool force);
extern void pgstat_report_tempfile(size_t filesize);
extern void pgstat_report_appname(const char *appname);
extern void pgstat_report_xact_timestamp(TimestampTz tstamp);
extern const char *pgstat_get_backend_current_activity(int pid, bool checkUser);
extern const char *pgstat_get_crashed_backend_activity(int pid, char *buffer,
int buflen);
extern uint64 pgstat_get_my_queryid(void);
extern uint64 pgstat_get_my_query_id(void);
/* ----------

View File

@ -1762,10 +1762,10 @@ pg_stat_activity| SELECT s.datid,
s.state,
s.backend_xid,
s.backend_xmin,
s.queryid,
s.query_id,
s.query,
s.backend_type
FROM ((pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, leader_pid, queryid)
FROM ((pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, leader_pid, query_id)
LEFT JOIN pg_database d ON ((s.datid = d.oid)))
LEFT JOIN pg_authid u ON ((s.usesysid = u.oid)));
pg_stat_all_indexes| SELECT c.oid AS relid,
@ -1877,7 +1877,7 @@ pg_stat_gssapi| SELECT s.pid,
s.gss_auth AS gss_authenticated,
s.gss_princ AS principal,
s.gss_enc AS encrypted
FROM pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, leader_pid, queryid)
FROM pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, leader_pid, query_id)
WHERE (s.client_port IS NOT NULL);
pg_stat_prefetch_recovery| SELECT s.stats_reset,
s.prefetch,
@ -2058,7 +2058,7 @@ pg_stat_replication| SELECT s.pid,
w.sync_priority,
w.sync_state,
w.reply_time
FROM ((pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, leader_pid, queryid)
FROM ((pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, leader_pid, query_id)
JOIN pg_stat_get_wal_senders() w(pid, state, sent_lsn, write_lsn, flush_lsn, replay_lsn, write_lag, flush_lag, replay_lag, sync_priority, sync_state, reply_time) ON ((s.pid = w.pid)))
LEFT JOIN pg_authid u ON ((s.usesysid = u.oid)));
pg_stat_replication_slots| SELECT s.slot_name,
@ -2090,7 +2090,7 @@ pg_stat_ssl| SELECT s.pid,
s.ssl_client_dn AS client_dn,
s.ssl_client_serial AS client_serial,
s.ssl_issuer_dn AS issuer_dn
FROM pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, leader_pid, queryid)
FROM pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, leader_pid, query_id)
WHERE (s.client_port IS NOT NULL);
pg_stat_subscription| SELECT su.oid AS subid,
su.subname,