diff --git a/src/common/backend/utils/sort/sharedtuplestore.cpp b/src/common/backend/utils/sort/sharedtuplestore.cpp index 73a457bb4..7727bf01a 100644 --- a/src/common/backend/utils/sort/sharedtuplestore.cpp +++ b/src/common/backend/utils/sort/sharedtuplestore.cpp @@ -582,3 +582,8 @@ static void sts_filename(char* name, size_t length, SharedTuplestoreAccessor* ac error_t rc = snprintf_s(name, length, length - 1, "%s.p%d", accessor->sts->name, participant); securec_check_ss(rc, "", ""); } + +uint64 get_header_size(SharedTuplestoreAccessor* accessor) +{ + return (uint64)accessor->sts->meta_data_size; +} diff --git a/src/gausskernel/cbb/instruments/wdr/generate_report.cpp b/src/gausskernel/cbb/instruments/wdr/generate_report.cpp index 083103c35..214ccc7c4 100644 --- a/src/gausskernel/cbb/instruments/wdr/generate_report.cpp +++ b/src/gausskernel/cbb/instruments/wdr/generate_report.cpp @@ -4014,8 +4014,9 @@ static void check_report_parameter(report_params* params) */ if (!g_instance.attr.attr_common.PGXCNodeName || g_instance.attr.attr_common.PGXCNodeName[0] == '\0') { currentNodeName = "unknown name"; + } else { + currentNodeName = g_instance.attr.attr_common.PGXCNodeName; } - currentNodeName = g_instance.attr.attr_common.PGXCNodeName; if ((strncmp(params->report_scope, g_nodeScope, strlen(g_nodeScope)) == 0) && ((params->report_node == NULL) || diff --git a/src/gausskernel/runtime/executor/nodeHash.cpp b/src/gausskernel/runtime/executor/nodeHash.cpp index a2c0c288f..961fe900f 100755 --- a/src/gausskernel/runtime/executor/nodeHash.cpp +++ b/src/gausskernel/runtime/executor/nodeHash.cpp @@ -30,6 +30,7 @@ #include "commands/tablespace.h" #include "executor/execdebug.h" #include "executor/hashjoin.h" +#include "utils/sharedtuplestore.h" #include "executor/nodeHash.h" #include "executor/nodeHashjoin.h" #include "miscadmin.h" @@ -1782,6 +1783,8 @@ retry: Assert(hashtable->batches[batchno].preallocated >= tuple_size); hashtable->batches[batchno].preallocated -= tuple_size; sts_puttuple(hashtable->batches[batchno].inner_tuples, &hashvalue, tuple); + hashtable->spill_count += 1; + *hashtable->spill_size += get_header_size(hashtable->batches[batchno].inner_tuples) + tuple->t_len; } ++hashtable->batches[batchno].ntuples; } diff --git a/src/include/utils/sharedtuplestore.h b/src/include/utils/sharedtuplestore.h index de74d04fc..1a7f1f442 100644 --- a/src/include/utils/sharedtuplestore.h +++ b/src/include/utils/sharedtuplestore.h @@ -48,4 +48,5 @@ extern void sts_puttuple(SharedTuplestoreAccessor* accessor, const void* meta_da extern MinimalTuple sts_parallel_scan_next(SharedTuplestoreAccessor* accessor, void* meta_data); +extern uint64 get_header_size(SharedTuplestoreAccessor* accessor); #endif /* SHAREDTUPLESTORE_H */