Further sync postgres_fdw's "Relations" output with the rest of EXPLAIN.
EXPLAIN generally only adds schema qualifications to table names when VERBOSE is specified. In postgres_fdw's "Relations" output, table names were always so qualified, but that was an implementation restriction: in the original coding, we didn't have access to the verbose flag at the time the string was generated. After the code rearrangement of commit 4526951d5, we do have that info available at the right time, so make this output follow the normal rule. Discussion: https://postgr.es/m/12424.1575168015@sss.pgh.pa.us
This commit is contained in:
parent
68ab982906
commit
bf39b3af6a
@ -8480,15 +8480,15 @@ ANALYZE fprt2_p2;
|
||||
-- inner join three tables
|
||||
EXPLAIN (COSTS OFF)
|
||||
SELECT t1.a,t2.b,t3.c FROM fprt1 t1 INNER JOIN fprt2 t2 ON (t1.a = t2.b) INNER JOIN fprt1 t3 ON (t2.b = t3.a) WHERE t1.a % 25 =0 ORDER BY 1,2,3;
|
||||
QUERY PLAN
|
||||
--------------------------------------------------------------------------------------------------------------------------
|
||||
QUERY PLAN
|
||||
-----------------------------------------------------------------------------------------------------
|
||||
Sort
|
||||
Sort Key: t1.a, t3.c
|
||||
-> Append
|
||||
-> Foreign Scan
|
||||
Relations: ((public.ftprt1_p1 t1) INNER JOIN (public.ftprt2_p1 t2)) INNER JOIN (public.ftprt1_p1 t3)
|
||||
Relations: ((ftprt1_p1 t1) INNER JOIN (ftprt2_p1 t2)) INNER JOIN (ftprt1_p1 t3)
|
||||
-> Foreign Scan
|
||||
Relations: ((public.ftprt1_p2 t1_1) INNER JOIN (public.ftprt2_p2 t2_1)) INNER JOIN (public.ftprt1_p2 t3_1)
|
||||
Relations: ((ftprt1_p2 t1_1) INNER JOIN (ftprt2_p2 t2_1)) INNER JOIN (ftprt1_p2 t3_1)
|
||||
(7 rows)
|
||||
|
||||
SELECT t1.a,t2.b,t3.c FROM fprt1 t1 INNER JOIN fprt2 t2 ON (t1.a = t2.b) INNER JOIN fprt1 t3 ON (t2.b = t3.a) WHERE t1.a % 25 =0 ORDER BY 1,2,3;
|
||||
@ -8561,15 +8561,15 @@ SELECT t1.wr, t2.wr FROM (SELECT t1 wr, a FROM fprt1 t1 WHERE t1.a % 25 = 0) t1
|
||||
-- join with lateral reference
|
||||
EXPLAIN (COSTS OFF)
|
||||
SELECT t1.a,t1.b FROM fprt1 t1, LATERAL (SELECT t2.a, t2.b FROM fprt2 t2 WHERE t1.a = t2.b AND t1.b = t2.a) q WHERE t1.a%25 = 0 ORDER BY 1,2;
|
||||
QUERY PLAN
|
||||
-------------------------------------------------------------------------------------
|
||||
QUERY PLAN
|
||||
-----------------------------------------------------------------------
|
||||
Sort
|
||||
Sort Key: t1.a, t1.b
|
||||
-> Append
|
||||
-> Foreign Scan
|
||||
Relations: (public.ftprt1_p1 t1) INNER JOIN (public.ftprt2_p1 t2)
|
||||
Relations: (ftprt1_p1 t1) INNER JOIN (ftprt2_p1 t2)
|
||||
-> Foreign Scan
|
||||
Relations: (public.ftprt1_p2 t1_1) INNER JOIN (public.ftprt2_p2 t2_1)
|
||||
Relations: (ftprt1_p2 t1_1) INNER JOIN (ftprt2_p2 t2_1)
|
||||
(7 rows)
|
||||
|
||||
SELECT t1.a,t1.b FROM fprt1 t1, LATERAL (SELECT t2.a, t2.b FROM fprt2 t2 WHERE t1.a = t2.b AND t1.b = t2.a) q WHERE t1.a%25 = 0 ORDER BY 1,2;
|
||||
@ -8689,17 +8689,17 @@ SELECT a, sum(b), min(b), count(*) FROM pagg_tab GROUP BY a HAVING avg(b) < 22 O
|
||||
SET enable_partitionwise_aggregate TO true;
|
||||
EXPLAIN (COSTS OFF)
|
||||
SELECT a, sum(b), min(b), count(*) FROM pagg_tab GROUP BY a HAVING avg(b) < 22 ORDER BY 1;
|
||||
QUERY PLAN
|
||||
------------------------------------------------------------------------
|
||||
QUERY PLAN
|
||||
-----------------------------------------------------------------
|
||||
Sort
|
||||
Sort Key: pagg_tab.a
|
||||
-> Append
|
||||
-> Foreign Scan
|
||||
Relations: Aggregate on (public.fpagg_tab_p1 pagg_tab)
|
||||
Relations: Aggregate on (fpagg_tab_p1 pagg_tab)
|
||||
-> Foreign Scan
|
||||
Relations: Aggregate on (public.fpagg_tab_p2 pagg_tab_1)
|
||||
Relations: Aggregate on (fpagg_tab_p2 pagg_tab_1)
|
||||
-> Foreign Scan
|
||||
Relations: Aggregate on (public.fpagg_tab_p3 pagg_tab_2)
|
||||
Relations: Aggregate on (fpagg_tab_p3 pagg_tab_2)
|
||||
(9 rows)
|
||||
|
||||
SELECT a, sum(b), min(b), count(*) FROM pagg_tab GROUP BY a HAVING avg(b) < 22 ORDER BY 1;
|
||||
|
@ -2571,7 +2571,6 @@ postgresExplainForeignScan(ForeignScanState *node, ExplainState *es)
|
||||
{
|
||||
int rti = strtol(ptr, &ptr, 10);
|
||||
RangeTblEntry *rte;
|
||||
char *namespace;
|
||||
char *relname;
|
||||
char *refname;
|
||||
|
||||
@ -2580,11 +2579,19 @@ postgresExplainForeignScan(ForeignScanState *node, ExplainState *es)
|
||||
rte = rt_fetch(rti, es->rtable);
|
||||
Assert(rte->rtekind == RTE_RELATION);
|
||||
/* This logic should agree with explain.c's ExplainTargetRel */
|
||||
namespace = get_namespace_name(get_rel_namespace(rte->relid));
|
||||
relname = get_rel_name(rte->relid);
|
||||
appendStringInfo(relations, "%s.%s",
|
||||
quote_identifier(namespace),
|
||||
quote_identifier(relname));
|
||||
if (es->verbose)
|
||||
{
|
||||
char *namespace;
|
||||
|
||||
namespace = get_namespace_name(get_rel_namespace(rte->relid));
|
||||
appendStringInfo(relations, "%s.%s",
|
||||
quote_identifier(namespace),
|
||||
quote_identifier(relname));
|
||||
}
|
||||
else
|
||||
appendStringInfo(relations, "%s",
|
||||
quote_identifier(relname));
|
||||
refname = (char *) list_nth(es->rtable_names, rti - 1);
|
||||
if (refname == NULL)
|
||||
refname = rte->eref->aliasname;
|
||||
|
Loading…
x
Reference in New Issue
Block a user