From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Amit Langote <amitlangote09(at)gmail(dot)com> |
Cc: | Andres Freund <andres(at)anarazel(dot)de>, Erik Rijkers <er(at)xs4all(dot)nl>, jian he <jian(dot)universality(at)gmail(dot)com>, Andrew Dunstan <andrew(at)dunslane(dot)net>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: remaining sql/json patches |
Date: | 2024-01-18 17:11:18 |
Message-ID: | 202401181711.qxjxpnl3ohnw@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2024-Jan-18, Alvaro Herrera wrote:
> commands/explain.c (Hmm, I think this is a preexisting bug actually)
>
> 3893 18 : case T_TableFuncScan:
> 3894 18 : Assert(rte->rtekind == RTE_TABLEFUNC);
> 3895 18 : if (rte->tablefunc)
> 3896 0 : if (rte->tablefunc->functype == TFT_XMLTABLE)
> 3897 0 : objectname = "xmltable";
> 3898 : else /* Must be TFT_JSON_TABLE */
> 3899 0 : objectname = "json_table";
> 3900 : else
> 3901 18 : objectname = NULL;
> 3902 18 : objecttag = "Table Function Name";
> 3903 18 : break;
Indeed -- the problem seems to be that add_rte_to_flat_rtable is
creating a new RTE and zaps the ->tablefunc pointer for it. So when
EXPLAIN goes to examine the struct, there's a NULL pointer there and
nothing is printed.
One simple fix is to change add_rte_to_flat_rtable so that it doesn't
zero out the tablefunc pointer, but this is straight against what that
function is trying to do, namely to remove substructure. Which means
that we need to preserve the name somewhere else. I added a new member
to RangeTblEntry for this, which perhaps is a little ugly. So here's
the patch for that. (I also added an alias to one XMLTABLE invocation
under EXPLAIN, to show what it looks like when an alias is specified.
Otherwise they're always shown as "XMLTABLE" "xmltable" which is a bit
dumb).
Another possible way out is to decide that we don't want the
"objectname" to be reported here. I admit it's perhaps redundant. In
this case we'd just remove lines 3896-3899 shown above and let it be
NULL.
Thoughts?
--
Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/
Attachment | Content-Type | Size |
---|---|---|
0001-Show-function-name-in-TableFuncScan.patch | text/x-diff | 10.0 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Geoghegan | 2024-01-18 17:14:55 | Re: Emit fewer vacuum records by reaping removable tuples during pruning |
Previous Message | Robert Haas | 2024-01-18 16:45:53 | Re: Emit fewer vacuum records by reaping removable tuples during pruning |