!2958 修复explain时hashtable为空的问题

Merge pull request !2958 from wanghao19920907/fixbug_PR_2297
This commit is contained in:
opengauss-bot
2023-02-24 06:37:57 +00:00
committed by Gitee

View File

@ -4301,7 +4301,8 @@ static void show_datanode_hash_info(ExplainState* es, int nbatch, int nbuckets_o
if (nbatch_original != nbatch) {
appendStringInfo(es->planinfo->m_staticInfo->info_str,
" Buckets: %d (originally %d) Batches: %d (originally %d) Memory Usage: %ldkB\n",
nbuckets, nbuckets_original,
nbuckets,
nbuckets_original,
nbatch,
nbatch_original,
spacePeakKb);
@ -4316,7 +4317,8 @@ static void show_datanode_hash_info(ExplainState* es, int nbatch, int nbuckets_o
if (nbatch_original != nbatch) {
appendStringInfo(es->str,
" Buckets: %d (originally %d) Batches: %d (originally %d) Memory Usage: %ldkB\n",
nbuckets, nbuckets_original,
nbuckets,
nbuckets_original,
nbatch,
nbatch_original,
spacePeakKb);
@ -4727,6 +4729,7 @@ static void show_hash_info(HashState* hashstate, ExplainState* es)
int nbatch;
int nbatch_original;
int nbuckets;
int nbuckets_original;
long spacePeakKb = 0;
int max_nbatch = -1;
int min_nbatch = INT_MAX;
@ -4772,9 +4775,9 @@ static void show_hash_info(HashState* hashstate, ExplainState* es)
es->planinfo->m_staticInfo->set_plan_name<false, true>();
appendStringInfo(es->planinfo->m_staticInfo->info_str, "%s ", node_name);
show_datanode_hash_info<false>(es, nbatch, hashtable->nbuckets_original, nbatch_original, nbuckets, spacePeakKb);
show_datanode_hash_info<false>(es, nbatch, nbuckets, nbatch_original, nbuckets, spacePeakKb);
}
show_datanode_hash_info<true>(es, nbatch, hashtable->nbuckets_original, nbatch_original, nbuckets, spacePeakKb);
show_datanode_hash_info<true>(es, nbatch, nbuckets, nbatch_original, nbuckets, spacePeakKb);
ExplainCloseGroup("Plan", NULL, true, es);
}
ExplainCloseGroup("Hash Detail", "Hash Detail", false, es);
@ -4888,12 +4891,15 @@ static void show_hash_info(HashState* hashstate, ExplainState* es)
nbatch = hashinfo.nbatch;
nbatch_original = hashinfo.nbatch_original;
nbuckets = hashinfo.nbuckets;
if (es->analyze)
nbuckets_original = hashtable ? hashtable->nbuckets_original : nbuckets;
else
nbuckets_original = nbuckets;
/* wlm_statistics_plan_max_digit: this variable is used to judge, isn't it a active sql */
if (es->wlm_statistics_plan_max_digit == NULL) {
if (es->format == EXPLAIN_FORMAT_TEXT)
appendStringInfoSpaces(es->str, es->indent * 2);
show_datanode_hash_info<false>(es, nbatch, hashtable->nbuckets_original, nbatch_original, nbuckets, spacePeakKb);
show_datanode_hash_info<false>(es, nbatch, nbuckets_original, nbatch_original, nbuckets, spacePeakKb);
}
}
}