Further sync postgres_fdw's "Relations" output with the rest of EXPLAIN.
authorTom Lane <[email protected]>
Tue, 3 Dec 2019 17:25:56 +0000 (12:25 -0500)
committerTom Lane <[email protected]>
Tue, 3 Dec 2019 17:25:56 +0000 (12:25 -0500)
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

contrib/postgres_fdw/expected/postgres_fdw.out
contrib/postgres_fdw/postgres_fdw.c

index 97b24f3e38e580cf4a8a0c5dc10cc9f1a265ee9a..48282ab151e1523bf9f80485c975a2710acc8686 100644 (file)
@@ -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;
index 3eb4e4044d4e052d77612d99729c6143775203cf..bdc21b36d1e6a7056ef04f8de944f75fb4baf5b3 100644 (file)
@@ -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;