Re: auto_explain produces invalid JSON
От
Andrew Dunstan
Тема
Re: auto_explain produces invalid JSON
Дата
Msg-id
4F395796.3010004@dunslane.net
Ответ на
Re: auto_explain produces invalid JSON (Tom Lane)
Список
Дерево обсуждения
auto_explain produces invalid JSON Peter Eisentraut <peter_e@gmx.net>
Re: auto_explain produces invalid JSON Andrew Dunstan <andrew@dunslane.net>
Re: auto_explain produces invalid JSON Tom Lane <tgl@sss.pgh.pa.us>
Re: auto_explain produces invalid JSON Andrew Dunstan <andrew@dunslane.net>
Re: auto_explain produces invalid JSON Andrew Dunstan <andrew@dunslane.net>
Re: auto_explain produces invalid JSON Tom Lane <tgl@sss.pgh.pa.us>
Re: auto_explain produces invalid JSON Andrew Dunstan <andrew@dunslane.net>
Re: auto_explain produces invalid JSON Tom Lane <tgl@sss.pgh.pa.us>
Re: auto_explain produces invalid JSON Andrew Dunstan <andrew@dunslane.net>
Re: auto_explain produces invalid JSON Andrew Dunstan <andrew@dunslane.net>
Re: auto_explain produces invalid JSON Andrew Dunstan <andrew@dunslane.net>
On 02/13/2012 12:48 PM, Tom Lane wrote: > Andrew Dunstan writes: >> On 02/13/2012 11:15 AM, Tom Lane wrote: >>> After looking a bit more at the existing explain code, it seems like the >>> critical issue is that explain.c has ExplainOpenGroup/ExplainCloseGroup >>> calls around the ExplainPrintPlan call (see ExplainOnePlan), while >>> auto_explain does not. >> Yeah, maybe. We'd still have to do it conditionally (have to use >> ExplainBeginOutput for the XML case), but it would possibly be less kludgy. > Hm? I wasn't suggesting removing the ExplainBeginOutput call, but more > like > > ExplainBeginOutput(&es); > + ExplainOpenGroup(...); > ExplainQueryText(&es, queryDesc); > ExplainPrintPlan(&es, queryDesc); > + ExplainCloseGroup(...); > ExplainEndOutput(&es); > > Details still TBD; the point is just that it's not clear to me why > auto_explain should need a formatting concept that doesn't already exist > within explain.c. > > This will introduce an extra level of nesting for no good reason. But this would work: - ExplainBeginOutput(&es); + if (auto_explain_log_format != EXPLAIN_FORMAT_JSON) + ExplainBeginOutput(&es); + else + ExplainOpenGroup(NULL, NULL, true,& es); ExplainQueryText(&es, queryDesc); ExplainPrintPlan(&es, queryDesc); - ExplainEndOutput(&es); + if (auto_explain_log_format != EXPLAIN_FORMAT_JSON) + ExplainEndOutput(&es); + else + ExplainCloseGroup(NULL, NULL, true, &es); cheers andrew
В списке pgsql-hackers по дате отправления