On Sat, Nov 21, 2020 at 10:26:00AM -0600, Justin Pryzby wrote: > On Sat, Nov 21, 2020 at 08:39:11AM +0100, Peter Eisentraut wrote: > > On 2020-11-20 17:16, Justin Pryzby wrote: > > > It matters if it was planned with jit but executed without jit. > > > > > > postgres=# DEALLOCATE p; SET jit=on; SET jit_above_cost=0; prepare p as > > > select from generate_series(1,9); explain(format yaml) execute p; SET > > > jit=off; explain(format yaml) execute p; > > > > > > Patched shows this for both explains: > > > JIT: + > > > Functions: 3 + > > > > > > Unpatched shows only in the first case. > > > > In this context, I don't see the point of this change. If you set jit=off > > explicitly, then there is no need to clutter the EXPLAIN output with a bunch > > of zeroes about JIT. > > I think the idea is that someone should be able to parse the YAML/XML/other > output by writing something like a['JIT']['Functions'] rather than something > like a.get('JIT',{}).get('Functions',0) > > The standard seems to be that parameters that can change during execution > should change the *values* in the non-text output, but the *keys* should not > disappear just because (for example) parallel workers weren't available, or > someone (else) turned off jit. We had discussion about this earlier in the > year: > https://www.postgresql.org/message-id/20200728033622.gc20...@telsasoft.com > > (Since it's machine-readable output, Key: 0 is Consistency and Completeness, > not Clutter.)
If there's no interest or agreement in it, we should just close it. I have no personal need for it, but noticed it in passing.
>From 8a580c7a90e9854d53c15b69e761161330a6bf87 Mon Sep 17 00:00:00 2001 From: Justin Pryzby <pryz...@telsasoft.com> Date: Sat, 17 Oct 2020 14:10:11 -0500 Subject: [PATCH v2] explain: show JIT details in non-text format, even if zero --- src/backend/commands/explain.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 43f9b01e83..89caa76801 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -838,8 +838,9 @@ ExplainPrintJIT(ExplainState *es, int jit_flags, JitInstrumentation *ji) { instr_time total_time; - /* don't print information if no JITing happened */ - if (!ji || ji->created_functions == 0) + /* don't print information if JITing wasn't done at planning time */ + if (!ji || (ji->created_functions == 0 && + es->format == EXPLAIN_FORMAT_TEXT)) return; /* calculate total time */ -- 2.17.0