OSDN Git Service

Stabilize regression test.
authorKyotaro Horiguchi <horikyoga.ntt@gmail.com>
Wed, 28 Oct 2020 13:58:48 +0000 (22:58 +0900)
committerKyotaro Horiguchi <horikyoga.ntt@gmail.com>
Thu, 29 Oct 2020 11:31:47 +0000 (20:31 +0900)
I was annoyed by frequent nonsubstantial change of title line length
of explain output.  This commit makes maskout.sh replace the title
lines with fixed content.

expected/pg_hint_plan.out
expected/ut-J.out
expected/ut-R.out
expected/ut-S.out
sql/maskout.sh

index 1a19066..9889949 100644 (file)
@@ -8808,8 +8808,8 @@ Rows()
 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
@@ -8827,8 +8827,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=99 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=99 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
@@ -8846,8 +8846,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1099 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1099 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
@@ -8865,8 +8865,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=901 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=901 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
@@ -8884,8 +8884,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=99000 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=99000 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
@@ -8903,8 +8903,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=10 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=10 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
@@ -8924,8 +8924,8 @@ Rows(t1 t2 #aa)
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
@@ -8945,8 +8945,8 @@ Rows(t1 t2 /99)
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
@@ -8966,8 +8966,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.id = t2.id)
    ->  Index Scan using t1_pkey on t1  (cost=xxx..xxx rows=10000 width=xxx)
@@ -8978,8 +8978,8 @@ error hint:
 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                     QUERY PLAN                                     
-------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=10 width=xxx)
    Merge Cond: (t1.id = t3.id)
    ->  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=10 width=xxx)
    Merge Cond: (t1.id = t3.id)
    ->  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
@@ -9002,8 +9002,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 
 \o
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                     QUERY PLAN                                     
-------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.id = t3.id)
    ->  Merge Join  (cost=xxx..xxx rows=22 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.id = t3.id)
    ->  Merge Join  (cost=xxx..xxx rows=22 width=xxx)
@@ -9027,8 +9027,8 @@ error hint:
 \o
 set max_parallel_workers_per_gather to DEFAULT;
 \! sql/maskout.sh results/pg_hint_plan.tmpout
 \o
 set max_parallel_workers_per_gather to DEFAULT;
 \! sql/maskout.sh results/pg_hint_plan.tmpout
-                                     QUERY PLAN                                     
-------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.id = t3.id)
    ->  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.id = t3.id)
    ->  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
index 8506485..1d91c2c 100644 (file)
@@ -791,8 +791,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-J.tmpout
 
 \o
 \! sql/maskout.sh results/ut-J.tmpout
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost={inf}..{inf} rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost={inf}..{inf} rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -4708,8 +4708,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-J.tmpout
 
 \o
 \! sql/maskout.sh results/ut-J.tmpout
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Full Join  (cost={inf}..{inf} rows=1000 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Seq Scan on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Hash Full Join  (cost={inf}..{inf} rows=1000 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Seq Scan on t1  (cost=xxx..xxx rows=1000 width=xxx)
index eed3fe3..0e85bc6 100644 (file)
@@ -7,8 +7,8 @@ SET search_path TO public;
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -32,8 +32,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -54,8 +54,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t_1.c1 = t_2.c1)
    ->  Index Scan using t1_i1 on t1 t_1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t_1.c1 = t_2.c1)
    ->  Index Scan using t1_i1 on t1 t_1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -76,8 +76,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t_1.c1 = t_2.c1)
    ->  Index Scan using t1_i1 on t1 t_1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t_1.c1 = t_2.c1)
    ->  Index Scan using t1_i1 on t1 t_1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -101,8 +101,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -123,8 +123,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -148,8 +148,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -170,8 +170,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -195,8 +195,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -209,8 +209,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.t1, s2.t1 WHERE s1.t1.c1 = s2.t1.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s2.t1 WHERE s1.t1.c1 = s2.t1.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t1_1.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t1_1.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -232,8 +232,8 @@ Rows(t1 t1 #1)
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t1_1.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t1_1.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -253,8 +253,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t1_1.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t1_1.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -266,8 +266,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.t1, s2.t1 s2t1 WHERE s1.t1.c1 = s2t1.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s2.t1 s2t1 WHERE s1.t1.c1 = s2t1.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = s2t1.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = s2t1.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -287,8 +287,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = s2t1.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = s2t1.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -301,8 +301,8 @@ error hint:
 EXPLAIN SELECT *, (SELECT max(t1.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT *, (SELECT max(t1.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                            QUERY PLAN                                            
---------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    InitPlan 1 (returns $0)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    InitPlan 1 (returns $0)
@@ -330,8 +330,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                            QUERY PLAN                                            
---------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    InitPlan 1 (returns $0)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    InitPlan 1 (returns $0)
@@ -360,8 +360,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                           QUERY PLAN                                            
--------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    InitPlan 1 (returns $0)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    InitPlan 1 (returns $0)
@@ -393,8 +393,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -417,8 +417,8 @@ Rows(t1 t1 #1)
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -434,8 +434,8 @@ INFO:  pg_hint_plan: hint syntax error at or near "(t1 t1)(t2 t2)"
 DETAIL:  Unrecognized hint keyword "".
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 DETAIL:  Unrecognized hint keyword "".
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -447,8 +447,8 @@ DETAIL:  Unrecognized hint keyword "".
 EXPLAIN SELECT * FROM s1.t1, s1.t2, s1.t3 WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s1.t2, s1.t3 WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                   QUERY PLAN                                    
----------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Merge Join  (cost=xxx..xxx rows=1000 width=xxx)
@@ -466,8 +466,8 @@ INFO:  pg_hint_plan: hint syntax error at or near "(t1 t2 t1 t2)"
 DETAIL:  Unrecognized hint keyword "".
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 DETAIL:  Unrecognized hint keyword "".
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                      QUERY PLAN                                       
----------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=100 width=xxx)
    ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
          Merge Cond: (t1.c1 = t2.c1)
  Nested Loop  (cost=xxx..xxx rows=100 width=xxx)
    ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
          Merge Cond: (t1.c1 = t2.c1)
@@ -497,8 +497,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -511,8 +511,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.p1 t1, s1.p1 t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.p1 t1, s1.p1 t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=301 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Append  (cost=xxx..xxx rows=301 width=xxx)
  Hash Join  (cost=xxx..xxx rows=301 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Append  (cost=xxx..xxx rows=301 width=xxx)
@@ -539,8 +539,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Append  (cost=xxx..xxx rows=301 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Append  (cost=xxx..xxx rows=301 width=xxx)
@@ -560,8 +560,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.ul1 t1, s1.ul1 t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.ul1 t1, s1.ul1 t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                              QUERY PLAN                               
------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1130 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Seq Scan on ul1 t1  (cost=xxx..xxx rows=1130 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1130 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Seq Scan on ul1 t1  (cost=xxx..xxx rows=1130 width=xxx)
@@ -580,8 +580,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                              QUERY PLAN                               
------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Seq Scan on ul1 t1  (cost=xxx..xxx rows=1130 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Seq Scan on ul1 t1  (cost=xxx..xxx rows=1130 width=xxx)
@@ -594,8 +594,8 @@ CREATE TEMP TABLE tm1 (LIKE s1.t1 INCLUDING ALL);
 EXPLAIN SELECT * FROM tm1 t1, tm1 t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM tm1 t1, tm1 t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                              QUERY PLAN                               
------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1130 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Seq Scan on tm1 t1  (cost=xxx..xxx rows=1130 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1130 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Seq Scan on tm1 t1  (cost=xxx..xxx rows=1130 width=xxx)
@@ -614,8 +614,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                              QUERY PLAN                               
------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Seq Scan on tm1 t1  (cost=xxx..xxx rows=1130 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (t1.c1 = t2.c1)
    ->  Seq Scan on tm1 t1  (cost=xxx..xxx rows=1130 width=xxx)
@@ -628,8 +628,8 @@ CREATE TEMP TABLE t_pg_class AS SELECT * from pg_class LIMIT 100;
 EXPLAIN SELECT * FROM t_pg_class t1, t_pg_class t2 WHERE t1.oid = t2.oid;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM t_pg_class t1, t_pg_class t2 WHERE t1.oid = t2.oid;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=450 width=xxx)
    Hash Cond: (t1.oid = t2.oid)
    ->  Seq Scan on t_pg_class t1  (cost=xxx..xxx rows=300 width=xxx)
  Hash Join  (cost=xxx..xxx rows=450 width=xxx)
    Hash Cond: (t1.oid = t2.oid)
    ->  Seq Scan on t_pg_class t1  (cost=xxx..xxx rows=300 width=xxx)
@@ -648,8 +648,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (t1.oid = t2.oid)
    ->  Seq Scan on t_pg_class t1  (cost=xxx..xxx rows=300 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (t1.oid = t2.oid)
    ->  Seq Scan on t_pg_class t1  (cost=xxx..xxx rows=300 width=xxx)
@@ -663,8 +663,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.f1() t1, s1.f1() t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.f1() t1, s1.f1() t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                           QUERY PLAN                            
------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    Join Filter: (t1.c1 = t2.c1)
    ->  Function Scan on f1 t1  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    Join Filter: (t1.c1 = t2.c1)
    ->  Function Scan on f1 t1  (cost=xxx..xxx rows=1 width=xxx)
@@ -682,8 +682,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                           QUERY PLAN                            
------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    Join Filter: (t1.c1 = t2.c1)
    ->  Function Scan on f1 t1  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    Join Filter: (t1.c1 = t2.c1)
    ->  Function Scan on f1 t1  (cost=xxx..xxx rows=1 width=xxx)
@@ -694,8 +694,8 @@ error hint:
 EXPLAIN SELECT * FROM (VALUES(1,1,1,'1'), (2,2,2,'2'), (3,3,3,'3')) AS t1 (c1, c2, c3, c4),  s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM (VALUES(1,1,1,'1'), (2,2,2,'2'), (3,3,3,'3')) AS t1 (c1, c2, c3, c4),  s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=3 width=xxx)
    Hash Cond: (t2.c1 = "*VALUES*".column1)
    ->  Seq Scan on t2  (cost=xxx..xxx rows=100 width=xxx)
  Hash Join  (cost=xxx..xxx rows=3 width=xxx)
    Hash Cond: (t2.c1 = "*VALUES*".column1)
    ->  Seq Scan on t2  (cost=xxx..xxx rows=100 width=xxx)
@@ -714,8 +714,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=3 width=xxx)
    Hash Cond: (t2.c1 = "*VALUES*".column1)
    ->  Seq Scan on t2  (cost=xxx..xxx rows=100 width=xxx)
  Hash Join  (cost=xxx..xxx rows=3 width=xxx)
    Hash Cond: (t2.c1 = "*VALUES*".column1)
    ->  Seq Scan on t2  (cost=xxx..xxx rows=100 width=xxx)
@@ -734,8 +734,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (t2.c1 = "*VALUES*".column1)
    ->  Seq Scan on t2  (cost=xxx..xxx rows=100 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (t2.c1 = "*VALUES*".column1)
    ->  Seq Scan on t2  (cost=xxx..xxx rows=100 width=xxx)
@@ -747,8 +747,8 @@ error hint:
 EXPLAIN WITH c1(c1) AS (SELECT max(t1.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1) SELECT * FROM s1.t1, c1 WHERE t1.c1 = c1.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN WITH c1(c1) AS (SELECT max(t1.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1) SELECT * FROM s1.t1, c1 WHERE t1.c1 = c1.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                           QUERY PLAN                                           
-------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
          ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
          ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
@@ -773,8 +773,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                           QUERY PLAN                                           
-------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
    ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
          ->  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
    ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
          ->  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
@@ -791,8 +791,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.v1 t1, s1.v1 t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.v1 t1, s1.v1 t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (v1t1.c1 = v1t1_1.c1)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (v1t1.c1 = v1t1_1.c1)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -811,8 +811,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (v1t1.c1 = v1t1_1.c1)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (v1t1.c1 = v1t1_1.c1)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -831,8 +831,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                               QUERY PLAN                                
--------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (v1t1.c1 = v1t1_.c1)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (v1t1.c1 = v1t1_.c1)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -844,8 +844,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.c1 = (SELECT max(st1.c1) FROM s1.t1 st1, s1.t2 st2 WHERE st1.c1 = st2.c1);
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.c1 = (SELECT max(st1.c1) FROM s1.t1 st1, s1.t2 st2 WHERE st1.c1 = st2.c1);
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                           QUERY PLAN                                            
--------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $0)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $0)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -873,8 +873,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                           QUERY PLAN                                            
--------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $0)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $0)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -897,8 +897,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.t1, (SELECT t2.c1 FROM s1.t2) st2 WHERE t1.c1 = st2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, (SELECT t2.c1 FROM s1.t2) st2 WHERE t1.c1 = st2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -918,8 +918,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -939,8 +939,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -966,8 +966,8 @@ Rows(t1 #1)
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -990,8 +990,8 @@ Rows(t1 t2 1)
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -1014,8 +1014,8 @@ Rows(t1 t2 #notrows)
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -1064,8 +1064,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                     QUERY PLAN                                                     
---------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -1158,8 +1158,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                     QUERY PLAN                                                     
---------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -1250,8 +1250,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                     QUERY PLAN                                                     
---------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -1370,8 +1370,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                     QUERY PLAN                                                     
---------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -1444,8 +1444,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                          QUERY PLAN                                           
------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
          Merge Cond: (bmt1.c1 = bmt2.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
          Merge Cond: (bmt1.c1 = bmt2.c1)
@@ -1480,8 +1480,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                         QUERY PLAN                                         
---------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (bmt2.c1 = bmt1.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (bmt2.c1 = bmt1.c1)
@@ -1511,8 +1511,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                          QUERY PLAN                                           
------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
          Merge Cond: (bmt1.c1 = bmt2.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
          Merge Cond: (bmt1.c1 = bmt2.c1)
@@ -1547,8 +1547,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                         QUERY PLAN                                         
---------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (bmt2.c1 = bmt1.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (bmt2.c1 = bmt1.c1)
@@ -1600,8 +1600,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                     QUERY PLAN                                                     
---------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -1696,8 +1696,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                     QUERY PLAN                                                     
---------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -1789,8 +1789,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                     QUERY PLAN                                                     
---------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -1910,8 +1910,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                     QUERY PLAN                                                     
---------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $1)
      ->  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
@@ -2015,8 +2015,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                                               QUERY PLAN                                                                               
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
          Hash Cond: (bmt4.c1 = bmt1.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
          Hash Cond: (bmt4.c1 = bmt1.c1)
@@ -2125,8 +2125,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                                               QUERY PLAN                                                                               
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
          Hash Cond: (bmt4.c1 = bmt1.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
          Hash Cond: (bmt4.c1 = bmt1.c1)
@@ -2233,8 +2233,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                                            QUERY PLAN                                                                            
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          ->  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          ->  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
@@ -2376,8 +2376,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                                               QUERY PLAN                                                                               
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          ->  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          ->  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
@@ -2475,8 +2475,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                    QUERY PLAN                                    
-----------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $0)
      ->  Index Only Scan using t1_i1 on t1 b2t1  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $0)
      ->  Index Only Scan using t1_i1 on t1 b2t1  (cost=xxx..xxx rows=1 width=xxx)
@@ -2523,8 +2523,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                    QUERY PLAN                                    
-----------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $0)
      ->  Index Only Scan using t1_i1 on t1 b2t1  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    InitPlan 1 (returns $0)
      ->  Index Only Scan using t1_i1 on t1 b2t1  (cost=xxx..xxx rows=1 width=xxx)
@@ -2580,8 +2580,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                           QUERY PLAN                                           
-------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt2.c1)
    InitPlan 1 (returns $0)
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt2.c1)
    InitPlan 1 (returns $0)
@@ -2663,8 +2663,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                           QUERY PLAN                                           
-------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt2.c1)
    InitPlan 1 (returns $0)
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt2.c1)
    InitPlan 1 (returns $0)
@@ -2751,8 +2751,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                     QUERY PLAN                                                     
---------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt4.c1)
    InitPlan 1 (returns $1)
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt4.c1)
    InitPlan 1 (returns $1)
@@ -2894,8 +2894,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                     QUERY PLAN                                                     
---------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt4.c1)
    InitPlan 1 (returns $1)
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt4.c1)
    InitPlan 1 (returns $1)
@@ -2996,8 +2996,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                          QUERY PLAN                                                          
-------------------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt4.c1)
    InitPlan 1 (returns $0)
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt4.c1)
    InitPlan 1 (returns $0)
@@ -3087,8 +3087,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                                          QUERY PLAN                                                          
-------------------------------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt4.c1)
    InitPlan 1 (returns $0)
  Nested Loop  (cost=xxx..xxx rows=10 width=xxx)
    Join Filter: (bmt1.c1 = bmt4.c1)
    InitPlan 1 (returns $0)
@@ -3142,8 +3142,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                          QUERY PLAN                                           
------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
@@ -3187,8 +3187,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                   QUERY PLAN                                    
----------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
@@ -3222,8 +3222,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                             QUERY PLAN                                             
-----------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
@@ -3267,8 +3267,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                     QUERY PLAN                                      
--------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
@@ -3310,8 +3310,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                          QUERY PLAN                                           
------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
@@ -3387,8 +3387,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                   QUERY PLAN                                    
----------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
@@ -3451,8 +3451,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                             QUERY PLAN                                             
-----------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
@@ -3543,8 +3543,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                     QUERY PLAN                                      
--------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
@@ -3612,8 +3612,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                          QUERY PLAN                                           
------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
@@ -3721,8 +3721,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                   QUERY PLAN                                    
----------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (t1.c1 = t4.c1)
@@ -3816,8 +3816,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                             QUERY PLAN                                             
-----------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
@@ -3965,8 +3965,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                     QUERY PLAN                                      
--------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          Join Filter: (b1t1.c1 = b1t4.c1)
@@ -4039,8 +4039,8 @@ HashJoin(v1t1 v1t1)
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (v1t1.c1 = v1t1_1.c1)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (v1t1.c1 = v1t1_1.c1)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4064,8 +4064,8 @@ Rows(v1t1 v1t1 #1)
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (v1t1.c1 = v1t1_1.c1)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (v1t1.c1 = v1t1_1.c1)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4085,8 +4085,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                 QUERY PLAN                                  
------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Index Scan using t1_i1 on t1 v1t1_  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Index Scan using t1_i1 on t1 v1t1_  (cost=xxx..xxx rows=1 width=xxx)
@@ -4105,8 +4105,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                 QUERY PLAN                                  
------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Index Scan using t1_i1 on t1 v1t1_  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Seq Scan on t1 v1t1  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Index Scan using t1_i1 on t1 v1t1_  (cost=xxx..xxx rows=1 width=xxx)
@@ -4120,8 +4120,8 @@ INFO:  pg_hint_plan: hint syntax error at or near "RowsHashJoin(r4t1 r4t1)"
 DETAIL:  Unrecognized hint keyword "RowsHashJoin".
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 DETAIL:  Unrecognized hint keyword "RowsHashJoin".
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (r4t1.c1 = r4t1_1.c1)
    ->  Seq Scan on t1 r4t1  (cost=xxx..xxx rows=1000 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (r4t1.c1 = r4t1_1.c1)
    ->  Seq Scan on t1 r4t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4135,8 +4135,8 @@ INFO:  pg_hint_plan: hint syntax error at or near "RowsHashJoin(r4t1 r4t1)Rows(r
 DETAIL:  Unrecognized hint keyword "RowsHashJoin".
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 DETAIL:  Unrecognized hint keyword "RowsHashJoin".
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (r4t1.c1 = r4t1_1.c1)
    ->  Seq Scan on t1 r4t1  (cost=xxx..xxx rows=1000 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1000 width=xxx)
    Hash Cond: (r4t1.c1 = r4t1_1.c1)
    ->  Seq Scan on t1 r4t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4156,8 +4156,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                 QUERY PLAN                                 
-----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Seq Scan on t1 r4t1  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Index Scan using t1_i1 on t1 r5t1  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Seq Scan on t1 r4t1  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Index Scan using t1_i1 on t1 r5t1  (cost=xxx..xxx rows=1 width=xxx)
@@ -4176,8 +4176,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                 QUERY PLAN                                 
-----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Seq Scan on t1 r4t1  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Index Scan using t1_i1 on t1 r5t1  (cost=xxx..xxx rows=1 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Seq Scan on t1 r4t1  (cost=xxx..xxx rows=1000 width=xxx)
    ->  Index Scan using t1_i1 on t1 r5t1  (cost=xxx..xxx rows=1 width=xxx)
@@ -4191,8 +4191,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.t1, s1.t2, (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t3 (c1, c2, c3, c4) WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s1.t2, (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t3 (c1, c2, c3, c4) WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                   QUERY PLAN                                   
---------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Hash Join  (cost=xxx..xxx rows=2 width=xxx)
          Hash Cond: (t2.c1 = "*VALUES*".column1)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Hash Join  (cost=xxx..xxx rows=2 width=xxx)
          Hash Cond: (t2.c1 = "*VALUES*".column1)
@@ -4216,8 +4216,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                   QUERY PLAN                                   
---------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Hash Join  (cost=xxx..xxx rows=2 width=xxx)
          Hash Cond: (t2.c1 = "*VALUES*".column1)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Hash Join  (cost=xxx..xxx rows=2 width=xxx)
          Hash Cond: (t2.c1 = "*VALUES*".column1)
@@ -4241,8 +4241,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                 QUERY PLAN                                  
------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=20 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          ->  Values Scan on "*VALUES*"  (cost=xxx..xxx rows=2 width=xxx)
  Nested Loop  (cost=xxx..xxx rows=20 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=2 width=xxx)
          ->  Values Scan on "*VALUES*"  (cost=xxx..xxx rows=2 width=xxx)
@@ -4256,8 +4256,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.t1, s1.t2, (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t3 (c1, c2, c3, c4), (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t4 (c1, c2, c3, c4) WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1 AND t1.c1 = t4.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s1.t2, (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t3 (c1, c2, c3, c4), (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t4 (c1, c2, c3, c4) WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1 AND t1.c1 = t4.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                      QUERY PLAN                                      
---------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t2.c1 = "*VALUES*_1".column1)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t2.c1 = "*VALUES*_1".column1)
@@ -4286,8 +4286,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                      QUERY PLAN                                      
---------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t2.c1 = "*VALUES*_1".column1)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t2.c1 = "*VALUES*_1".column1)
@@ -4322,8 +4322,8 @@ Rows(*VALUES* t1 t2 t3 #2)
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                      QUERY PLAN                                      
---------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t2.c1 = "*VALUES*_1".column1)
  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=1 width=xxx)
          Join Filter: (t2.c1 = "*VALUES*_1".column1)
@@ -4345,8 +4345,8 @@ Rows(*VALUES* t1 t2 t3 #2)
 EXPLAIN SELECT max(bmt1.c1) FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT max(bmt1.c1) FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                              QUERY PLAN                                              
-------------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=100 width=xxx)
          ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
  Aggregate  (cost=xxx..xxx rows=1 width=xxx)
    ->  Nested Loop  (cost=xxx..xxx rows=100 width=xxx)
          ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
@@ -4377,8 +4377,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                       QUERY PLAN                                        
------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=70 width=xxx)
    Merge Cond: (bmt1.c1 = bmt2.c1)
    ->  Index Only Scan using t1_i1 on t1 bmt1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=70 width=xxx)
    Merge Cond: (bmt1.c1 = bmt2.c1)
    ->  Index Only Scan using t1_i1 on t1 bmt1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4399,8 +4399,8 @@ error hint:
 EXPLAIN SELECT bmt1.c1 FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT bmt1.c1 FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                           QUERY PLAN                                           
-------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=100 width=xxx)
    ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
          Merge Cond: (bmt1.c1 = bmt2.c1)
  Nested Loop  (cost=xxx..xxx rows=100 width=xxx)
    ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
          Merge Cond: (bmt1.c1 = bmt2.c1)
@@ -4430,8 +4430,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                       QUERY PLAN                                        
------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=60 width=xxx)
    Merge Cond: (bmt1.c1 = bmt2.c1)
    ->  Index Only Scan using t1_i1 on t1 bmt1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=60 width=xxx)
    Merge Cond: (bmt1.c1 = bmt2.c1)
    ->  Index Only Scan using t1_i1 on t1 bmt1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4452,8 +4452,8 @@ error hint:
 EXPLAIN SELECT bmt1.c1 FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT bmt1.c1 FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                           QUERY PLAN                                           
-------------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Nested Loop  (cost=xxx..xxx rows=100 width=xxx)
    ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
          Merge Cond: (bmt1.c1 = bmt2.c1)
  Nested Loop  (cost=xxx..xxx rows=100 width=xxx)
    ->  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
          Merge Cond: (bmt1.c1 = bmt2.c1)
@@ -4483,8 +4483,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                       QUERY PLAN                                        
------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=50 width=xxx)
    Merge Cond: (bmt1.c1 = bmt2.c1)
    ->  Index Only Scan using t1_i1 on t1 bmt1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=50 width=xxx)
    Merge Cond: (bmt1.c1 = bmt2.c1)
    ->  Index Only Scan using t1_i1 on t1 bmt1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4517,8 +4517,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4539,8 +4539,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=5 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=5 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4564,8 +4564,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=101 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=101 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4586,8 +4586,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=99 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=99 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4609,8 +4609,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4635,8 +4635,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4657,8 +4657,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=200 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=200 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4679,8 +4679,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=10 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=10 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4696,8 +4696,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=301 width=xxx)
    Hash Cond: (p2.c1 = p1.c1)
    ->  Append  (cost=xxx..xxx rows=304 width=xxx)
  Hash Join  (cost=xxx..xxx rows=301 width=xxx)
    Hash Cond: (p2.c1 = p1.c1)
    ->  Append  (cost=xxx..xxx rows=304 width=xxx)
@@ -4730,8 +4730,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (p2.c1 = p1.c1)
    ->  Append  (cost=xxx..xxx rows=304 width=xxx)
  Hash Join  (cost=xxx..xxx rows=1 width=xxx)
    Hash Cond: (p2.c1 = p1.c1)
    ->  Append  (cost=xxx..xxx rows=304 width=xxx)
@@ -4757,8 +4757,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=301 width=xxx)
    Hash Cond: (p2.c1 = p1.c1)
    ->  Append  (cost=xxx..xxx rows=304 width=xxx)
  Hash Join  (cost=xxx..xxx rows=301 width=xxx)
    Hash Cond: (p2.c1 = p1.c1)
    ->  Append  (cost=xxx..xxx rows=304 width=xxx)
@@ -4791,8 +4791,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                  QUERY PLAN                                  
-------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Hash Join  (cost=xxx..xxx rows=301 width=xxx)
    Hash Cond: (p2.c1 = p1.c1)
    ->  Append  (cost=xxx..xxx rows=304 width=xxx)
  Hash Join  (cost=xxx..xxx rows=301 width=xxx)
    Hash Cond: (p2.c1 = p1.c1)
    ->  Append  (cost=xxx..xxx rows=304 width=xxx)
@@ -4821,8 +4821,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4845,8 +4845,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4859,8 +4859,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4886,8 +4886,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4900,8 +4900,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4924,8 +4924,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4938,8 +4938,8 @@ error hint:
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4965,8 +4965,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=1 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -4983,8 +4983,8 @@ SET client_min_messages TO DEBUG1;
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=100 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
@@ -5005,8 +5005,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
 
 \o
 \! sql/maskout.sh results/ut-R.tmpout
-                                QUERY PLAN                                 
----------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Merge Join  (cost=xxx..xxx rows=101 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
  Merge Join  (cost=xxx..xxx rows=101 width=xxx)
    Merge Cond: (t1.c1 = t2.c1)
    ->  Index Scan using t1_i1 on t1  (cost=xxx..xxx rows=1000 width=xxx)
index 919295f..0f36d22 100644 (file)
@@ -4487,8 +4487,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
@@ -4505,8 +4505,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
@@ -4523,8 +4523,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
@@ -4541,8 +4541,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
@@ -4559,8 +4559,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
@@ -4577,8 +4577,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
  Seq Scan on ti1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 100)
 
@@ -4601,8 +4601,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Seq Scan on t1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 1)
 
  Seq Scan on t1  (cost={inf}..{inf} rows=1 width=xxx)
    Filter: (c1 = 1)
 
@@ -5232,8 +5232,8 @@ error hint:
 EXPLAIN SELECT c4 FROM s1.p1 WHERE c2 * 2 < 100 AND c1 < 10;
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 EXPLAIN SELECT c4 FROM s1.p1 WHERE c2 * 2 < 100 AND c1 < 10;
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                          QUERY PLAN                           
----------------------------------------------------------------
+  QUERY PLAN
+----------------
  Append  (cost=xxx..xxx rows=4 width=xxx)
    ->  Seq Scan on p1 p1_1  (cost=xxx..xxx rows=1 width=xxx)
          Filter: ((c1 < 10) AND ((c2 * 2) < 100))
  Append  (cost=xxx..xxx rows=4 width=xxx)
    ->  Seq Scan on p1 p1_1  (cost=xxx..xxx rows=1 width=xxx)
          Filter: ((c1 < 10) AND ((c2 * 2) < 100))
@@ -5253,8 +5253,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                                       QUERY PLAN                                        
------------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Append  (cost=xxx..xxx rows=4 width=xxx)
    ->  Index Scan using p1_parent on p1 p1_1  (cost=xxx..xxx rows=1 width=xxx)
          Filter: ((c2 * 2) < 100)
  Append  (cost=xxx..xxx rows=4 width=xxx)
    ->  Index Scan using p1_parent on p1 p1_1  (cost=xxx..xxx rows=1 width=xxx)
          Filter: ((c2 * 2) < 100)
@@ -5277,8 +5277,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                                    QUERY PLAN                                     
------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Append  (cost=xxx..xxx rows=4 width=xxx)
    ->  Index Scan using p1_i2 on p1 p1_1  (cost=xxx..xxx rows=1 width=xxx)
          Index Cond: (c2 = 1)
  Append  (cost=xxx..xxx rows=4 width=xxx)
    ->  Index Scan using p1_i2 on p1 p1_1  (cost=xxx..xxx rows=1 width=xxx)
          Index Cond: (c2 = 1)
@@ -5304,8 +5304,8 @@ error hint:
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
 
 \o
 \! sql/maskout.sh results/ut-S.tmpout
-                                      QUERY PLAN                                      
---------------------------------------------------------------------------------------
+  QUERY PLAN
+----------------
  Append  (cost={inf}..{inf} rows=3 width=xxx)
    ->  Seq Scan on p2 p2_1  (cost={inf}..{inf} rows=1 width=xxx)
          Filter: (c1 = 1)
  Append  (cost={inf}..{inf} rows=3 width=xxx)
    ->  Seq Scan on p2 p2_1  (cost={inf}..{inf} rows=1 width=xxx)
          Filter: (c1 = 1)
index bde3292..da7aae3 100755 (executable)
@@ -1,4 +1,5 @@
 #! /bin/sh
 cat $1 | \
 sed 's/cost=10\{7\}[\.0-9]\+ /cost={inf}..{inf} /;s/cost=[\.0-9]\+ /cost=xxx..xxx /;s/width=[0-9]\+\([^0-9]\)/width=xxx\1/' |\
 #! /bin/sh
 cat $1 | \
 sed 's/cost=10\{7\}[\.0-9]\+ /cost={inf}..{inf} /;s/cost=[\.0-9]\+ /cost=xxx..xxx /;s/width=[0-9]\+\([^0-9]\)/width=xxx\1/' |\
-egrep -v "^ *((Planning time|JIT|Functions|Options):|\([0-9]* rows\))"
+egrep -v "^ *((Planning time|JIT|Functions|Options):|\([0-9]* rows\))" |\
+sed -e 's/^ *QUERY PLAN *$/  QUERY PLAN/' -e 's/^--*$/----------------/'