mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-15 08:20:16 +08:00
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…
Reference in New Issue
Block a user