Fix newly introduced issue in EXPLAIN for Materialize nodes
The code added in 1eff8279d was lacking a check to see if the tuplestore had been created. In nodeMaterial.c this is done by ExecMaterial() rather than by ExecInitMaterial(), so the tuplestore won't be created unless the node has been executed at least once, as demonstrated by Alexander in his report. Here we skip showing any of the new EXPLAIN ANALYZE information when the Materialize node has not been executed. Reported-by: Alexander Lakhin Discussion: https://postgr.es/m/fe7fc8fb-86e5-ecb0-3cb2-dd2c9a6c482f@gmail.com
This commit is contained in:
parent
18501841bc
commit
53abb1e0eb
@ -3333,14 +3333,17 @@ show_hash_info(HashState *hashstate, ExplainState *es)
|
||||
static void
|
||||
show_material_info(MaterialState *mstate, ExplainState *es)
|
||||
{
|
||||
Tuplestorestate *tupstore;
|
||||
Tuplestorestate *tupstore = mstate->tuplestorestate;
|
||||
const char *storageType;
|
||||
int64 spaceUsedKB;
|
||||
|
||||
if (!es->analyze)
|
||||
/*
|
||||
* Nothing to show if ANALYZE option wasn't used or if execution didn't
|
||||
* get as far as creating the tuplestore.
|
||||
*/
|
||||
if (!es->analyze || tupstore == NULL)
|
||||
return;
|
||||
|
||||
tupstore = mstate->tuplestorestate;
|
||||
storageType = tuplestore_storage_type_name(tupstore);
|
||||
spaceUsedKB = BYTES_TO_KILOBYTES(tuplestore_space_used(tupstore));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user