From eb2cf72488a85a7ac9e25e488b22cccd67bb7f34 Mon Sep 17 00:00:00 2001 From: totaj Date: Wed, 11 Jun 2025 09:27:11 +0800 Subject: [PATCH] Support get unique sql without sql query --- .../unique_sql/instr_unique_sql.cpp | 18 +++++++++++++----- src/include/instruments/instr_unique_sql.h | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/gausskernel/cbb/instruments/unique_sql/instr_unique_sql.cpp b/src/gausskernel/cbb/instruments/unique_sql/instr_unique_sql.cpp index 9a9c1b1af..8daa9564d 100755 --- a/src/gausskernel/cbb/instruments/unique_sql/instr_unique_sql.cpp +++ b/src/gausskernel/cbb/instruments/unique_sql/instr_unique_sql.cpp @@ -2697,8 +2697,9 @@ void ResetCurrentUniqueSQL(bool need_reset_cn_id) u_sess->unique_sql_cxt.force_generate_unique_sql = false; } -void FindUniqueSQL(UniqueSQLKey key, char* unique_sql) +bool FindUniqueSQL(UniqueSQLKey key, char* unique_sql) { + bool res = false; errno_t rc = 0; uint32 hashCode = uniqueSQLHashCode(&key, sizeof(key)); (void)LockUniqueSQLHashPartition(hashCode, LW_SHARED); @@ -2706,13 +2707,20 @@ void FindUniqueSQL(UniqueSQLKey key, char* unique_sql) UniqueSQL *entry = (UniqueSQL*)hash_search(g_instance.stat_cxt.UniqueSQLHashtbl, &key, HASH_FIND, NULL); if (entry == NULL) { - rc = strcpy_s(unique_sql, UNIQUE_SQL_MAX_LEN, ""); - securec_check(rc, "\0", "\0"); + if (unique_sql != NULL) { + rc = strcpy_s(unique_sql, UNIQUE_SQL_MAX_LEN, ""); + securec_check(rc, "\0", "\0"); + } + res = false; } else { - rc = strcpy_s(unique_sql, UNIQUE_SQL_MAX_LEN, entry->unique_sql); - securec_check(rc, "\0", "\0"); + if (unique_sql != NULL) { + rc = strcpy_s(unique_sql, UNIQUE_SQL_MAX_LEN, entry->unique_sql); + securec_check(rc, "\0", "\0"); + } + res = true; } UnlockUniqueSQLHashPartition(hashCode); + return res; } char* FindCurrentUniqueSQL() diff --git a/src/include/instruments/instr_unique_sql.h b/src/include/instruments/instr_unique_sql.h index 49eff578c..70af5fa46 100644 --- a/src/include/instruments/instr_unique_sql.h +++ b/src/include/instruments/instr_unique_sql.h @@ -217,7 +217,7 @@ bool isUniqueSQLContextInvalid(); void UpdateSingleNodeByPassUniqueSQLStat(bool isTopLevel); void UpdateUniqueSQLHashStats(HashJoinTable hashtable, TimestampTz* start_time); void UpdateUniqueSQLVecSortStats(Batchsortstate* state, uint64 spill_count, TimestampTz* start_time); -void FindUniqueSQL(UniqueSQLKey key, char* unique_sql); +bool FindUniqueSQL(UniqueSQLKey key, char* unique_sql); char* FindCurrentUniqueSQL(); bool is_instr_top_portal();