PG-576 - Segmentation fault caused by pg_stat_monitor unique

queryid creation mechanism.

Resolving the crash identified by regression and reported by Naeem.
This fix resolves the issue with incorrect query length in case of
normalized query when the query length exceeds PGSM_QUERY_MAX_LEN.

Resolving the crash identify by regression and reported by Naeem.
This commit is contained in:
Hamid Akhtar
2023-01-03 01:40:51 +05:00
parent b60eece145
commit f170322f38

View File

@@ -1520,7 +1520,11 @@ pgss_store(uint64 queryid,
pgsm_query_id = pgss_hash_string(norm_query, norm_query_len); pgsm_query_id = pgss_hash_string(norm_query, norm_query_len);
/* Free up norm_query if we don't intend to show normalized version in the view */ /* Free up norm_query if we don't intend to show normalized version in the view */
if (!PGSM_NORMALIZED_QUERY) if (PGSM_NORMALIZED_QUERY)
{
query_len = norm_query_len;
}
else
{ {
if (norm_query) if (norm_query)
pfree(norm_query); pfree(norm_query);
@@ -1559,7 +1563,7 @@ pgss_store(uint64 queryid,
queryid, queryid,
pgss_qbuf, pgss_qbuf,
norm_query ? norm_query : query, norm_query ? norm_query : query,
norm_query ? norm_query_len : query_len, query_len,
&query_entry->query_pos)) &query_entry->query_pos))
{ {
LWLockRelease(pgss->lock); LWLockRelease(pgss->lock);