>> Yes, I think so. I'd keep each as a separate patch so they can be
>> considered independently. Doing all of them should hopefully ensure we
>> strike the right balance of what code to put in explain.c and what
>> code to put in tuplestore.c.
> +1
>
> + if (es->format != EXPLAIN_FORMAT_TEXT)
> + {
> + ExplainPropertyText("Storage", storageType, es);
> + ExplainPropertyInteger("Maximum Storage", "kB", spaceUsedKB, es);
> + }
> + else
> + {
> + ExplainIndentText(es);
> + appendStringInfo(es->str,
> + "Storage: %s Maximum Storage: " INT64_FORMAT "kB\n",
> + storageType,
> + spaceUsedKB);
> + }
>
> It will be good to move this code to a function which will be called
> by show_*_info functions().
I have already implemented that in this direction in my working in
progress patch:
/*
* Show information regarding storage method and maximum memory/disk space
* used.
*/
static void
show_storage_info(Tuplestorestate *tupstore, ExplainState *es)
Which can be shared by Material and CTE scan node. I am going to post
it after I take care Recursive Union and Table Function Scan node.
> We might even convert it into a tuplestore
> specific implementation hook after David's work.
Best reagards,
--
Tatsuo Ishii
SRA OSS LLC
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp