>> 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