OSDN Git Service

Add regtests for plan storage.
authorKyotaro Horiguchi <horiguchi.kyotaro@lab.ntt.co.jp>
Thu, 3 Apr 2014 05:17:28 +0000 (14:17 +0900)
committerKyotaro Horiguchi <horiguchi.kyotaro@lab.ntt.co.jp>
Fri, 3 Apr 2015 05:52:52 +0000 (14:52 +0900)
expected/all.out
sql/all.sql

index 29bea80..2d2cc5d 100644 (file)
@@ -21,44 +21,1793 @@ SELECT id FROM plans
 SELECT '### '||'yaml-short       '||title||E'\n'||
   pg_store_plans_yamlplan(splan)
   FROM plans WHERE id BETWEEN 1 AND 3 or id = 1 ORDER BY id;
+### yaml-short       ###### Plan 1: Insert, Trigger
+- Plan:
+    Node Type: "ModifyTable"
+    Operation: "Insert"
+    Relation Name: "tt1"
+    Schema: "public"
+    Alias: "tt1"
+    Startup Cost: 0.00
+    Total Cost: 10.00
+    Plan Rows: 1000
+    Plan Width: 4
+    Actual Startup Time: 256.149
+    Actual Total Time: 256.149
+    Actual Rows: 0
+    Actual Loops: 1
+    Shared Hit Blocks: 29735
+    Shared Read Blocks: 87
+    Shared Dirtied Blocks: 85
+    Shared Written Blocks: 0
+    Local Hit Blocks: 0
+    Local Read Blocks: 0
+    Local Dirtied Blocks: 0
+    Local Written Blocks: 0
+    Temp Read Blocks: 0
+    Temp Written Blocks: 0
+    I/O Read Time: 0.000
+    I/O Write Time: 0.000
+    Plans:
+      - Node Type: "Function Scan"
+        Parent Relationship: "Member"
+        Function Name: "generate_series"
+        Schema: "pg_catalog"
+        Alias: "a"
+        Startup Cost: 0.00
+        Total Cost: 10.00
+        Plan Rows: 1000
+        Plan Width: 4
+        Actual Startup Time: 3.459
+        Actual Total Time: 9.184
+        Actual Rows: 10001
+        Actual Loops: 1
+        Output:
+          - "a.a"
+          - "NULL::integer"
+          - "NULL::text"
+        Function Call: "generate_series(0, 10000)"
+        Shared Hit Blocks: 0
+        Shared Read Blocks: 0
+        Shared Dirtied Blocks: 0
+        Shared Written Blocks: 0
+        Local Hit Blocks: 0
+        Local Read Blocks: 0
+        Local Dirtied Blocks: 0
+        Local Written Blocks: 0
+        Temp Read Blocks: 0
+        Temp Written Blocks: 0
+        I/O Read Time: 0.000
+        I/O Write Time: 0.000
+  Planning Time: 0.072
+  Triggers:
+    - Trigger Name: "tt1_trig_1"
+      Relation: "tt1"
+      Time: 90.331
+      Calls: 10001
+    - Trigger Name: "tt1_trig_2"
+      Relation: "tt1"
+      Time: 81.847
+      Calls: 10001
+
+=======
+### yaml-short       ###### Plan 2: Update, Trigger
+- Plan:
+    Node Type: "ModifyTable"
+    Operation: "Update"
+    Relation Name: "tt1"
+    Schema: "public"
+    Alias: "tt1"
+    Startup Cost: 0.00
+    Total Cost: 134.75
+    Plan Rows: 6380
+    Plan Width: 46
+    Actual Startup Time: 313.811
+    Actual Total Time: 313.811
+    Actual Rows: 0
+    Actual Loops: 1
+    Shared Hit Blocks: 50276
+    Shared Read Blocks: 108
+    Shared Dirtied Blocks: 108
+    Shared Written Blocks: 0
+    Local Hit Blocks: 0
+    Local Read Blocks: 0
+    Local Dirtied Blocks: 0
+    Local Written Blocks: 0
+    Temp Read Blocks: 0
+    Temp Written Blocks: 0
+    I/O Read Time: 0.000
+    I/O Write Time: 0.000
+    Plans:
+      - Node Type: "Seq Scan"
+        Parent Relationship: "Member"
+        Relation Name: "tt1"
+        Schema: "public"
+        Alias: "tt1"
+        Startup Cost: 0.00
+        Total Cost: 134.75
+        Plan Rows: 6380
+        Plan Width: 46
+        Actual Startup Time: 0.040
+        Actual Total Time: 10.405
+        Actual Rows: 10001
+        Actual Loops: 1
+        Output:
+          - "(a + 1)"
+          - "b"
+          - "c"
+          - "ctid"
+        Shared Hit Blocks: 55
+        Shared Read Blocks: 0
+        Shared Dirtied Blocks: 0
+        Shared Written Blocks: 0
+        Local Hit Blocks: 0
+        Local Read Blocks: 0
+        Local Dirtied Blocks: 0
+        Local Written Blocks: 0
+        Temp Read Blocks: 0
+        Temp Written Blocks: 0
+        I/O Read Time: 0.000
+        I/O Write Time: 0.000
+  Planning Time: 30.245
+  Triggers:
+    - Trigger Name: "tt1_trig_1"
+      Relation: "tt1"
+      Time: 96.546
+      Calls: 10001
+    - Trigger Name: "tt1_trig_2"
+      Relation: "tt1"
+      Time: 83.609
+      Calls: 10001
+
+=======
+### yaml-short       ###### Plan 3: Delete
+- Plan:
+    Node Type: "ModifyTable"
+    Operation: "Delete"
+    Relation Name: "tt1"
+    Schema: "public"
+    Alias: "tt1"
+    Startup Cost: 0.00
+    Total Cost: 298.66
+    Plan Rows: 63
+    Plan Width: 6
+    Actual Startup Time: 12.324
+    Actual Total Time: 12.324
+    Actual Rows: 0
+    Actual Loops: 1
+    Shared Hit Blocks: 1109
+    Shared Read Blocks: 0
+    Shared Dirtied Blocks: 0
+    Shared Written Blocks: 0
+    Local Hit Blocks: 0
+    Local Read Blocks: 0
+    Local Dirtied Blocks: 0
+    Local Written Blocks: 0
+    Temp Read Blocks: 0
+    Temp Written Blocks: 0
+    I/O Read Time: 0.000
+    I/O Write Time: 0.000
+    Plans:
+      - Node Type: "Seq Scan"
+        Parent Relationship: "Member"
+        Relation Name: "tt1"
+        Schema: "public"
+        Alias: "tt1"
+        Startup Cost: 0.00
+        Total Cost: 298.66
+        Plan Rows: 63
+        Plan Width: 6
+        Actual Startup Time: 3.454
+        Actual Total Time: 9.822
+        Actual Rows: 1000
+        Actual Loops: 1
+        Output:
+          - "ctid"
+        Filter: "((tt1.a % 10) = 0)"
+        Rows Removed by Filter: 9001
+        Shared Hit Blocks: 109
+        Shared Read Blocks: 0
+        Shared Dirtied Blocks: 0
+        Shared Written Blocks: 0
+        Local Hit Blocks: 0
+        Local Read Blocks: 0
+        Local Dirtied Blocks: 0
+        Local Written Blocks: 0
+        Temp Read Blocks: 0
+        Temp Written Blocks: 0
+        I/O Read Time: 0.000
+        I/O Write Time: 0.000
+  Planning Time: 1.091
+  Triggers:
 ##################
 SELECT '### '||'xml-short        '||title||E'\n'||
   pg_store_plans_xmlplan(splan)
   FROM plans WHERE id BETWEEN 4 AND 6 or id = 1 ORDER BY id;
+### xml-short        ###### Plan 1: Insert, Trigger
+<explain xmlns="http://www.postgresql.org/2009/explain">
+  <Query>
+    <Plan>
+      <Node-Type>ModifyTable</Node-Type>
+      <Operation>Insert</Operation>
+      <Relation-Name>tt1</Relation-Name>
+      <Schema>public</Schema>
+      <Alias>tt1</Alias>
+      <Startup-Cost>0.00</Startup-Cost>
+      <Total-Cost>10.00</Total-Cost>
+      <Plan-Rows>1000</Plan-Rows>
+      <Plan-Width>4</Plan-Width>
+      <Actual-Startup-Time>256.149</Actual-Startup-Time>
+      <Actual-Total-Time>256.149</Actual-Total-Time>
+      <Actual-Rows>0</Actual-Rows>
+      <Actual-Loops>1</Actual-Loops>
+      <Shared-Hit-Blocks>29735</Shared-Hit-Blocks>
+      <Shared-Read-Blocks>87</Shared-Read-Blocks>
+      <Shared-Dirtied-Blocks>85</Shared-Dirtied-Blocks>
+      <Shared-Written-Blocks>0</Shared-Written-Blocks>
+      <Local-Hit-Blocks>0</Local-Hit-Blocks>
+      <Local-Read-Blocks>0</Local-Read-Blocks>
+      <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+      <Local-Written-Blocks>0</Local-Written-Blocks>
+      <Temp-Read-Blocks>0</Temp-Read-Blocks>
+      <Temp-Written-Blocks>0</Temp-Written-Blocks>
+      <I/O-Read-Time>0.000</I/O-Read-Time>
+      <I/O-Write-Time>0.000</I/O-Write-Time>
+      <Plans>
+        <Plan>
+          <Node-Type>Function Scan</Node-Type>
+          <Parent-Relationship>Member</Parent-Relationship>
+          <Function-Name>generate_series</Function-Name>
+          <Schema>pg_catalog</Schema>
+          <Alias>a</Alias>
+          <Startup-Cost>0.00</Startup-Cost>
+          <Total-Cost>10.00</Total-Cost>
+          <Plan-Rows>1000</Plan-Rows>
+          <Plan-Width>4</Plan-Width>
+          <Actual-Startup-Time>3.459</Actual-Startup-Time>
+          <Actual-Total-Time>9.184</Actual-Total-Time>
+          <Actual-Rows>10001</Actual-Rows>
+          <Actual-Loops>1</Actual-Loops>
+          <Output>
+            <Item>a.a</Item>
+            <Item>NULL::integer</Item>
+            <Item>NULL::text</Item>
+          </Output>
+          <Function-Call>generate_series(0, 10000)</Function-Call>
+          <Shared-Hit-Blocks>0</Shared-Hit-Blocks>
+          <Shared-Read-Blocks>0</Shared-Read-Blocks>
+          <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+          <Shared-Written-Blocks>0</Shared-Written-Blocks>
+          <Local-Hit-Blocks>0</Local-Hit-Blocks>
+          <Local-Read-Blocks>0</Local-Read-Blocks>
+          <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+          <Local-Written-Blocks>0</Local-Written-Blocks>
+          <Temp-Read-Blocks>0</Temp-Read-Blocks>
+          <Temp-Written-Blocks>0</Temp-Written-Blocks>
+          <I/O-Read-Time>0.000</I/O-Read-Time>
+          <I/O-Write-Time>0.000</I/O-Write-Time>
+        </Plan>
+      </Plans>
+    </Plan>
+    <Planning-Time>0.072</Planning-Time>
+    <Triggers>
+      <Trigger>
+        <Trigger-Name>tt1_trig_1</Trigger-Name>
+        <Relation>tt1</Relation>
+        <Time>90.331</Time>
+        <Calls>10001</Calls>
+      </Trigger>
+      <Trigger>
+        <Trigger-Name>tt1_trig_2</Trigger-Name>
+        <Relation>tt1</Relation>
+        <Time>81.847</Time>
+        <Calls>10001</Calls>
+      </Trigger>
+    </Triggers>
+  </Query>
+</explain>
+
+
+=======
+### xml-short        ###### Plan 4: Result, Append Seq Scan
+<explain xmlns="http://www.postgresql.org/2009/explain">
+  <Query>
+    <Plan>
+      <Node-Type>Result</Node-Type>
+      <Startup-Cost>0.00</Startup-Cost>
+      <Total-Cost>418.02</Total-Cost>
+      <Plan-Rows>20002</Plan-Rows>
+      <Plan-Width>8</Plan-Width>
+      <Actual-Startup-Time>2.455</Actual-Startup-Time>
+      <Actual-Total-Time>17.069</Actual-Total-Time>
+      <Actual-Rows>20002</Actual-Rows>
+      <Actual-Loops>1</Actual-Loops>
+      <Output>
+        <Item>((tt1.a + 1))</Item>
+        <Item>(3)</Item>
+        <Item>1</Item>
+      </Output>
+      <Shared-Hit-Blocks>218</Shared-Hit-Blocks>
+      <Shared-Read-Blocks>0</Shared-Read-Blocks>
+      <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+      <Shared-Written-Blocks>0</Shared-Written-Blocks>
+      <Local-Hit-Blocks>0</Local-Hit-Blocks>
+      <Local-Read-Blocks>0</Local-Read-Blocks>
+      <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+      <Local-Written-Blocks>0</Local-Written-Blocks>
+      <Temp-Read-Blocks>0</Temp-Read-Blocks>
+      <Temp-Written-Blocks>0</Temp-Written-Blocks>
+      <I/O-Read-Time>0.000</I/O-Read-Time>
+      <I/O-Write-Time>0.000</I/O-Write-Time>
+      <Plans>
+        <Plan>
+          <Node-Type>Append</Node-Type>
+          <Parent-Relationship>Outer</Parent-Relationship>
+          <Startup-Cost>0.00</Startup-Cost>
+          <Total-Cost>418.02</Total-Cost>
+          <Plan-Rows>20002</Plan-Rows>
+          <Plan-Width>8</Plan-Width>
+          <Actual-Startup-Time>2.454</Actual-Startup-Time>
+          <Actual-Total-Time>11.990</Actual-Total-Time>
+          <Actual-Rows>20002</Actual-Rows>
+          <Actual-Loops>1</Actual-Loops>
+          <Shared-Hit-Blocks>218</Shared-Hit-Blocks>
+          <Shared-Read-Blocks>0</Shared-Read-Blocks>
+          <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+          <Shared-Written-Blocks>0</Shared-Written-Blocks>
+          <Local-Hit-Blocks>0</Local-Hit-Blocks>
+          <Local-Read-Blocks>0</Local-Read-Blocks>
+          <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+          <Local-Written-Blocks>0</Local-Written-Blocks>
+          <Temp-Read-Blocks>0</Temp-Read-Blocks>
+          <Temp-Written-Blocks>0</Temp-Written-Blocks>
+          <I/O-Read-Time>0.000</I/O-Read-Time>
+          <I/O-Write-Time>0.000</I/O-Write-Time>
+          <Plans>
+            <Plan>
+              <Node-Type>Seq Scan</Node-Type>
+              <Parent-Relationship>Member</Parent-Relationship>
+              <Relation-Name>tt1</Relation-Name>
+              <Schema>public</Schema>
+              <Alias>tt1</Alias>
+              <Startup-Cost>0.00</Startup-Cost>
+              <Total-Cost>263.01</Total-Cost>
+              <Plan-Rows>10001</Plan-Rows>
+              <Plan-Width>8</Plan-Width>
+              <Actual-Startup-Time>2.453</Actual-Startup-Time>
+              <Actual-Total-Time>6.480</Actual-Total-Time>
+              <Actual-Rows>10001</Actual-Rows>
+              <Actual-Loops>1</Actual-Loops>
+              <Output>
+                <Item>(tt1.a + 1)</Item>
+                <Item>3</Item>
+              </Output>
+              <Shared-Hit-Blocks>163</Shared-Hit-Blocks>
+              <Shared-Read-Blocks>0</Shared-Read-Blocks>
+              <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+              <Shared-Written-Blocks>0</Shared-Written-Blocks>
+              <Local-Hit-Blocks>0</Local-Hit-Blocks>
+              <Local-Read-Blocks>0</Local-Read-Blocks>
+              <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+              <Local-Written-Blocks>0</Local-Written-Blocks>
+              <Temp-Read-Blocks>0</Temp-Read-Blocks>
+              <Temp-Written-Blocks>0</Temp-Written-Blocks>
+              <I/O-Read-Time>0.000</I/O-Read-Time>
+              <I/O-Write-Time>0.000</I/O-Write-Time>
+            </Plan>
+            <Plan>
+              <Node-Type>Seq Scan</Node-Type>
+              <Parent-Relationship>Member</Parent-Relationship>
+              <Relation-Name>tt2</Relation-Name>
+              <Schema>public</Schema>
+              <Alias>tt2</Alias>
+              <Startup-Cost>0.00</Startup-Cost>
+              <Total-Cost>155.01</Total-Cost>
+              <Plan-Rows>10001</Plan-Rows>
+              <Plan-Width>8</Plan-Width>
+              <Actual-Startup-Time>0.007</Actual-Startup-Time>
+              <Actual-Total-Time>2.465</Actual-Total-Time>
+              <Actual-Rows>10001</Actual-Rows>
+              <Actual-Loops>1</Actual-Loops>
+              <Output>
+                <Item>tt2.a</Item>
+                <Item>4</Item>
+              </Output>
+              <Shared-Hit-Blocks>55</Shared-Hit-Blocks>
+              <Shared-Read-Blocks>0</Shared-Read-Blocks>
+              <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+              <Shared-Written-Blocks>0</Shared-Written-Blocks>
+              <Local-Hit-Blocks>0</Local-Hit-Blocks>
+              <Local-Read-Blocks>0</Local-Read-Blocks>
+              <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+              <Local-Written-Blocks>0</Local-Written-Blocks>
+              <Temp-Read-Blocks>0</Temp-Read-Blocks>
+              <Temp-Written-Blocks>0</Temp-Written-Blocks>
+              <I/O-Read-Time>0.000</I/O-Read-Time>
+              <I/O-Write-Time>0.000</I/O-Write-Time>
+            </Plan>
+          </Plans>
+        </Plan>
+      </Plans>
+    </Plan>
+    <Planning-Time>0.437</Planning-Time>
+    <Triggers>
+    </Triggers>
+  </Query>
+</explain>
+
+
+=======
+### xml-short        ###### Plan 5: Index scan (forward) ANY, array in expr, escape
+<explain xmlns="http://www.postgresql.org/2009/explain">
+  <Query>
+    <Plan>
+      <Node-Type>Index Scan</Node-Type>
+      <Scan-Direction>Forward</Scan-Direction>
+      <Index-Name>i_tt1</Index-Name>
+      <Relation-Name>tt1</Relation-Name>
+      <Schema>public</Schema>
+      <Alias>x"y</Alias>
+      <Startup-Cost>0.29</Startup-Cost>
+      <Total-Cost>21.21</Total-Cost>
+      <Plan-Rows>4</Plan-Rows>
+      <Plan-Width>12</Plan-Width>
+      <Actual-Startup-Time>0.005</Actual-Startup-Time>
+      <Actual-Total-Time>0.023</Actual-Total-Time>
+      <Actual-Rows>4</Actual-Rows>
+      <Actual-Loops>1</Actual-Loops>
+      <Output>
+        <Item>a</Item>
+        <Item>b</Item>
+        <Item>c</Item>
+      </Output>
+      <Index-Cond>("x""y".a = ANY ('{50,120,300,500}'::integer[]))</Index-Cond>
+      <Rows-Removed-by-Index-Recheck>0</Rows-Removed-by-Index-Recheck>
+      <Shared-Hit-Blocks>20</Shared-Hit-Blocks>
+      <Shared-Read-Blocks>0</Shared-Read-Blocks>
+      <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+      <Shared-Written-Blocks>0</Shared-Written-Blocks>
+      <Local-Hit-Blocks>0</Local-Hit-Blocks>
+      <Local-Read-Blocks>0</Local-Read-Blocks>
+      <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+      <Local-Written-Blocks>0</Local-Written-Blocks>
+      <Temp-Read-Blocks>0</Temp-Read-Blocks>
+      <Temp-Written-Blocks>0</Temp-Written-Blocks>
+      <I/O-Read-Time>0.000</I/O-Read-Time>
+      <I/O-Write-Time>0.000</I/O-Write-Time>
+    </Plan>
+    <Planning-Time>0.084</Planning-Time>
+    <Triggers>
+    </Triggers>
+  </Query>
+</explain>
+
+
+=======
+### xml-short        ###### Plan 6: Index scan (backward), MergeJoin, Sort, quichsort, alias
+<explain xmlns="http://www.postgresql.org/2009/explain">
+  <Query>
+    <Plan>
+      <Node-Type>Limit</Node-Type>
+      <Startup-Cost>819.75</Startup-Cost>
+      <Total-Cost>820.79</Total-Cost>
+      <Plan-Rows>10</Plan-Rows>
+      <Plan-Width>12</Plan-Width>
+      <Actual-Startup-Time>12.045</Actual-Startup-Time>
+      <Actual-Total-Time>12.045</Actual-Total-Time>
+      <Actual-Rows>0</Actual-Rows>
+      <Actual-Loops>1</Actual-Loops>
+      <Output>
+        <Item>x.b</Item>
+        <Item>x.c</Item>
+        <Item>x.a</Item>
+      </Output>
+      <Shared-Hit-Blocks>61</Shared-Hit-Blocks>
+      <Shared-Read-Blocks>0</Shared-Read-Blocks>
+      <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+      <Shared-Written-Blocks>0</Shared-Written-Blocks>
+      <Local-Hit-Blocks>0</Local-Hit-Blocks>
+      <Local-Read-Blocks>0</Local-Read-Blocks>
+      <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+      <Local-Written-Blocks>0</Local-Written-Blocks>
+      <Temp-Read-Blocks>0</Temp-Read-Blocks>
+      <Temp-Written-Blocks>0</Temp-Written-Blocks>
+      <I/O-Read-Time>0.000</I/O-Read-Time>
+      <I/O-Write-Time>0.000</I/O-Write-Time>
+      <Plans>
+        <Plan>
+          <Node-Type>Merge Join</Node-Type>
+          <Parent-Relationship>Outer</Parent-Relationship>
+          <Join-Type>Inner</Join-Type>
+          <Startup-Cost>819.75</Startup-Cost>
+          <Total-Cost>1854.80</Total-Cost>
+          <Plan-Rows>10001</Plan-Rows>
+          <Plan-Width>12</Plan-Width>
+          <Actual-Startup-Time>12.043</Actual-Startup-Time>
+          <Actual-Total-Time>12.043</Actual-Total-Time>
+          <Actual-Rows>0</Actual-Rows>
+          <Actual-Loops>1</Actual-Loops>
+          <Output>
+            <Item>x.b</Item>
+            <Item>x.c</Item>
+            <Item>x.a</Item>
+          </Output>
+          <Merge-Cond>(x.a = (((- y.b) * 3)))</Merge-Cond>
+          <Shared-Hit-Blocks>61</Shared-Hit-Blocks>
+          <Shared-Read-Blocks>0</Shared-Read-Blocks>
+          <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+          <Shared-Written-Blocks>0</Shared-Written-Blocks>
+          <Local-Hit-Blocks>0</Local-Hit-Blocks>
+          <Local-Read-Blocks>0</Local-Read-Blocks>
+          <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+          <Local-Written-Blocks>0</Local-Written-Blocks>
+          <Temp-Read-Blocks>0</Temp-Read-Blocks>
+          <Temp-Written-Blocks>0</Temp-Written-Blocks>
+          <I/O-Read-Time>0.000</I/O-Read-Time>
+          <I/O-Write-Time>0.000</I/O-Write-Time>
+          <Plans>
+            <Plan>
+              <Node-Type>Index Scan</Node-Type>
+              <Parent-Relationship>Outer</Parent-Relationship>
+              <Scan-Direction>Backward</Scan-Direction>
+              <Index-Name>i_tt1</Index-Name>
+              <Relation-Name>tt1</Relation-Name>
+              <Schema>public</Schema>
+              <Alias>x</Alias>
+              <Startup-Cost>0.29</Startup-Cost>
+              <Total-Cost>760.30</Total-Cost>
+              <Plan-Rows>10001</Plan-Rows>
+              <Plan-Width>12</Plan-Width>
+              <Actual-Startup-Time>0.030</Actual-Startup-Time>
+              <Actual-Total-Time>0.030</Actual-Total-Time>
+              <Actual-Rows>1</Actual-Rows>
+              <Actual-Loops>1</Actual-Loops>
+              <Output>
+                <Item>x.a</Item>
+                <Item>x.b</Item>
+                <Item>x.c</Item>
+              </Output>
+              <Shared-Hit-Blocks>6</Shared-Hit-Blocks>
+              <Shared-Read-Blocks>0</Shared-Read-Blocks>
+              <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+              <Shared-Written-Blocks>0</Shared-Written-Blocks>
+              <Local-Hit-Blocks>0</Local-Hit-Blocks>
+              <Local-Read-Blocks>0</Local-Read-Blocks>
+              <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+              <Local-Written-Blocks>0</Local-Written-Blocks>
+              <Temp-Read-Blocks>0</Temp-Read-Blocks>
+              <Temp-Written-Blocks>0</Temp-Written-Blocks>
+              <I/O-Read-Time>0.000</I/O-Read-Time>
+              <I/O-Write-Time>0.000</I/O-Write-Time>
+            </Plan>
+            <Plan>
+              <Node-Type>Sort</Node-Type>
+              <Parent-Relationship>Inner</Parent-Relationship>
+              <Startup-Cost>819.47</Startup-Cost>
+              <Total-Cost>844.47</Total-Cost>
+              <Plan-Rows>10001</Plan-Rows>
+              <Plan-Width>4</Plan-Width>
+              <Actual-Startup-Time>9.539</Actual-Startup-Time>
+              <Actual-Total-Time>10.243</Actual-Total-Time>
+              <Actual-Rows>10001</Actual-Rows>
+              <Actual-Loops>1</Actual-Loops>
+              <Output>
+                <Item>y.b</Item>
+                <Item>(((- y.b) * 3))</Item>
+              </Output>
+              <Sort-Key>
+                <Item>(((- y.b) * 3))</Item>
+              </Sort-Key>
+              <Sort-Method>quicksort</Sort-Method>
+              <Sort-Space-Used>855</Sort-Space-Used>
+              <Sort-Space-Type>Memory</Sort-Space-Type>
+              <Shared-Hit-Blocks>55</Shared-Hit-Blocks>
+              <Shared-Read-Blocks>0</Shared-Read-Blocks>
+              <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+              <Shared-Written-Blocks>0</Shared-Written-Blocks>
+              <Local-Hit-Blocks>0</Local-Hit-Blocks>
+              <Local-Read-Blocks>0</Local-Read-Blocks>
+              <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+              <Local-Written-Blocks>0</Local-Written-Blocks>
+              <Temp-Read-Blocks>0</Temp-Read-Blocks>
+              <Temp-Written-Blocks>0</Temp-Written-Blocks>
+              <I/O-Read-Time>0.000</I/O-Read-Time>
+              <I/O-Write-Time>0.000</I/O-Write-Time>
+              <Plans>
+                <Plan>
+                  <Node-Type>Seq Scan</Node-Type>
+                  <Parent-Relationship>Outer</Parent-Relationship>
+                  <Relation-Name>tt2</Relation-Name>
+                  <Schema>public</Schema>
+                  <Alias>y</Alias>
+                  <Startup-Cost>0.00</Startup-Cost>
+                  <Total-Cost>155.01</Total-Cost>
+                  <Plan-Rows>10001</Plan-Rows>
+                  <Plan-Width>4</Plan-Width>
+                  <Actual-Startup-Time>0.009</Actual-Startup-Time>
+                  <Actual-Total-Time>3.954</Actual-Total-Time>
+                  <Actual-Rows>10001</Actual-Rows>
+                  <Actual-Loops>1</Actual-Loops>
+                  <Output>
+                    <Item>y.b</Item>
+                    <Item>((- y.b) * 3)</Item>
+                  </Output>
+                  <Shared-Hit-Blocks>55</Shared-Hit-Blocks>
+                  <Shared-Read-Blocks>0</Shared-Read-Blocks>
+                  <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+                  <Shared-Written-Blocks>0</Shared-Written-Blocks>
+                  <Local-Hit-Blocks>0</Local-Hit-Blocks>
+                  <Local-Read-Blocks>0</Local-Read-Blocks>
+                  <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+                  <Local-Written-Blocks>0</Local-Written-Blocks>
+                  <Temp-Read-Blocks>0</Temp-Read-Blocks>
+                  <Temp-Written-Blocks>0</Temp-Written-Blocks>
+                  <I/O-Read-Time>0.000</I/O-Read-Time>
+                  <I/O-Write-Time>0.000</I/O-Write-Time>
+                </Plan>
+              </Plans>
+            </Plan>
+          </Plans>
+        </Plan>
+      </Plans>
+    </Plan>
+    <Planning-Time>0.211</Planning-Time>
+    <Triggers>
+    </Triggers>
+  </Query>
+</explain>
+
 ###### text format output test
 SELECT '### '||'TEXT-short       '||title||E'\n'||
   pg_store_plans_textplan(splan)
   FROM plans ORDER BY id;
 ### TEXT-short       ###### Plan 0: all properties
 
+
+=======
+### TEXT-short       ###### Plan 1: Insert, Trigger
+Insert on public.tt1  (cost=0.00..10.00 rows=1000 width=4) (actual time=256.149..256.149 rows=0 loops=1)
+  Buffers: shared hit=29735 read=87 dirtied=85
+  ->  Function Scan on pg_catalog.generate_series a  (cost=0.00..10.00 rows=1000 width=4) (actual time=3.459..9.184 rows=10001 loops=1)
+        Output: a.a, NULL::integer, NULL::text
+        Function Call: generate_series(0, 10000)
+Trigger tt1_trig_1: time=90.331 calls=10001
+Trigger tt1_trig_2: time=81.847 calls=10001
+
+=======
+### TEXT-short       ###### Plan 2: Update, Trigger
+Update on public.tt1  (cost=0.00..134.75 rows=6380 width=46) (actual time=313.811..313.811 rows=0 loops=1)
+  Buffers: shared hit=50276 read=108 dirtied=108
+  ->  Seq Scan on public.tt1  (cost=0.00..134.75 rows=6380 width=46) (actual time=0.040..10.405 rows=10001 loops=1)
+        Output: (a + 1), b, c, ctid
+        Buffers: shared hit=55
+Trigger tt1_trig_1: time=96.546 calls=10001
+Trigger tt1_trig_2: time=83.609 calls=10001
+
+=======
+### TEXT-short       ###### Plan 3: Delete
+Delete on public.tt1  (cost=0.00..298.66 rows=63 width=6) (actual time=12.324..12.324 rows=0 loops=1)
+  Buffers: shared hit=1109
+  ->  Seq Scan on public.tt1  (cost=0.00..298.66 rows=63 width=6) (actual time=3.454..9.822 rows=1000 loops=1)
+        Output: ctid
+        Filter: ((tt1.a % 10) = 0)
+        Rows Removed by Filter: 9001
+        Buffers: shared hit=109
+
+=======
+### TEXT-short       ###### Plan 4: Result, Append Seq Scan
+Result  (cost=0.00..418.02 rows=20002 width=8) (actual time=2.455..17.069 rows=20002 loops=1)
+  Output: ((tt1.a + 1)), (3), 1
+  Buffers: shared hit=218
+  ->  Append  (cost=0.00..418.02 rows=20002 width=8) (actual time=2.454..11.990 rows=20002 loops=1)
+        Buffers: shared hit=218
+        ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=8) (actual time=2.453..6.480 rows=10001 loops=1)
+              Output: (tt1.a + 1), 3
+              Buffers: shared hit=163
+        ->  Seq Scan on public.tt2  (cost=0.00..155.01 rows=10001 width=8) (actual time=0.007..2.465 rows=10001 loops=1)
+              Output: tt2.a, 4
+              Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 5: Index scan (forward) ANY, array in expr, escape
+Index Scan using i_tt1 on public.tt1 "x""y"  (cost=0.29..21.21 rows=4 width=12) (actual time=0.005..0.023 rows=4 loops=1)
+  Output: a, b, c
+  Index Cond: ("x""y".a = ANY ('{50,120,300,500}'::integer[]))
+  Buffers: shared hit=20
+
+=======
+### TEXT-short       ###### Plan 6: Index scan (backward), MergeJoin, Sort, quichsort, alias
+Limit  (cost=819.75..820.79 rows=10 width=12) (actual time=12.045..12.045 rows=0 loops=1)
+  Output: x.b, x.c, x.a
+  Buffers: shared hit=61
+  ->  Merge Join  (cost=819.75..1854.80 rows=10001 width=12) (actual time=12.043..12.043 rows=0 loops=1)
+        Output: x.b, x.c, x.a
+        Merge Cond: (x.a = (((- y.b) * 3)))
+        Buffers: shared hit=61
+        ->  Index Scan Backward using i_tt1 on public.tt1 x  (cost=0.29..760.30 rows=10001 width=12) (actual time=0.030..0.030 rows=1 loops=1)
+              Output: x.a, x.b, x.c
+              Buffers: shared hit=6
+        ->  Sort  (cost=819.47..844.47 rows=10001 width=4) (actual time=9.539..10.243 rows=10001 loops=1)
+              Output: y.b, (((- y.b) * 3))
+              Sort Key: (((- y.b) * 3))
+              Sort Method: quicksort  Memory: 855kB
+              Buffers: shared hit=55
+              ->  Seq Scan on public.tt2 y  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.009..3.954 rows=10001 loops=1)
+                    Output: y.b, ((- y.b) * 3)
+                    Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 7: IndexOnlyScan
+Index Only Scan using i_tt1 on public.tt1  (cost=0.29..8.46 rows=10 width=4) (actual time=0.015..0.032 rows=10 loops=1)
+  Output: a
+  Index Cond: (tt1.a < 10)
+  Heap Fetches: 29
+  Buffers: shared hit=31
+
+=======
+### TEXT-short       ###### Plan 8: Plain Aggregate, CTE, Recursive Union, WorkTable Scan, CTE Scan
+Aggregate  (cost=3.65..3.66 rows=1 width=4) (actual time=0.034..0.034 rows=1 loops=1)
+  Output: sum(cte1.a)
+  CTE cte1
+    ->  Recursive Union  (cost=0.00..2.95 rows=31 width=4) (actual time=0.001..0.023 rows=10 loops=1)
+        ->  Result  (cost=0.00..0.01 rows=1 width=0) (actual time=0.001..0.001 rows=1 loops=1)
+              Output: 1
+        ->  WorkTable Scan  (cost=0.00..0.23 rows=3 width=4) (actual time=0.001..0.001 rows=1 loops=10)
+              Output: (cte1_1.a + 1)
+              Filter: (cte1_1.a < 10)
+  ->  CTE Scan on cte1  (cost=0.00..0.62 rows=31 width=4) (actual time=0.003..0.028 rows=10 loops=1)
+        Output: cte1.a
+
+=======
+### TEXT-short       ###### Plan 9: FunctionScan, Hash/HashJoin, Nested Loop
+Nested Loop  (cost=1.15..2.69 rows=1 width=64) (actual time=0.048..0.050 rows=1 loops=1)
+  Output: d.datname
+  Buffers: shared hit=3
+  ->  Hash Join  (cost=1.02..2.41 rows=1 width=4) (actual time=0.041..0.042 rows=1 loops=1)
+        Output: s.datid
+        Hash Cond: (s.usesysid = u.oid)
+        Buffers: shared hit=1
+        ->  Function Scan on pg_catalog.pg_stat_get_activity s  (cost=0.00..1.00 rows=100 width=8) (actual time=0.026..0.026 rows=1 loops=1)
+              Output: s.datid, s.pid, s.usesysid, s.application_name, s.state, s.query, s.waiting, s.xact_start, s.query_start, s.backend_start, s.state_change, s.client_addr, s.client_hostname, s.client_port, s.backend_xid, s.backend_xmin
+              Function Call: pg_stat_get_activity(NULL::integer)
+        ->  Hash  (cost=1.01..1.01 rows=1 width=4) (actual time=0.006..0.006 rows=1 loops=1)
+              Output: u.oid
+              Buckets: 1024  Batches: 1  Memory Usage: 1kB
+              Buffers: shared hit=1
+              ->  Seq Scan on pg_catalog.pg_authid u  (cost=0.00..1.01 rows=1 width=4) (actual time=0.003..0.004 rows=1 loops=1)
+                    Output: u.oid
+                    Buffers: shared hit=1
+  ->  Index Scan using pg_database_oid_index on pg_catalog.pg_database d  (cost=0.13..0.27 rows=1 width=68) (actual time=0.005..0.006 rows=1 loops=1)
+        Output: d.datname, d.oid
+        Index Cond: (d.oid = s.datid)
+        Buffers: shared hit=2
+
+=======
+### TEXT-short       ###### Plan 10: MergeAppend, Values
+Merge Append  (cost=0.36..985.44 rows=10004 width=4) (actual time=0.021..21.019 rows=10004 loops=1)
+  Sort Key: tt1.a
+  Buffers: shared hit=30069
+  ->  Index Only Scan using i_tt1 on public.tt1  (cost=0.29..760.30 rows=10001 width=4) (actual time=0.012..18.927 rows=10001 loops=1)
+        Output: tt1.a
+        Heap Fetches: 29973
+        Buffers: shared hit=30069
+  ->  Sort  (cost=0.06..0.07 rows=3 width=4) (actual time=0.008..0.009 rows=3 loops=1)
+        Output: "*VALUES*".column1
+        Sort Key: "*VALUES*".column1
+        Sort Method: quicksort  Memory: 25kB
+        ->  Values Scan on "*VALUES*"  (cost=0.00..0.04 rows=3 width=4) (actual time=0.001..0.003 rows=3 loops=1)
+              Output: "*VALUES*".column1
+
+=======
+### TEXT-short       ###### Plan 11: Append, HashAggregate
+HashAggregate  (cost=668.04..868.06 rows=20002 width=4) (actual time=13.884..17.625 rows=20002 loops=1)
+  Output: tt1.a
+  Buffers: shared hit=218
+  ->  Append  (cost=0.00..618.04 rows=20002 width=4) (actual time=0.097..7.241 rows=20002 loops=1)
+        Buffers: shared hit=218
+        ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=4) (actual time=0.097..2.345 rows=10001 loops=1)
+              Output: tt1.a
+              Buffers: shared hit=163
+        ->  Seq Scan on public.tt2  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.007..2.305 rows=10001 loops=1)
+              Output: tt2.b
+              Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 12: GroupAggregate
+GroupAggregate  (cost=1067.47..1242.49 rows=10001 width=8) (actual time=11.028..20.786 rows=10001 loops=1)
+  Output: sum(a), b
+  Buffers: shared hit=163, temp read=33 written=33
+  ->  Sort  (cost=1067.47..1092.47 rows=10001 width=8) (actual time=11.025..14.516 rows=10001 loops=1)
+        Output: b, a
+        Sort Key: tt1.b
+        Sort Method: external merge  Disk: 168kB
+        Buffers: shared hit=163, temp read=33 written=33
+        ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=8) (actual time=0.099..2.437 rows=10001 loops=1)
+              Output: b, a
+              Buffers: shared hit=163
+
+=======
+### TEXT-short       ###### Plan 13: Group
+Group  (cost=1067.47..1117.47 rows=10001 width=4) (actual time=10.215..17.715 rows=10001 loops=1)
+  Output: b
+  Buffers: shared hit=163, temp read=25 written=25
+  ->  Sort  (cost=1067.47..1092.47 rows=10001 width=4) (actual time=10.214..13.481 rows=10001 loops=1)
+        Output: b
+        Sort Key: tt1.b
+        Sort Method: external merge  Disk: 120kB
+        Buffers: shared hit=163, temp read=25 written=25
+        ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=4) (actual time=0.095..2.275 rows=10001 loops=1)
+              Output: b
+              Buffers: shared hit=163
+
+=======
+### TEXT-short       ###### Plan 14: SetOp intersect, SbuqueryScan
+Sort  (cost=1332.50..1357.51 rows=10001 width=4) (actual time=17.472..17.472 rows=0 loops=1)
+  Output: "*SELECT* 1".a, (0)
+  Sort Key: "*SELECT* 1".a
+  Sort Method: quicksort  Memory: 25kB
+  Buffers: shared hit=218
+  ->  HashSetOp Intersect  (cost=0.00..668.04 rows=10001 width=4) (actual time=17.470..17.470 rows=0 loops=1)
+        Output: "*SELECT* 1".a, (0)
+        Buffers: shared hit=218
+        ->  Append  (cost=0.00..618.04 rows=20002 width=4) (actual time=0.090..11.721 rows=20002 loops=1)
+              Buffers: shared hit=218
+              ->  Subquery Scan on "*SELECT* 1"  (cost=0.00..363.02 rows=10001 width=4) (actual time=0.090..4.551 rows=10001 loops=1)
+                    Output: "*SELECT* 1".a, 0
+                    Buffers: shared hit=163
+                    ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=4) (actual time=0.090..2.344 rows=10001 loops=1)
+                          Output: tt1.a
+                          Buffers: shared hit=163
+              ->  Subquery Scan on "*SELECT* 2"  (cost=0.00..255.02 rows=10001 width=4) (actual time=0.007..4.613 rows=10001 loops=1)
+                    Output: "*SELECT* 2".b, 1
+                    Buffers: shared hit=55
+                    ->  Seq Scan on public.tt2  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.007..2.342 rows=10001 loops=1)
+                          Output: tt2.b
+                          Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 15: Sorted SetOp, Sort on Disk
+SetOp Intersect  (cost=2323.47..2423.48 rows=10001 width=4) (actual time=44.719..44.719 rows=0 loops=1)
+  Output: "*SELECT* 1".a, (0)
+  Buffers: shared hit=218, temp read=77 written=77
+  ->  Sort  (cost=2323.47..2373.47 rows=20002 width=4) (actual time=32.675..38.534 rows=20002 loops=1)
+        Output: "*SELECT* 1".a, (0)
+        Sort Key: "*SELECT* 1".a
+        Sort Method: external merge  Disk: 352kB
+        Buffers: shared hit=218, temp read=77 written=77
+        ->  Append  (cost=0.00..618.04 rows=20002 width=4) (actual time=0.095..12.658 rows=20002 loops=1)
+              Buffers: shared hit=218
+              ->  Subquery Scan on "*SELECT* 1"  (cost=0.00..363.02 rows=10001 width=4) (actual time=0.095..5.182 rows=10001 loops=1)
+                    Output: "*SELECT* 1".a, 0
+                    Buffers: shared hit=163
+                    ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=4) (actual time=0.094..2.669 rows=10001 loops=1)
+                          Output: tt1.a
+                          Buffers: shared hit=163
+              ->  Subquery Scan on "*SELECT* 2"  (cost=0.00..255.02 rows=10001 width=4) (actual time=0.007..4.686 rows=10001 loops=1)
+                    Output: "*SELECT* 2".b, 1
+                    Buffers: shared hit=55
+                    ->  Seq Scan on public.tt2  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.006..2.384 rows=10001 loops=1)
+                          Output: tt2.b
+                          Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 16: HashSetOp intersect All, SubqueryScan
+Sort  (cost=1332.50..1357.51 rows=10001 width=4) (actual time=19.395..19.395 rows=0 loops=1)
+  Output: "*SELECT* 1".a, (0)
+  Sort Key: "*SELECT* 1".a
+  Sort Method: quicksort  Memory: 25kB
+  Buffers: shared hit=218
+  ->  HashSetOp Intersect All  (cost=0.00..668.04 rows=10001 width=4) (actual time=19.391..19.391 rows=0 loops=1)
+        Output: "*SELECT* 1".a, (0)
+        Buffers: shared hit=218
+        ->  Append  (cost=0.00..618.04 rows=20002 width=4) (actual time=0.095..12.956 rows=20002 loops=1)
+              Buffers: shared hit=218
+              ->  Subquery Scan on "*SELECT* 1"  (cost=0.00..363.02 rows=10001 width=4) (actual time=0.095..5.344 rows=10001 loops=1)
+                    Output: "*SELECT* 1".a, 0
+                    Buffers: shared hit=163
+                    ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=4) (actual time=0.095..2.711 rows=10001 loops=1)
+                          Output: tt1.a
+                          Buffers: shared hit=163
+              ->  Subquery Scan on "*SELECT* 2"  (cost=0.00..255.02 rows=10001 width=4) (actual time=0.008..4.805 rows=10001 loops=1)
+                    Output: "*SELECT* 2".b, 1
+                    Buffers: shared hit=55
+                    ->  Seq Scan on public.tt2  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.008..2.460 rows=10001 loops=1)
+                          Output: tt2.b
+                          Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 17: HashSetOp except, SubqueryScan
+Sort  (cost=1332.50..1357.51 rows=10001 width=4) (actual time=24.361..25.158 rows=10001 loops=1)
+  Output: "*SELECT* 1".a, (0)
+  Sort Key: "*SELECT* 1".a
+  Sort Method: quicksort  Memory: 855kB
+  Buffers: shared hit=218
+  ->  HashSetOp Except  (cost=0.00..668.04 rows=10001 width=4) (actual time=18.923..19.997 rows=10001 loops=1)
+        Output: "*SELECT* 1".a, (0)
+        Buffers: shared hit=218
+        ->  Append  (cost=0.00..618.04 rows=20002 width=4) (actual time=0.112..12.917 rows=20002 loops=1)
+              Buffers: shared hit=218
+              ->  Subquery Scan on "*SELECT* 1"  (cost=0.00..363.02 rows=10001 width=4) (actual time=0.112..5.518 rows=10001 loops=1)
+                    Output: "*SELECT* 1".a, 0
+                    Buffers: shared hit=163
+                    ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=4) (actual time=0.110..2.818 rows=10001 loops=1)
+                          Output: tt1.a
+                          Buffers: shared hit=163
+              ->  Subquery Scan on "*SELECT* 2"  (cost=0.00..255.02 rows=10001 width=4) (actual time=0.007..4.578 rows=10001 loops=1)
+                    Output: "*SELECT* 2".b, 1
+                    Buffers: shared hit=55
+                    ->  Seq Scan on public.tt2  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.007..2.310 rows=10001 loops=1)
+                          Output: tt2.b
+                          Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 18: HashSetOp except all, SubqueryScan
+Sort  (cost=1332.50..1357.51 rows=10001 width=4) (actual time=23.742..24.542 rows=10001 loops=1)
+  Output: "*SELECT* 1".a, (0)
+  Sort Key: "*SELECT* 1".a
+  Sort Method: quicksort  Memory: 855kB
+  Buffers: shared hit=218
+  ->  HashSetOp Except All  (cost=0.00..668.04 rows=10001 width=4) (actual time=18.525..19.612 rows=10001 loops=1)
+        Output: "*SELECT* 1".a, (0)
+        Buffers: shared hit=218
+        ->  Append  (cost=0.00..618.04 rows=20002 width=4) (actual time=0.116..12.639 rows=20002 loops=1)
+              Buffers: shared hit=218
+              ->  Subquery Scan on "*SELECT* 1"  (cost=0.00..363.02 rows=10001 width=4) (actual time=0.116..5.303 rows=10001 loops=1)
+                    Output: "*SELECT* 1".a, 0
+                    Buffers: shared hit=163
+                    ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=4) (actual time=0.115..2.724 rows=10001 loops=1)
+                          Output: tt1.a
+                          Buffers: shared hit=163
+              ->  Subquery Scan on "*SELECT* 2"  (cost=0.00..255.02 rows=10001 width=4) (actual time=0.007..4.542 rows=10001 loops=1)
+                    Output: "*SELECT* 2".b, 1
+                    Buffers: shared hit=55
+                    ->  Seq Scan on public.tt2  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.007..2.301 rows=10001 loops=1)
+                          Output: tt2.b
+                          Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 19: merge LEFT join
+Merge Left Join  (cost=0.58..2434.81 rows=15224 width=4) (actual time=0.028..37.655 rows=30003 loops=1)
+  Output: x.b
+  Merge Cond: (x.a = y.a)
+  Buffers: shared hit=20418
+  ->  Index Scan using i_tt1 on public.tt1 x  (cost=0.29..760.30 rows=10001 width=8) (actual time=0.007..3.875 rows=10001 loops=1)
+        Output: x.a, x.b, x.c
+        Buffers: shared hit=165
+  ->  Index Only Scan using i_tt3_a on public.tt3 y  (cost=0.29..5745.99 rows=120003 width=4) (actual time=0.018..18.091 rows=30004 loops=1)
+        Output: y.a
+        Heap Fetches: 30004
+        Buffers: shared hit=20253
+
+=======
+### TEXT-short       ###### Plan 20: hash FULL join
+Hash Full Join  (cost=280.02..793.06 rows=10001 width=4) (actual time=5.372..12.828 rows=17001 loops=1)
+  Output: x.b
+  Hash Cond: (x.a = y.a)
+  Buffers: shared hit=218
+  ->  Seq Scan on public.tt1 x  (cost=0.00..263.01 rows=10001 width=8) (actual time=0.103..1.570 rows=10001 loops=1)
+        Output: x.a, x.b, x.c
+        Buffers: shared hit=163
+  ->  Hash  (cost=155.01..155.01 rows=10001 width=4) (actual time=5.264..5.264 rows=10001 loops=1)
+        Output: y.a
+        Buckets: 1024  Batches: 1  Memory Usage: 352kB
+        Buffers: shared hit=55
+        ->  Seq Scan on public.tt2 y  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.009..2.478 rows=10001 loops=1)
+              Output: y.a
+              Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 21: hash SEMI join
+Hash Semi Join  (cost=280.02..793.06 rows=10001 width=12) (actual time=10.091..10.091 rows=0 loops=1)
+  Output: tt1.a, tt1.b, tt1.c
+  Hash Cond: (tt1.a = tt2.b)
+  Buffers: shared hit=218
+  ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=12) (actual time=0.090..1.410 rows=10001 loops=1)
+        Output: tt1.a, tt1.b, tt1.c
+        Buffers: shared hit=163
+  ->  Hash  (cost=155.01..155.01 rows=10001 width=4) (actual time=5.430..5.430 rows=10001 loops=1)
+        Output: tt2.b
+        Buckets: 1024  Batches: 1  Memory Usage: 352kB
+        Buffers: shared hit=55
+        ->  Seq Scan on public.tt2  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.007..2.483 rows=10001 loops=1)
+              Output: tt2.b
+              Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 22: Hash Anti Join
+Hash Anti Join  (cost=280.02..693.05 rows=1 width=12) (actual time=5.480..11.691 rows=10001 loops=1)
+  Output: tt1.a, tt1.b, tt1.c
+  Hash Cond: (tt1.a = tt2.b)
+  Buffers: shared hit=218
+  ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=12) (actual time=0.091..1.520 rows=10001 loops=1)
+        Output: tt1.a, tt1.b, tt1.c
+        Buffers: shared hit=163
+  ->  Hash  (cost=155.01..155.01 rows=10001 width=4) (actual time=5.384..5.384 rows=10001 loops=1)
+        Output: tt2.b
+        Buckets: 1024  Batches: 1  Memory Usage: 352kB
+        Buffers: shared hit=55
+        ->  Seq Scan on public.tt2  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.007..2.563 rows=10001 loops=1)
+              Output: tt2.b
+              Buffers: shared hit=55
+
+=======
+### TEXT-short       ###### Plan 23: WindowAgg
+WindowAgg  (cost=927.47..1127.49 rows=10001 width=4) (actual time=5.598..16.880 rows=10001 loops=1)
+  Output: first_value(a) OVER (?), ((a / 10))
+  Buffers: shared hit=163
+  ->  Sort  (cost=927.47..952.47 rows=10001 width=4) (actual time=5.591..6.471 rows=10001 loops=1)
+        Output: ((a / 10)), a
+        Sort Key: ((tt1.a / 10))
+        Sort Method: quicksort  Memory: 855kB
+        Buffers: shared hit=163
+        ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=4) (actual time=0.094..3.052 rows=10001 loops=1)
+              Output: (a / 10), a
+              Buffers: shared hit=163
+
+=======
+### TEXT-short       ###### Plan 24: Unique
+Unique  (cost=0.29..785.30 rows=10001 width=4) (actual time=0.010..7.552 rows=10001 loops=1)
+  Output: a
+  Buffers: shared hit=165
+  ->  Index Only Scan using i_tt1 on public.tt1  (cost=0.29..760.30 rows=10001 width=4) (actual time=0.009..4.040 rows=10001 loops=1)
+        Output: a
+        Heap Fetches: 10001
+        Buffers: shared hit=165
+
+=======
+### TEXT-short       ###### Plan 25: PlainAggregate
+Aggregate  (cost=288.01..288.02 rows=1 width=4) (actual time=3.202..3.202 rows=1 loops=1)
+  Output: sum(a)
+  Buffers: shared hit=163
+  ->  Seq Scan on public.tt1  (cost=0.00..263.01 rows=10001 width=4) (actual time=0.100..1.414 rows=10001 loops=1)
+        Output: a, b, c
+        Buffers: shared hit=163
+
+=======
+### TEXT-short       ###### Plan 26: BitmapIndexScan/BitmapHeapScan, BitmapOr
+Bitmap Heap Scan on public.tt3  (cost=208.40..1006.81 rows=9961 width=12) (actual time=1.385..3.464 rows=10003 loops=1)
+  Output: a, b, c
+  Recheck Cond: ((tt3.a = 5000) OR (tt3.b = 50))
+  Buffers: shared hit=97
+  ->  BitmapOr  (cost=208.40..208.40 rows=9961 width=0) (actual time=1.373..1.373 rows=0 loops=1)
+        Buffers: shared hit=40
+        ->  Bitmap Index Scan using i_tt3_a  (cost=0.00..198.99 rows=9960 width=0) (actual time=1.366..1.366 rows=10003 loops=1)
+              Index Cond: (tt3.a = 5000)
+              Buffers: shared hit=37
+        ->  Bitmap Index Scan using i_tt3_b  (cost=0.00..4.43 rows=1 width=0) (actual time=0.006..0.006 rows=1 loops=1)
+              Index Cond: (tt3.b = 50)
+              Buffers: shared hit=3
+
+=======
+### TEXT-short       ###### Plan 27: TidScan
+Tid Scan on public.tt3  (cost=0.00..4.01 rows=1 width=12) (actual time=0.004..0.004 rows=1 loops=1)
+  Output: a, b, c
+  Tid Cond: (tt3.ctid = '(0,28)'::tid)
+  Buffers: shared hit=1
+
+=======
+### TEXT-short       ###### Plan 28: LockRows
+LockRows  (cost=0.00..313.51 rows=50 width=10) (actual time=0.109..4.240 rows=1001 loops=1)
+  Output: a, ctid
+  Buffers: shared hit=1164
+  ->  Seq Scan on public.tt1  (cost=0.00..313.01 rows=50 width=10) (actual time=0.099..3.106 rows=1001 loops=1)
+        Output: a, ctid
+        Filter: ((tt1.a % 10) = 0)
+        Rows Removed by Filter: 9000
+        Buffers: shared hit=163
+
+=======
+### TEXT-short       ###### Plan 29: Materialize
+Seq Scan on public.tt1  (cost=0.00..1150490.52 rows=5000 width=12) (actual time=4.788..4.788 rows=0 loops=1)
+  Output: tt1.a, tt1.b, tt1.c
+  Filter: (SubPlan 1)
+  Rows Removed by Filter: 10001
+  Buffers: shared hit=164
+  SubPlan 1
+    ->  Materialize  (cost=0.00..205.01 rows=10001 width=4) (actual time=0.000..0.000 rows=1 loops=10001)
+          Output: tt2.b
+          Buffers: shared hit=1
+        ->  Seq Scan on public.tt2  (cost=0.00..155.01 rows=10001 width=4) (actual time=0.007..0.007 rows=1 loops=1)
+              Output: tt2.b
+              Buffers: shared hit=1
 ###### long-json-as-a-source test
 SELECT '### '||'yaml-long JSON   '||title||E'\n'||
   pg_store_plans_yamlplan(lplan)
   FROM plans WHERE id = 1 ORDER BY id;
+### yaml-long JSON   ###### Plan 1: Insert, Trigger
+- Plan:
+    Node Type: "ModifyTable"
+    Operation: "Insert"
+    Relation Name: "tt1"
+    Schema: "public"
+    Alias: "tt1"
+    Startup Cost: 0.00
+    Total Cost: 10.00
+    Plan Rows: 1000
+    Plan Width: 4
+    Actual Startup Time: 256.149
+    Actual Total Time: 256.149
+    Actual Rows: 0
+    Actual Loops: 1
+    Shared Hit Blocks: 29735
+    Shared Read Blocks: 87
+    Shared Dirtied Blocks: 85
+    Shared Written Blocks: 0
+    Local Hit Blocks: 0
+    Local Read Blocks: 0
+    Local Dirtied Blocks: 0
+    Local Written Blocks: 0
+    Temp Read Blocks: 0
+    Temp Written Blocks: 0
+    I/O Read Time: 0.000
+    I/O Write Time: 0.000
+    Plans:
+      - Node Type: "Function Scan"
+        Parent Relationship: "Member"
+        Function Name: "generate_series"
+        Schema: "pg_catalog"
+        Alias: "a"
+        Startup Cost: 0.00
+        Total Cost: 10.00
+        Plan Rows: 1000
+        Plan Width: 4
+        Actual Startup Time: 3.459
+        Actual Total Time: 9.184
+        Actual Rows: 10001
+        Actual Loops: 1
+        Output:
+          - "a.a"
+          - "NULL::integer"
+          - "NULL::text"
+        Function Call: "generate_series(0, 10000)"
+        Shared Hit Blocks: 0
+        Shared Read Blocks: 0
+        Shared Dirtied Blocks: 0
+        Shared Written Blocks: 0
+        Local Hit Blocks: 0
+        Local Read Blocks: 0
+        Local Dirtied Blocks: 0
+        Local Written Blocks: 0
+        Temp Read Blocks: 0
+        Temp Written Blocks: 0
+        I/O Read Time: 0.000
+        I/O Write Time: 0.000
+  Planning Time: 0.072
+  Triggers:
+    - Trigger Name: "tt1_trig_1"
+      Relation: "tt1"
+      Time: 90.331
+      Calls: 10001
+    - Trigger Name: "tt1_trig_2"
+      Relation: "tt1"
+      Time: 81.847
+      Calls: 10001
 ##################
 SELECT '### '||'xml-long JSON    '||title||E'\n'||
   pg_store_plans_xmlplan(lplan)
   FROM plans WHERE id = 1 ORDER BY id;
+### xml-long JSON    ###### Plan 1: Insert, Trigger
+<explain xmlns="http://www.postgresql.org/2009/explain">
+  <Query>
+    <Plan>
+      <Node-Type>ModifyTable</Node-Type>
+      <Operation>Insert</Operation>
+      <Relation-Name>tt1</Relation-Name>
+      <Schema>public</Schema>
+      <Alias>tt1</Alias>
+      <Startup-Cost>0.00</Startup-Cost>
+      <Total-Cost>10.00</Total-Cost>
+      <Plan-Rows>1000</Plan-Rows>
+      <Plan-Width>4</Plan-Width>
+      <Actual-Startup-Time>256.149</Actual-Startup-Time>
+      <Actual-Total-Time>256.149</Actual-Total-Time>
+      <Actual-Rows>0</Actual-Rows>
+      <Actual-Loops>1</Actual-Loops>
+      <Shared-Hit-Blocks>29735</Shared-Hit-Blocks>
+      <Shared-Read-Blocks>87</Shared-Read-Blocks>
+      <Shared-Dirtied-Blocks>85</Shared-Dirtied-Blocks>
+      <Shared-Written-Blocks>0</Shared-Written-Blocks>
+      <Local-Hit-Blocks>0</Local-Hit-Blocks>
+      <Local-Read-Blocks>0</Local-Read-Blocks>
+      <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+      <Local-Written-Blocks>0</Local-Written-Blocks>
+      <Temp-Read-Blocks>0</Temp-Read-Blocks>
+      <Temp-Written-Blocks>0</Temp-Written-Blocks>
+      <I/O-Read-Time>0.000</I/O-Read-Time>
+      <I/O-Write-Time>0.000</I/O-Write-Time>
+      <Plans>
+        <Item>
+          <Node-Type>Function Scan</Node-Type>
+          <Parent-Relationship>Member</Parent-Relationship>
+          <Function-Name>generate_series</Function-Name>
+          <Schema>pg_catalog</Schema>
+          <Alias>a</Alias>
+          <Startup-Cost>0.00</Startup-Cost>
+          <Total-Cost>10.00</Total-Cost>
+          <Plan-Rows>1000</Plan-Rows>
+          <Plan-Width>4</Plan-Width>
+          <Actual-Startup-Time>3.459</Actual-Startup-Time>
+          <Actual-Total-Time>9.184</Actual-Total-Time>
+          <Actual-Rows>10001</Actual-Rows>
+          <Actual-Loops>1</Actual-Loops>
+          <Output>
+            <Item>a.a</Item>
+            <Item>NULL::integer</Item>
+            <Item>NULL::text</Item>
+          </Output>
+          <Function-Call>generate_series(0, 10000)</Function-Call>
+          <Shared-Hit-Blocks>0</Shared-Hit-Blocks>
+          <Shared-Read-Blocks>0</Shared-Read-Blocks>
+          <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+          <Shared-Written-Blocks>0</Shared-Written-Blocks>
+          <Local-Hit-Blocks>0</Local-Hit-Blocks>
+          <Local-Read-Blocks>0</Local-Read-Blocks>
+          <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+          <Local-Written-Blocks>0</Local-Written-Blocks>
+          <Temp-Read-Blocks>0</Temp-Read-Blocks>
+          <Temp-Written-Blocks>0</Temp-Written-Blocks>
+          <I/O-Read-Time>0.000</I/O-Read-Time>
+          <I/O-Write-Time>0.000</I/O-Write-Time>
+        </Item>
+      </Plans>
+    </Plan>
+    <Planning-Time>0.072</Planning-Time>
+    <Triggers>
+      <Item>
+        <Trigger-Name>tt1_trig_1</Trigger-Name>
+        <Relation>tt1</Relation>
+        <Time>90.331</Time>
+        <Calls>10001</Calls>
+      </Item>
+      <Item>
+        <Trigger-Name>tt1_trig_2</Trigger-Name>
+        <Relation>tt1</Relation>
+        <Time>81.847</Time>
+        <Calls>10001</Calls>
+      </Item>
+    </Triggers>
+  </Query>
+</explain>
+
 ##################
 SELECT '### '||'text-long JSON   '||title||E'\n'||
   pg_store_plans_xmlplan(lplan)
   FROM plans WHERE id = 1 ORDER BY id;
+### text-long JSON   ###### Plan 1: Insert, Trigger
+<explain xmlns="http://www.postgresql.org/2009/explain">
+  <Query>
+    <Plan>
+      <Node-Type>ModifyTable</Node-Type>
+      <Operation>Insert</Operation>
+      <Relation-Name>tt1</Relation-Name>
+      <Schema>public</Schema>
+      <Alias>tt1</Alias>
+      <Startup-Cost>0.00</Startup-Cost>
+      <Total-Cost>10.00</Total-Cost>
+      <Plan-Rows>1000</Plan-Rows>
+      <Plan-Width>4</Plan-Width>
+      <Actual-Startup-Time>256.149</Actual-Startup-Time>
+      <Actual-Total-Time>256.149</Actual-Total-Time>
+      <Actual-Rows>0</Actual-Rows>
+      <Actual-Loops>1</Actual-Loops>
+      <Shared-Hit-Blocks>29735</Shared-Hit-Blocks>
+      <Shared-Read-Blocks>87</Shared-Read-Blocks>
+      <Shared-Dirtied-Blocks>85</Shared-Dirtied-Blocks>
+      <Shared-Written-Blocks>0</Shared-Written-Blocks>
+      <Local-Hit-Blocks>0</Local-Hit-Blocks>
+      <Local-Read-Blocks>0</Local-Read-Blocks>
+      <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+      <Local-Written-Blocks>0</Local-Written-Blocks>
+      <Temp-Read-Blocks>0</Temp-Read-Blocks>
+      <Temp-Written-Blocks>0</Temp-Written-Blocks>
+      <I/O-Read-Time>0.000</I/O-Read-Time>
+      <I/O-Write-Time>0.000</I/O-Write-Time>
+      <Plans>
+        <Item>
+          <Node-Type>Function Scan</Node-Type>
+          <Parent-Relationship>Member</Parent-Relationship>
+          <Function-Name>generate_series</Function-Name>
+          <Schema>pg_catalog</Schema>
+          <Alias>a</Alias>
+          <Startup-Cost>0.00</Startup-Cost>
+          <Total-Cost>10.00</Total-Cost>
+          <Plan-Rows>1000</Plan-Rows>
+          <Plan-Width>4</Plan-Width>
+          <Actual-Startup-Time>3.459</Actual-Startup-Time>
+          <Actual-Total-Time>9.184</Actual-Total-Time>
+          <Actual-Rows>10001</Actual-Rows>
+          <Actual-Loops>1</Actual-Loops>
+          <Output>
+            <Item>a.a</Item>
+            <Item>NULL::integer</Item>
+            <Item>NULL::text</Item>
+          </Output>
+          <Function-Call>generate_series(0, 10000)</Function-Call>
+          <Shared-Hit-Blocks>0</Shared-Hit-Blocks>
+          <Shared-Read-Blocks>0</Shared-Read-Blocks>
+          <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+          <Shared-Written-Blocks>0</Shared-Written-Blocks>
+          <Local-Hit-Blocks>0</Local-Hit-Blocks>
+          <Local-Read-Blocks>0</Local-Read-Blocks>
+          <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+          <Local-Written-Blocks>0</Local-Written-Blocks>
+          <Temp-Read-Blocks>0</Temp-Read-Blocks>
+          <Temp-Written-Blocks>0</Temp-Written-Blocks>
+          <I/O-Read-Time>0.000</I/O-Read-Time>
+          <I/O-Write-Time>0.000</I/O-Write-Time>
+        </Item>
+      </Plans>
+    </Plan>
+    <Planning-Time>0.072</Planning-Time>
+    <Triggers>
+      <Item>
+        <Trigger-Name>tt1_trig_1</Trigger-Name>
+        <Relation>tt1</Relation>
+        <Time>90.331</Time>
+        <Calls>10001</Calls>
+      </Item>
+      <Item>
+        <Trigger-Name>tt1_trig_2</Trigger-Name>
+        <Relation>tt1</Relation>
+        <Time>81.847</Time>
+        <Calls>10001</Calls>
+      </Item>
+    </Triggers>
+  </Query>
+</explain>
+
 ###### chopped-source test
 SELECT '### '||'inflate-chopped  '||title||E'\n'||
   pg_store_plans_jsonplan(substring(splan from 1 for char_length(splan) / 3))
   FROM plans WHERE id BETWEEN 16 AND 18 ORDER BY id;
+### inflate-chopped  ###### Plan 16: HashSetOp intersect All, SubqueryScan
+{
+  "Plan": {
+    "Node Type": "Sort",
+    "Startup Cost": 1332.50,
+    "Total Cost": 1357.51,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 19.395,
+    "Actual Total Time": 19.395,
+    "Actual Rows": 0,
+    "Actual Loops": 1,
+    "Output": ["\"*SELECT* 1\".a", "(0)"],
+    "Sort Key": ["\"*SELECT* 1\".a"],
+    "Sort Method": "quicksort",
+    "Sort Space Used": 25,
+    "Sort Space Type": "Memory",
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "SetOp",
+        "Strategy": "Hashed",
+        "Parent Relationship": "Outer",
+        "Command": "Intersect All",
+        "Startup Cost": 0.00,
+        "Total Cost": 668.04,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 19.391,
+        "Actual Total Time": 19.391,
+        "Actual Rows": 0,
+        "Actual Loops": 1,
+        "Output": ["\"*SELECT* 1\".a", "(0)"],
+        "Shared Hit Blocks": 218,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Append",
+            "Parent Relationship": "Outer",
+            "Startup Cost": 0.00,
+            "Total Cost": 618.04,
+            "Plan Rows": 20002
+<truncated>
+
+=======
+### inflate-chopped  ###### Plan 17: HashSetOp except, SubqueryScan
+{
+  "Plan": {
+    "Node Type": "Sort",
+    "Startup Cost": 1332.50,
+    "Total Cost": 1357.51,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 24.361,
+    "Actual Total Time": 25.158,
+    "Actual Rows": 10001,
+    "Actual Loops": 1,
+    "Output": ["\"*SELECT* 1\".a", "(0)"],
+    "Sort Key": ["\"*SELECT* 1\".a"],
+    "Sort Method": "quicksort",
+    "Sort Space Used": 855,
+    "Sort Space Type": "Memory",
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "SetOp",
+        "Strategy": "Hashed",
+        "Parent Relationship": "Outer",
+        "Command": "Except",
+        "Startup Cost": 0.00,
+        "Total Cost": 668.04,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 18.923,
+        "Actual Total Time": 19.997,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["\"*SELECT* 1\".a", "(0)"],
+        "Shared Hit Blocks": 218,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Append",
+            "Parent Relationship": "Outer",
+            "Startup Cost": 0.00,
+            "Total Cost": 618.04,
+            "Plan Rows": 2
+<truncated>
+
+=======
+### inflate-chopped  ###### Plan 18: HashSetOp except all, SubqueryScan
+{
+  "Plan": {
+    "Node Type": "Sort",
+    "Startup Cost": 1332.50,
+    "Total Cost": 1357.51,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 23.742,
+    "Actual Total Time": 24.542,
+    "Actual Rows": 10001,
+    "Actual Loops": 1,
+    "Output": ["\"*SELECT* 1\".a", "(0)"],
+    "Sort Key": ["\"*SELECT* 1\".a"],
+    "Sort Method": "quicksort",
+    "Sort Space Used": 855,
+    "Sort Space Type": "Memory",
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "SetOp",
+        "Strategy": "Hashed",
+        "Parent Relationship": "Outer",
+        "Command": "Except All",
+        "Startup Cost": 0.00,
+        "Total Cost": 668.04,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 18.525,
+        "Actual Total Time": 19.612,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["\"*SELECT* 1\".a", "(0)"],
+        "Shared Hit Blocks": 218,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Append",
+            "Parent Relationship": "Outer",
+            "Startup Cost": 0.00,
+            "Total Cost": 618.04,
+            "Plan Rows": 2
+<truncated>
 ##################
 SELECT '### '||'yaml-chopped     '||title||E'\n'||
   pg_store_plans_yamlplan(substring(splan from 1 for char_length(splan) / 3))
   FROM plans WHERE id BETWEEN 19 AND 21 ORDER BY id;
+### yaml-chopped     ###### Plan 19: merge LEFT join
+- Plan:
+    Node Type: "Merge Join"
+    Join Type: "Left"
+    Startup Cost: 0.58
+    Total Cost: 2434.81
+    Plan Rows: 15224
+    Plan Width: 4
+    Actual Startup Time: 0.028
+    Actual Total Time: 37.655
+    Actual Rows: 30003
+    Actual Loops: 1
+    Output:
+      - "x.b"
+    Merge Cond: "(x.a = y.a)"
+    Shared Hit Blocks: 20418
+    Shared Read Blocks: 0
+    Shared Dirtied Blocks: 0
+    Shared Written Blocks: 0
+    Local Hit Blocks: 0
+    Local Read Blocks: 0
+    Local Dirtied Blocks: 0
+    Local Written Blocks: 0
+    Temp Read Blocks: 0
+    Temp Written Blocks: 0
+    I/O Read Time: 0.000
+    I/O Write Time: 0.000
+    Plans:
+      - Node Type: "Index Scan"
+        Parent Relationship: "Outer"
+        Scan Direction: "Forward"
+<truncated>
+
+=======
+### yaml-chopped     ###### Plan 20: hash FULL join
+- Plan:
+    Node Type: "Hash Join"
+    Join Type: "Full"
+    Startup Cost: 280.02
+    Total Cost: 793.06
+    Plan Rows: 10001
+    Plan Width: 4
+    Actual Startup Time: 5.372
+    Actual Total Time: 12.828
+    Actual Rows: 17001
+    Actual Loops: 1
+    Output:
+      - "x.b"
+    Hash Cond: "(x.a = y.a)"
+    Shared Hit Blocks: 218
+    Shared Read Blocks: 0
+    Shared Dirtied Blocks: 0
+    Shared Written Blocks: 0
+    Local Hit Blocks: 0
+    Local Read Blocks: 0
+    Local Dirtied Blocks: 0
+    Local Written Blocks: 0
+    Temp Read Blocks: 0
+    Temp Written Blocks: 0
+    I/O Read Time: 0.000
+    I/O Write Time: 0.000
+    Plans:
+      - Node Type: "Seq Scan"
+        Parent Relationship: "Outer"
+        Relation Name: "tt1"
+        Schema: "public"
+        Alias: "x"
+        Startup Cost: 0.00
+        Total Cost: 263.01
+        Plan Rows: 10001
+        Plan Width: 8
+        
+<truncated>
+
+=======
+### yaml-chopped     ###### Plan 21: hash SEMI join
+- Plan:
+    Node Type: "Hash Join"
+    Join Type: "Semi"
+    Startup Cost: 280.02
+    Total Cost: 793.06
+    Plan Rows: 10001
+    Plan Width: 12
+    Actual Startup Time: 10.091
+    Actual Total Time: 10.091
+    Actual Rows: 0
+    Actual Loops: 1
+    Output:
+      - "tt1.a"
+      - "tt1.b"
+      - "tt1.c"
+    Hash Cond: "(tt1.a = tt2.b)"
+    Shared Hit Blocks: 218
+    Shared Read Blocks: 0
+    Shared Dirtied Blocks: 0
+    Shared Written Blocks: 0
+    Local Hit Blocks: 0
+    Local Read Blocks: 0
+    Local Dirtied Blocks: 0
+    Local Written Blocks: 0
+    Temp Read Blocks: 0
+    Temp Written Blocks: 0
+    I/O Read Time: 0.000
+    I/O Write Time: 0.000
+    Plans:
+      - Node Type: "Seq Scan"
+        Parent Relationship: "Outer"
+        Relation Name: "tt1"
+        Schema: "public"
+        Alias: "tt1"
+        Startup Cost: 0.00
+        Total Cost: 263.01
+        Plan Rows: 10001
+<truncated>
 ##################
 SELECT '### '||'xml-chopped      '||title||E'\n'||
   pg_store_plans_xmlplan(substring(splan from 1 for char_length(splan) / 3))
   FROM plans WHERE id BETWEEN 22 AND 24 ORDER BY id;
+### xml-chopped      ###### Plan 22: Hash Anti Join
+<explain xmlns="http://www.postgresql.org/2009/explain">
+  <Query>
+    <Plan>
+      <Node-Type>Hash Join</Node-Type>
+      <Join-Type>Anti</Join-Type>
+      <Startup-Cost>280.02</Startup-Cost>
+      <Total-Cost>693.05</Total-Cost>
+      <Plan-Rows>1</Plan-Rows>
+      <Plan-Width>12</Plan-Width>
+      <Actual-Startup-Time>5.480</Actual-Startup-Time>
+      <Actual-Total-Time>11.691</Actual-Total-Time>
+      <Actual-Rows>10001</Actual-Rows>
+      <Actual-Loops>1</Actual-Loops>
+      <Output>
+        <Item>tt1.a</Item>
+        <Item>tt1.b</Item>
+        <Item>tt1.c</Item>
+      </Output>
+      <Hash-Cond>(tt1.a = tt2.b)</Hash-Cond>
+      <Shared-Hit-Blocks>218</Shared-Hit-Blocks>
+      <Shared-Read-Blocks>0</Shared-Read-Blocks>
+      <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+      <Shared-Written-Blocks>0</Shared-Written-Blocks>
+      <Local-Hit-Blocks>0</Local-Hit-Blocks>
+      <Local-Read-Blocks>0</Local-Read-Blocks>
+      <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+      <Local-Written-Blocks>0</Local-Written-Blocks>
+      <Temp-Read-Blocks>0</Temp-Read-Blocks>
+      <Temp-Written-Blocks>0</Temp-Written-Blocks>
+      <I/O-Read-Time>0.000</I/O-Read-Time>
+      <I/O-Write-Time>0.000</I/O-Write-Time>
+      <Plans>
+        <Plan>
+          <Node-Type>Seq Scan</Node-Type>
+          <Parent-Relationship>Outer</Parent-Relationship>
+          <Relation-Name>tt1</Relation-Name>
+          <Schema>public</Schema>
+          <Alias>tt1</Alias>
+          <Startup-Cost>0.00</Startup-Cost>
+          <Total-Cost>263.01</Total-Cost>
+          <Plan-Rows>10001</Plan-Rows>
+<truncated>
+
+=======
+### xml-chopped      ###### Plan 23: WindowAgg
+<explain xmlns="http://www.postgresql.org/2009/explain">
+  <Query>
+    <Plan>
+      <Node-Type>WindowAgg</Node-Type>
+      <Startup-Cost>927.47</Startup-Cost>
+      <Total-Cost>1127.49</Total-Cost>
+      <Plan-Rows>10001</Plan-Rows>
+      <Plan-Width>4</Plan-Width>
+      <Actual-Startup-Time>5.598</Actual-Startup-Time>
+      <Actual-Total-Time>16.880</Actual-Total-Time>
+      <Actual-Rows>10001</Actual-Rows>
+      <Actual-Loops>1</Actual-Loops>
+      <Output>
+        <Item>first_value(a) OVER (?)</Item>
+        <Item>((a / 10))</Item>
+      </Output>
+      <Shared-Hit-Blocks>163</Shared-Hit-Blocks>
+      <Shared-Read-Blocks>0</Shared-Read-Blocks>
+      <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+      <Shared-Written-Blocks>0</Shared-Written-Blocks>
+      <Local-Hit-Blocks>0</Local-Hit-Blocks>
+      <Local-Read-Blocks>0</Local-Read-Blocks>
+      <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+      <Local-Written-Blocks>0</Local-Written-Blocks>
+      <Temp-Read-Blocks>0</Temp-Read-Blocks>
+      <Temp-Written-Blocks>0</Temp-Written-Blocks>
+      <I/O-Read-Time>0.000</I/O-Read-Time>
+      <I/O-Write-Time>0.000</I/O-Write-Time>
+      <Plans>
+        <Plan>
+          <Node-Type>Sort</Node-Type>
+          <Parent-Relationship>Outer</Parent-Relationship>
+          <Startup-Cost>
+<truncated>
+
+=======
+### xml-chopped      ###### Plan 24: Unique
+<explain xmlns="http://www.postgresql.org/2009/explain">
+  <Query>
+    <Plan>
+      <Node-Type>Unique</Node-Type>
+      <Startup-Cost>0.29</Startup-Cost>
+      <Total-Cost>785.30</Total-Cost>
+      <Plan-Rows>10001</Plan-Rows>
+      <Plan-Width>4</Plan-Width>
+      <Actual-Startup-Time>0.010</Actual-Startup-Time>
+      <Actual-Total-Time>7.552</Actual-Total-Time>
+      <Actual-Rows>10001</Actual-Rows>
+      <Actual-Loops>1</Actual-Loops>
+      <Output>
+        <Item>a</Item>
+      </Output>
+      <Shared-Hit-Blocks>165</Shared-Hit-Blocks>
+      <Shared-Read-Blocks>0</Shared-Read-Blocks>
+      <Shared-Dirtied-Blocks>0</Shared-Dirtied-Blocks>
+      <Shared-Written-Blocks>0</Shared-Written-Blocks>
+      <Local-Hit-Blocks>0</Local-Hit-Blocks>
+      <Local-Read-Blocks>0</Local-Read-Blocks>
+      <Local-Dirtied-Blocks>0</Local-Dirtied-Blocks>
+      <Local-Written-Blocks>0</Local-Written-Blocks>
+      <Temp-Read-Blocks>0</Temp-Read-Blocks>
+<truncated>
 ##################
 SELECT '### '||'text-chopped     '||title||E'\n'||
   pg_store_plans_textplan(substring(splan from 1 for char_length(splan) / 3))
   FROM plans WHERE id BETWEEN 25 AND 27 ORDER BY id;
+### text-chopped     ###### Plan 25: PlainAggregate
+Aggregate  (cost=288.01..288.02 rows=1 width=4) (actual time=3.202..3.202 rows=1 loops=1)
+  Output: sum(a)
+  Buffers: shared hit=163
+<truncated>
+
+=======
+### text-chopped     ###### Plan 26: BitmapIndexScan/BitmapHeapScan, BitmapOr
+Bitmap Heap Scan on public.tt3  (cost=208.40..1006.81 rows=9961 width=12) (actual time=1.385..3.464 rows=10003 loops=1)
+  Output: a, b, c
+  Recheck Cond: ((tt3.a = 5000) OR (tt3.b = 50))
+  Buffers: shared hit=97
+<truncated>
+
+=======
+### text-chopped     ###### Plan 27: TidScan
+Tid Scan on public.tt3  (cost=0.00..4.01 rows=1 width=12)
+<truncated>
 ###### shorten test
 SELECT '### '||'shorten          '||title||E'\n'||
   pg_store_plans_shorten(lplan)
@@ -69,3 +1818,13 @@ SELECT '### '||'shorten          '||title||E'\n'||
 SELECT '### '||'normalize        '||title||E'\n'||
   pg_store_plans_normalize(lplan)
   FROM plans WHERE id BETWEEN 1 AND 3 ORDER BY id;
+### normalize        ###### Plan 1: Insert, Trigger
+{"p":{"t":"b","!":"i","n":"tt1","s":"public","a":"tt1","l":[{"t":"o","h":"m","f":"generate_series","s":"pg_catalog","a":"a","o":["a.a","?::INTEGER","?::TEXT"]}]},"r":[{"v":"tt1_trig_1","w":"tt1"}{"v":"tt1_trig_2","w":"tt1"}]}
+
+=======
+### normalize        ###### Plan 2: Update, Trigger
+{"p":{"t":"b","!":"u","n":"tt1","s":"public","a":"tt1","l":[{"t":"h","h":"m","n":"tt1","s":"public","a":"tt1","o":["(a + ?)","b","c","ctid"]}]},"r":[{"v":"tt1_trig_1","w":"tt1"}{"v":"tt1_trig_2","w":"tt1"}]}
+
+=======
+### normalize        ###### Plan 3: Delete
+{"p":{"t":"b","!":"d","n":"tt1","s":"public","a":"tt1","l":[{"t":"h","h":"m","n":"tt1","s":"public","a":"tt1","o":["ctid"],"5":"((tt1.a % ?) = ?)"}]},"r":[]}
index 720b208..cda407f 100644 (file)
@@ -129,6 +129,3299 @@ INSERT INTO plans (VALUES
   "Rows Removed by Index Recheck": 0,
   "Time": 0,
   "Calls": 0
+}'),
+(1, '###### Plan 1: Insert, Trigger',
+ '{
+  "Plan": {
+    "Node Type": "ModifyTable",
+    "Operation": "Insert",
+    "Relation Name": "tt1",
+    "Schema": "public",
+    "Alias": "tt1",
+    "Startup Cost": 0.00,
+    "Total Cost": 10.00,
+    "Plan Rows": 1000,
+    "Plan Width": 4,
+    "Actual Startup Time": 256.149,
+    "Actual Total Time": 256.149,
+    "Actual Rows": 0,
+    "Actual Loops": 1,
+    "Shared Hit Blocks": 29735,
+    "Shared Read Blocks": 87,
+    "Shared Dirtied Blocks": 85,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Function Scan",
+        "Parent Relationship": "Member",
+        "Function Name": "generate_series",
+        "Schema": "pg_catalog",
+        "Alias": "a",
+        "Startup Cost": 0.00,
+        "Total Cost": 10.00,
+        "Plan Rows": 1000,
+        "Plan Width": 4,
+        "Actual Startup Time": 3.459,
+        "Actual Total Time": 9.184,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["a.a", "NULL::integer", "NULL::text"],
+        "Function Call": "generate_series(0, 10000)",
+        "Shared Hit Blocks": 0,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      }
+    ]
+  },
+  "Planning Time": 0.072,
+  "Triggers": [
+    {
+      "Trigger Name": "tt1_trig_1",
+      "Relation": "tt1",
+      "Time": 90.331,
+      "Calls": 10001
+    },
+    {
+      "Trigger Name": "tt1_trig_2",
+      "Relation": "tt1",
+      "Time": 81.847,
+      "Calls": 10001
+    }
+  ]
+}'),
+(2, '###### Plan 2: Update, Trigger',
+ '{
+  "Plan": {
+    "Node Type": "ModifyTable",
+    "Operation": "Update",
+    "Relation Name": "tt1",
+    "Schema": "public",
+    "Alias": "tt1",
+    "Startup Cost": 0.00,
+    "Total Cost": 134.75,
+    "Plan Rows": 6380,
+    "Plan Width": 46,
+    "Actual Startup Time": 313.811,
+    "Actual Total Time": 313.811,
+    "Actual Rows": 0,
+    "Actual Loops": 1,
+    "Shared Hit Blocks": 50276,
+    "Shared Read Blocks": 108,
+    "Shared Dirtied Blocks": 108,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Seq Scan",
+        "Parent Relationship": "Member",
+        "Relation Name": "tt1",
+        "Schema": "public",
+        "Alias": "tt1",
+        "Startup Cost": 0.00,
+        "Total Cost": 134.75,
+        "Plan Rows": 6380,
+        "Plan Width": 46,
+        "Actual Startup Time": 0.040,
+        "Actual Total Time": 10.405,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["(a + 1)", "b", "c", "ctid"],
+        "Shared Hit Blocks": 55,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      }
+    ]
+  },
+  "Planning Time": 30.245,
+  "Triggers": [
+    {
+      "Trigger Name": "tt1_trig_1",
+      "Relation": "tt1",
+      "Time": 96.546,
+      "Calls": 10001
+    },
+    {
+      "Trigger Name": "tt1_trig_2",
+      "Relation": "tt1",
+      "Time": 83.609,
+      "Calls": 10001
+    }
+  ]
+}'),
+(3, '###### Plan 3: Delete',
+ '{
+  "Plan": {
+    "Node Type": "ModifyTable",
+    "Operation": "Delete",
+    "Relation Name": "tt1",
+    "Schema": "public",
+    "Alias": "tt1",
+    "Startup Cost": 0.00,
+    "Total Cost": 298.66,
+    "Plan Rows": 63,
+    "Plan Width": 6,
+    "Actual Startup Time": 12.324,
+    "Actual Total Time": 12.324,
+    "Actual Rows": 0,
+    "Actual Loops": 1,
+    "Shared Hit Blocks": 1109,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Seq Scan",
+        "Parent Relationship": "Member",
+        "Relation Name": "tt1",
+        "Schema": "public",
+        "Alias": "tt1",
+        "Startup Cost": 0.00,
+        "Total Cost": 298.66,
+        "Plan Rows": 63,
+        "Plan Width": 6,
+        "Actual Startup Time": 3.454,
+        "Actual Total Time": 9.822,
+        "Actual Rows": 1000,
+        "Actual Loops": 1,
+        "Output": ["ctid"],
+        "Filter": "((tt1.a % 10) = 0)",
+        "Rows Removed by Filter": 9001,
+        "Shared Hit Blocks": 109,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      }
+    ]
+  },
+  "Planning Time": 1.091,
+  "Triggers": [
+  ]
+}'),
+(4, '###### Plan 4: Result, Append Seq Scan',
+ '{
+  "Plan": {
+    "Node Type": "Result",
+    "Startup Cost": 0.00,
+    "Total Cost": 418.02,
+    "Plan Rows": 20002,
+    "Plan Width": 8,
+    "Actual Startup Time": 2.455,
+    "Actual Total Time": 17.069,
+    "Actual Rows": 20002,
+    "Actual Loops": 1,
+    "Output": ["((tt1.a + 1))", "(3)", "1"],
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Append",
+        "Parent Relationship": "Outer",
+        "Startup Cost": 0.00,
+        "Total Cost": 418.02,
+        "Plan Rows": 20002,
+        "Plan Width": 8,
+        "Actual Startup Time": 2.454,
+        "Actual Total Time": 11.990,
+        "Actual Rows": 20002,
+        "Actual Loops": 1,
+        "Shared Hit Blocks": 218,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Member",
+            "Relation Name": "tt1",
+            "Schema": "public",
+            "Alias": "tt1",
+            "Startup Cost": 0.00,
+            "Total Cost": 263.01,
+            "Plan Rows": 10001,
+            "Plan Width": 8,
+            "Actual Startup Time": 2.453,
+            "Actual Total Time": 6.480,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["(tt1.a + 1)", "3"],
+            "Shared Hit Blocks": 163,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          },
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Member",
+            "Relation Name": "tt2",
+            "Schema": "public",
+            "Alias": "tt2",
+            "Startup Cost": 0.00,
+            "Total Cost": 155.01,
+            "Plan Rows": 10001,
+            "Plan Width": 8,
+            "Actual Startup Time": 0.007,
+            "Actual Total Time": 2.465,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["tt2.a", "4"],
+            "Shared Hit Blocks": 55,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.437,
+  "Triggers": [
+  ]
+}'),
+(5, '###### Plan 5: Index scan (forward) ANY, array in expr, escape',
+ E'{
+  "Plan": {
+    "Node Type": "Index Scan",
+    "Scan Direction": "Forward",
+    "Index Name": "i_tt1",
+    "Relation Name": "tt1",
+    "Schema": "public",
+    "Alias": "x\\"y",
+    "Startup Cost": 0.29,
+    "Total Cost": 21.21,
+    "Plan Rows": 4,
+    "Plan Width": 12,
+    "Actual Startup Time": 0.005,
+    "Actual Total Time": 0.023,
+    "Actual Rows": 4,
+    "Actual Loops": 1,
+    "Output": ["a", "b", "c"],
+    "Index Cond": "(\\"x\\"\\"y\\".a = ANY (\'{50,120,300,500}\'::integer[]))",
+    "Rows Removed by Index Recheck": 0,
+    "Shared Hit Blocks": 20,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000
+  },
+  "Planning Time": 0.084,
+  "Triggers": [
+  ]
+}'),
+(6, '###### Plan 6: Index scan (backward), MergeJoin, Sort, quichsort, alias',
+ '{
+  "Plan": {
+    "Node Type": "Limit",
+    "Startup Cost": 819.75,
+    "Total Cost": 820.79,
+    "Plan Rows": 10,
+    "Plan Width": 12,
+    "Actual Startup Time": 12.045,
+    "Actual Total Time": 12.045,
+    "Actual Rows": 0,
+    "Actual Loops": 1,
+    "Output": ["x.b", "x.c", "x.a"],
+    "Shared Hit Blocks": 61,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Merge Join",
+        "Parent Relationship": "Outer",
+        "Join Type": "Inner",
+        "Startup Cost": 819.75,
+        "Total Cost": 1854.80,
+        "Plan Rows": 10001,
+        "Plan Width": 12,
+        "Actual Startup Time": 12.043,
+        "Actual Total Time": 12.043,
+        "Actual Rows": 0,
+        "Actual Loops": 1,
+        "Output": ["x.b", "x.c", "x.a"],
+        "Merge Cond": "(x.a = (((- y.b) * 3)))",
+        "Shared Hit Blocks": 61,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Index Scan",
+            "Parent Relationship": "Outer",
+            "Scan Direction": "Backward",
+            "Index Name": "i_tt1",
+            "Relation Name": "tt1",
+            "Schema": "public",
+            "Alias": "x",
+            "Startup Cost": 0.29,
+            "Total Cost": 760.30,
+            "Plan Rows": 10001,
+            "Plan Width": 12,
+            "Actual Startup Time": 0.030,
+            "Actual Total Time": 0.030,
+            "Actual Rows": 1,
+            "Actual Loops": 1,
+            "Output": ["x.a", "x.b", "x.c"],
+            "Shared Hit Blocks": 6,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          },
+          {
+            "Node Type": "Sort",
+            "Parent Relationship": "Inner",
+            "Startup Cost": 819.47,
+            "Total Cost": 844.47,
+            "Plan Rows": 10001,
+            "Plan Width": 4,
+            "Actual Startup Time": 9.539,
+            "Actual Total Time": 10.243,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["y.b", "(((- y.b) * 3))"],
+            "Sort Key": ["(((- y.b) * 3))"],
+            "Sort Method": "quicksort",
+            "Sort Space Used": 855,
+            "Sort Space Type": "Memory",
+            "Shared Hit Blocks": 55,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000,
+            "Plans": [
+              {
+                "Node Type": "Seq Scan",
+                "Parent Relationship": "Outer",
+                "Relation Name": "tt2",
+                "Schema": "public",
+                "Alias": "y",
+                "Startup Cost": 0.00,
+                "Total Cost": 155.01,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.009,
+                "Actual Total Time": 3.954,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["y.b", "((- y.b) * 3)"],
+                "Shared Hit Blocks": 55,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.211,
+  "Triggers": [
+  ]
+}'),
+(7, '###### Plan 7: IndexOnlyScan',
+ '{
+  "Plan": {
+    "Node Type": "Index Only Scan",
+    "Scan Direction": "Forward",
+    "Index Name": "i_tt1",
+    "Relation Name": "tt1",
+    "Schema": "public",
+    "Alias": "tt1",
+    "Startup Cost": 0.29,
+    "Total Cost": 8.46,
+    "Plan Rows": 10,
+    "Plan Width": 4,
+    "Actual Startup Time": 0.015,
+    "Actual Total Time": 0.032,
+    "Actual Rows": 10,
+    "Actual Loops": 1,
+    "Output": ["a"],
+    "Index Cond": "(tt1.a < 10)",
+    "Rows Removed by Index Recheck": 0,
+    "Heap Fetches": 29,
+    "Shared Hit Blocks": 31,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000
+  },
+  "Planning Time": 0.065,
+  "Triggers": [
+  ]
+}'),
+(8, '###### Plan 8: Plain Aggregate, CTE, Recursive Union, WorkTable Scan, CTE Scan',
+ '{
+  "Plan": {
+    "Node Type": "Aggregate",
+    "Strategy": "Plain",
+    "Startup Cost": 3.65,
+    "Total Cost": 3.66,
+    "Plan Rows": 1,
+    "Plan Width": 4,
+    "Actual Startup Time": 0.034,
+    "Actual Total Time": 0.034,
+    "Actual Rows": 1,
+    "Actual Loops": 1,
+    "Output": ["sum(cte1.a)"],
+    "Shared Hit Blocks": 0,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Recursive Union",
+        "Parent Relationship": "InitPlan",
+        "Subplan Name": "CTE cte1",
+        "Startup Cost": 0.00,
+        "Total Cost": 2.95,
+        "Plan Rows": 31,
+        "Plan Width": 4,
+        "Actual Startup Time": 0.001,
+        "Actual Total Time": 0.023,
+        "Actual Rows": 10,
+        "Actual Loops": 1,
+        "Shared Hit Blocks": 0,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Result",
+            "Parent Relationship": "Outer",
+            "Startup Cost": 0.00,
+            "Total Cost": 0.01,
+            "Plan Rows": 1,
+            "Plan Width": 0,
+            "Actual Startup Time": 0.001,
+            "Actual Total Time": 0.001,
+            "Actual Rows": 1,
+            "Actual Loops": 1,
+            "Output": ["1"],
+            "Shared Hit Blocks": 0,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          },
+          {
+            "Node Type": "WorkTable Scan",
+            "Parent Relationship": "Inner",
+            "CTE Name": "cte1",
+            "Alias": "cte1_1",
+            "Startup Cost": 0.00,
+            "Total Cost": 0.23,
+            "Plan Rows": 3,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.001,
+            "Actual Total Time": 0.001,
+            "Actual Rows": 1,
+            "Actual Loops": 10,
+            "Output": ["(cte1_1.a + 1)"],
+            "Filter": "(cte1_1.a < 10)",
+            "Rows Removed by Filter": 0,
+            "Shared Hit Blocks": 0,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      },
+      {
+        "Node Type": "CTE Scan",
+        "Parent Relationship": "Outer",
+        "CTE Name": "cte1",
+        "Alias": "cte1",
+        "Startup Cost": 0.00,
+        "Total Cost": 0.62,
+        "Plan Rows": 31,
+        "Plan Width": 4,
+        "Actual Startup Time": 0.003,
+        "Actual Total Time": 0.028,
+        "Actual Rows": 10,
+        "Actual Loops": 1,
+        "Output": ["cte1.a"],
+        "Shared Hit Blocks": 0,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      }
+    ]
+  },
+  "Planning Time": 0.083,
+  "Triggers": [
+  ]
+}'),
+(9, '###### Plan 9: FunctionScan, Hash/HashJoin, Nested Loop',
+ '{
+  "Plan": {
+    "Node Type": "Nested Loop",
+    "Join Type": "Inner",
+    "Startup Cost": 1.15,
+    "Total Cost": 2.69,
+    "Plan Rows": 1,
+    "Plan Width": 64,
+    "Actual Startup Time": 0.048,
+    "Actual Total Time": 0.050,
+    "Actual Rows": 1,
+    "Actual Loops": 1,
+    "Output": ["d.datname"],
+    "Shared Hit Blocks": 3,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Hash Join",
+        "Parent Relationship": "Outer",
+        "Join Type": "Inner",
+        "Startup Cost": 1.02,
+        "Total Cost": 2.41,
+        "Plan Rows": 1,
+        "Plan Width": 4,
+        "Actual Startup Time": 0.041,
+        "Actual Total Time": 0.042,
+        "Actual Rows": 1,
+        "Actual Loops": 1,
+        "Output": ["s.datid"],
+        "Hash Cond": "(s.usesysid = u.oid)",
+        "Shared Hit Blocks": 1,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Function Scan",
+            "Parent Relationship": "Outer",
+            "Function Name": "pg_stat_get_activity",
+            "Schema": "pg_catalog",
+            "Alias": "s",
+            "Startup Cost": 0.00,
+            "Total Cost": 1.00,
+            "Plan Rows": 100,
+            "Plan Width": 8,
+            "Actual Startup Time": 0.026,
+            "Actual Total Time": 0.026,
+            "Actual Rows": 1,
+            "Actual Loops": 1,
+            "Output": ["s.datid", "s.pid", "s.usesysid", "s.application_name", "s.state", "s.query", "s.waiting", "s.xact_start", "s.query_start", "s.backend_start", "s.state_change", "s.client_addr", "s.client_hostname", "s.client_port", "s.backend_xid", "s.backend_xmin"],
+            "Function Call": "pg_stat_get_activity(NULL::integer)",
+            "Shared Hit Blocks": 0,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          },
+          {
+            "Node Type": "Hash",
+            "Parent Relationship": "Inner",
+            "Startup Cost": 1.01,
+            "Total Cost": 1.01,
+            "Plan Rows": 1,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.006,
+            "Actual Total Time": 0.006,
+            "Actual Rows": 1,
+            "Actual Loops": 1,
+            "Output": ["u.oid"],
+            "Hash Buckets": 1024,
+            "Hash Batches": 1,
+            "Original Hash Batches": 1,
+            "Peak Memory Usage": 1,
+            "Shared Hit Blocks": 1,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000,
+            "Plans": [
+              {
+                "Node Type": "Seq Scan",
+                "Parent Relationship": "Outer",
+                "Relation Name": "pg_authid",
+                "Schema": "pg_catalog",
+                "Alias": "u",
+                "Startup Cost": 0.00,
+                "Total Cost": 1.01,
+                "Plan Rows": 1,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.003,
+                "Actual Total Time": 0.004,
+                "Actual Rows": 1,
+                "Actual Loops": 1,
+                "Output": ["u.oid"],
+                "Shared Hit Blocks": 1,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000
+              }
+            ]
+          }
+        ]
+      },
+      {
+        "Node Type": "Index Scan",
+        "Parent Relationship": "Inner",
+        "Scan Direction": "Forward",
+        "Index Name": "pg_database_oid_index",
+        "Relation Name": "pg_database",
+        "Schema": "pg_catalog",
+        "Alias": "d",
+        "Startup Cost": 0.13,
+        "Total Cost": 0.27,
+        "Plan Rows": 1,
+        "Plan Width": 68,
+        "Actual Startup Time": 0.005,
+        "Actual Total Time": 0.006,
+        "Actual Rows": 1,
+        "Actual Loops": 1,
+        "Output": ["d.datname", "d.oid"],
+        "Index Cond": "(d.oid = s.datid)",
+        "Rows Removed by Index Recheck": 0,
+        "Shared Hit Blocks": 2,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      }
+    ]
+  },
+  "Planning Time": 1.180,
+  "Triggers": [
+  ]
+}'),
+(10, '###### Plan 10: MergeAppend, Values',
+ E'{
+  "Plan": {
+    "Node Type": "Merge Append",
+    "Startup Cost": 0.36,
+    "Total Cost": 985.44,
+    "Plan Rows": 10004,
+    "Plan Width": 4,
+    "Actual Startup Time": 0.021,
+    "Actual Total Time": 21.019,
+    "Actual Rows": 10004,
+    "Actual Loops": 1,
+    "Sort Key": ["tt1.a"],
+    "Shared Hit Blocks": 30069,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Index Only Scan",
+        "Parent Relationship": "Member",
+        "Scan Direction": "Forward",
+        "Index Name": "i_tt1",
+        "Relation Name": "tt1",
+        "Schema": "public",
+        "Alias": "tt1",
+        "Startup Cost": 0.29,
+        "Total Cost": 760.30,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 0.012,
+        "Actual Total Time": 18.927,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["tt1.a"],
+        "Heap Fetches": 29973,
+        "Shared Hit Blocks": 30069,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      },
+      {
+        "Node Type": "Sort",
+        "Parent Relationship": "Member",
+        "Startup Cost": 0.06,
+        "Total Cost": 0.07,
+        "Plan Rows": 3,
+        "Plan Width": 4,
+        "Actual Startup Time": 0.008,
+        "Actual Total Time": 0.009,
+        "Actual Rows": 3,
+        "Actual Loops": 1,
+        "Output": ["\\"*VALUES*\\".column1"],
+        "Sort Key": ["\\"*VALUES*\\".column1"],
+        "Sort Method": "quicksort",
+        "Sort Space Used": 25,
+        "Sort Space Type": "Memory",
+        "Shared Hit Blocks": 0,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Values Scan",
+            "Parent Relationship": "Outer",
+            "Alias": "*VALUES*",
+            "Startup Cost": 0.00,
+            "Total Cost": 0.04,
+            "Plan Rows": 3,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.001,
+            "Actual Total Time": 0.003,
+            "Actual Rows": 3,
+            "Actual Loops": 1,
+            "Output": ["\\"*VALUES*\\".column1"],
+            "Shared Hit Blocks": 0,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.104,
+  "Triggers": [
+  ]
+}'),
+(11, '###### Plan 11: Append, HashAggregate',
+ '{
+  "Plan": {
+    "Node Type": "Aggregate",
+    "Strategy": "Hashed",
+    "Startup Cost": 668.04,
+    "Total Cost": 868.06,
+    "Plan Rows": 20002,
+    "Plan Width": 4,
+    "Actual Startup Time": 13.884,
+    "Actual Total Time": 17.625,
+    "Actual Rows": 20002,
+    "Actual Loops": 1,
+    "Output": ["tt1.a"],
+    "Group Key": ["tt1.a"],
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Append",
+        "Parent Relationship": "Outer",
+        "Startup Cost": 0.00,
+        "Total Cost": 618.04,
+        "Plan Rows": 20002,
+        "Plan Width": 4,
+        "Actual Startup Time": 0.097,
+        "Actual Total Time": 7.241,
+        "Actual Rows": 20002,
+        "Actual Loops": 1,
+        "Shared Hit Blocks": 218,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Member",
+            "Relation Name": "tt1",
+            "Schema": "public",
+            "Alias": "tt1",
+            "Startup Cost": 0.00,
+            "Total Cost": 263.01,
+            "Plan Rows": 10001,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.097,
+            "Actual Total Time": 2.345,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["tt1.a"],
+            "Shared Hit Blocks": 163,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          },
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Member",
+            "Relation Name": "tt2",
+            "Schema": "public",
+            "Alias": "tt2",
+            "Startup Cost": 0.00,
+            "Total Cost": 155.01,
+            "Plan Rows": 10001,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.007,
+            "Actual Total Time": 2.305,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["tt2.b"],
+            "Shared Hit Blocks": 55,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.055,
+  "Triggers": [
+  ]
+}'),
+(12, '###### Plan 12: GroupAggregate',
+ '{
+  "Plan": {
+    "Node Type": "Aggregate",
+    "Strategy": "Sorted",
+    "Startup Cost": 1067.47,
+    "Total Cost": 1242.49,
+    "Plan Rows": 10001,
+    "Plan Width": 8,
+    "Actual Startup Time": 11.028,
+    "Actual Total Time": 20.786,
+    "Actual Rows": 10001,
+    "Actual Loops": 1,
+    "Output": ["sum(a)", "b"],
+    "Group Key": ["tt1.b"],
+    "Shared Hit Blocks": 163,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 33,
+    "Temp Written Blocks": 33,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Sort",
+        "Parent Relationship": "Outer",
+        "Startup Cost": 1067.47,
+        "Total Cost": 1092.47,
+        "Plan Rows": 10001,
+        "Plan Width": 8,
+        "Actual Startup Time": 11.025,
+        "Actual Total Time": 14.516,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["b", "a"],
+        "Sort Key": ["tt1.b"],
+        "Sort Method": "external merge",
+        "Sort Space Used": 168,
+        "Sort Space Type": "Disk",
+        "Shared Hit Blocks": 163,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 33,
+        "Temp Written Blocks": 33,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Outer",
+            "Relation Name": "tt1",
+            "Schema": "public",
+            "Alias": "tt1",
+            "Startup Cost": 0.00,
+            "Total Cost": 263.01,
+            "Plan Rows": 10001,
+            "Plan Width": 8,
+            "Actual Startup Time": 0.099,
+            "Actual Total Time": 2.437,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["b", "a"],
+            "Shared Hit Blocks": 163,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.042,
+  "Triggers": [
+  ]
+}'),
+(13, '###### Plan 13: Group',
+ '{
+  "Plan": {
+    "Node Type": "Group",
+    "Startup Cost": 1067.47,
+    "Total Cost": 1117.47,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 10.215,
+    "Actual Total Time": 17.715,
+    "Actual Rows": 10001,
+    "Actual Loops": 1,
+    "Output": ["b"],
+    "Group Key": ["tt1.b"],
+    "Shared Hit Blocks": 163,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 25,
+    "Temp Written Blocks": 25,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Sort",
+        "Parent Relationship": "Outer",
+        "Startup Cost": 1067.47,
+        "Total Cost": 1092.47,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 10.214,
+        "Actual Total Time": 13.481,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["b"],
+        "Sort Key": ["tt1.b"],
+        "Sort Method": "external merge",
+        "Sort Space Used": 120,
+        "Sort Space Type": "Disk",
+        "Shared Hit Blocks": 163,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 25,
+        "Temp Written Blocks": 25,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Outer",
+            "Relation Name": "tt1",
+            "Schema": "public",
+            "Alias": "tt1",
+            "Startup Cost": 0.00,
+            "Total Cost": 263.01,
+            "Plan Rows": 10001,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.095,
+            "Actual Total Time": 2.275,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["b"],
+            "Shared Hit Blocks": 163,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.032,
+  "Triggers": [
+  ]
+}'),
+(14, '###### Plan 14: SetOp intersect, SbuqueryScan',
+ E'{
+  "Plan": {
+    "Node Type": "Sort",
+    "Startup Cost": 1332.50,
+    "Total Cost": 1357.51,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 17.472,
+    "Actual Total Time": 17.472,
+    "Actual Rows": 0,
+    "Actual Loops": 1,
+    "Output": ["\\"*SELECT* 1\\".a", "(0)"],
+    "Sort Key": ["\\"*SELECT* 1\\".a"],
+    "Sort Method": "quicksort",
+    "Sort Space Used": 25,
+    "Sort Space Type": "Memory",
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "SetOp",
+        "Strategy": "Hashed",
+        "Parent Relationship": "Outer",
+        "Command": "Intersect",
+        "Startup Cost": 0.00,
+        "Total Cost": 668.04,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 17.470,
+        "Actual Total Time": 17.470,
+        "Actual Rows": 0,
+        "Actual Loops": 1,
+        "Output": ["\\"*SELECT* 1\\".a", "(0)"],
+        "Shared Hit Blocks": 218,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Append",
+            "Parent Relationship": "Outer",
+            "Startup Cost": 0.00,
+            "Total Cost": 618.04,
+            "Plan Rows": 20002,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.090,
+            "Actual Total Time": 11.721,
+            "Actual Rows": 20002,
+            "Actual Loops": 1,
+            "Shared Hit Blocks": 218,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000,
+            "Plans": [
+              {
+                "Node Type": "Subquery Scan",
+                "Parent Relationship": "Member",
+                "Alias": "*SELECT* 1",
+                "Startup Cost": 0.00,
+                "Total Cost": 363.02,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.090,
+                "Actual Total Time": 4.551,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["\\"*SELECT* 1\\".a", "0"],
+                "Shared Hit Blocks": 163,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000,
+                "Plans": [
+                  {
+                    "Node Type": "Seq Scan",
+                    "Parent Relationship": "Subquery",
+                    "Relation Name": "tt1",
+                    "Schema": "public",
+                    "Alias": "tt1",
+                    "Startup Cost": 0.00,
+                    "Total Cost": 263.01,
+                    "Plan Rows": 10001,
+                    "Plan Width": 4,
+                    "Actual Startup Time": 0.090,
+                    "Actual Total Time": 2.344,
+                    "Actual Rows": 10001,
+                    "Actual Loops": 1,
+                    "Output": ["tt1.a"],
+                    "Shared Hit Blocks": 163,
+                    "Shared Read Blocks": 0,
+                    "Shared Dirtied Blocks": 0,
+                    "Shared Written Blocks": 0,
+                    "Local Hit Blocks": 0,
+                    "Local Read Blocks": 0,
+                    "Local Dirtied Blocks": 0,
+                    "Local Written Blocks": 0,
+                    "Temp Read Blocks": 0,
+                    "Temp Written Blocks": 0,
+                    "I/O Read Time": 0.000,
+                    "I/O Write Time": 0.000
+                  }
+                ]
+              },
+              {
+                "Node Type": "Subquery Scan",
+                "Parent Relationship": "Member",
+                "Alias": "*SELECT* 2",
+                "Startup Cost": 0.00,
+                "Total Cost": 255.02,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.007,
+                "Actual Total Time": 4.613,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["\\"*SELECT* 2\\".b", "1"],
+                "Shared Hit Blocks": 55,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000,
+                "Plans": [
+                  {
+                    "Node Type": "Seq Scan",
+                    "Parent Relationship": "Subquery",
+                    "Relation Name": "tt2",
+                    "Schema": "public",
+                    "Alias": "tt2",
+                    "Startup Cost": 0.00,
+                    "Total Cost": 155.01,
+                    "Plan Rows": 10001,
+                    "Plan Width": 4,
+                    "Actual Startup Time": 0.007,
+                    "Actual Total Time": 2.342,
+                    "Actual Rows": 10001,
+                    "Actual Loops": 1,
+                    "Output": ["tt2.b"],
+                    "Shared Hit Blocks": 55,
+                    "Shared Read Blocks": 0,
+                    "Shared Dirtied Blocks": 0,
+                    "Shared Written Blocks": 0,
+                    "Local Hit Blocks": 0,
+                    "Local Read Blocks": 0,
+                    "Local Dirtied Blocks": 0,
+                    "Local Written Blocks": 0,
+                    "Temp Read Blocks": 0,
+                    "Temp Written Blocks": 0,
+                    "I/O Read Time": 0.000,
+                    "I/O Write Time": 0.000
+                  }
+                ]
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.061,
+  "Triggers": [
+  ]
+}'),
+(15, '###### Plan 15: Sorted SetOp, Sort on Disk',
+ E'{
+  "Plan": {
+    "Node Type": "SetOp",
+    "Strategy": "Sorted",
+    "Command": "Intersect",
+    "Startup Cost": 2323.47,
+    "Total Cost": 2423.48,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 44.719,
+    "Actual Total Time": 44.719,
+    "Actual Rows": 0,
+    "Actual Loops": 1,
+    "Output": ["\\"*SELECT* 1\\".a", "(0)"],
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 77,
+    "Temp Written Blocks": 77,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Sort",
+        "Parent Relationship": "Outer",
+        "Startup Cost": 2323.47,
+        "Total Cost": 2373.47,
+        "Plan Rows": 20002,
+        "Plan Width": 4,
+        "Actual Startup Time": 32.675,
+        "Actual Total Time": 38.534,
+        "Actual Rows": 20002,
+        "Actual Loops": 1,
+        "Output": ["\\"*SELECT* 1\\".a", "(0)"],
+        "Sort Key": ["\\"*SELECT* 1\\".a"],
+        "Sort Method": "external merge",
+        "Sort Space Used": 352,
+        "Sort Space Type": "Disk",
+        "Shared Hit Blocks": 218,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 77,
+        "Temp Written Blocks": 77,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Append",
+            "Parent Relationship": "Outer",
+            "Startup Cost": 0.00,
+            "Total Cost": 618.04,
+            "Plan Rows": 20002,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.095,
+            "Actual Total Time": 12.658,
+            "Actual Rows": 20002,
+            "Actual Loops": 1,
+            "Shared Hit Blocks": 218,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000,
+            "Plans": [
+              {
+                "Node Type": "Subquery Scan",
+                "Parent Relationship": "Member",
+                "Alias": "*SELECT* 1",
+                "Startup Cost": 0.00,
+                "Total Cost": 363.02,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.095,
+                "Actual Total Time": 5.182,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["\\"*SELECT* 1\\".a", "0"],
+                "Shared Hit Blocks": 163,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000,
+                "Plans": [
+                  {
+                    "Node Type": "Seq Scan",
+                    "Parent Relationship": "Subquery",
+                    "Relation Name": "tt1",
+                    "Schema": "public",
+                    "Alias": "tt1",
+                    "Startup Cost": 0.00,
+                    "Total Cost": 263.01,
+                    "Plan Rows": 10001,
+                    "Plan Width": 4,
+                    "Actual Startup Time": 0.094,
+                    "Actual Total Time": 2.669,
+                    "Actual Rows": 10001,
+                    "Actual Loops": 1,
+                    "Output": ["tt1.a"],
+                    "Shared Hit Blocks": 163,
+                    "Shared Read Blocks": 0,
+                    "Shared Dirtied Blocks": 0,
+                    "Shared Written Blocks": 0,
+                    "Local Hit Blocks": 0,
+                    "Local Read Blocks": 0,
+                    "Local Dirtied Blocks": 0,
+                    "Local Written Blocks": 0,
+                    "Temp Read Blocks": 0,
+                    "Temp Written Blocks": 0,
+                    "I/O Read Time": 0.000,
+                    "I/O Write Time": 0.000
+                  }
+                ]
+              },
+              {
+                "Node Type": "Subquery Scan",
+                "Parent Relationship": "Member",
+                "Alias": "*SELECT* 2",
+                "Startup Cost": 0.00,
+                "Total Cost": 255.02,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.007,
+                "Actual Total Time": 4.686,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["\\"*SELECT* 2\\".b", "1"],
+                "Shared Hit Blocks": 55,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000,
+                "Plans": [
+                  {
+                    "Node Type": "Seq Scan",
+                    "Parent Relationship": "Subquery",
+                    "Relation Name": "tt2",
+                    "Schema": "public",
+                    "Alias": "tt2",
+                    "Startup Cost": 0.00,
+                    "Total Cost": 155.01,
+                    "Plan Rows": 10001,
+                    "Plan Width": 4,
+                    "Actual Startup Time": 0.006,
+                    "Actual Total Time": 2.384,
+                    "Actual Rows": 10001,
+                    "Actual Loops": 1,
+                    "Output": ["tt2.b"],
+                    "Shared Hit Blocks": 55,
+                    "Shared Read Blocks": 0,
+                    "Shared Dirtied Blocks": 0,
+                    "Shared Written Blocks": 0,
+                    "Local Hit Blocks": 0,
+                    "Local Read Blocks": 0,
+                    "Local Dirtied Blocks": 0,
+                    "Local Written Blocks": 0,
+                    "Temp Read Blocks": 0,
+                    "Temp Written Blocks": 0,
+                    "I/O Read Time": 0.000,
+                    "I/O Write Time": 0.000
+                  }
+                ]
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.061,
+  "Triggers": [
+  ]
+}'),
+(16, '###### Plan 16: HashSetOp intersect All, SubqueryScan',
+ E'{
+  "Plan": {
+    "Node Type": "Sort",
+    "Startup Cost": 1332.50,
+    "Total Cost": 1357.51,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 19.395,
+    "Actual Total Time": 19.395,
+    "Actual Rows": 0,
+    "Actual Loops": 1,
+    "Output": ["\\"*SELECT* 1\\".a", "(0)"],
+    "Sort Key": ["\\"*SELECT* 1\\".a"],
+    "Sort Method": "quicksort",
+    "Sort Space Used": 25,
+    "Sort Space Type": "Memory",
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "SetOp",
+        "Strategy": "Hashed",
+        "Parent Relationship": "Outer",
+        "Command": "Intersect All",
+        "Startup Cost": 0.00,
+        "Total Cost": 668.04,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 19.391,
+        "Actual Total Time": 19.391,
+        "Actual Rows": 0,
+        "Actual Loops": 1,
+        "Output": ["\\"*SELECT* 1\\".a", "(0)"],
+        "Shared Hit Blocks": 218,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Append",
+            "Parent Relationship": "Outer",
+            "Startup Cost": 0.00,
+            "Total Cost": 618.04,
+            "Plan Rows": 20002,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.095,
+            "Actual Total Time": 12.956,
+            "Actual Rows": 20002,
+            "Actual Loops": 1,
+            "Shared Hit Blocks": 218,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000,
+            "Plans": [
+              {
+                "Node Type": "Subquery Scan",
+                "Parent Relationship": "Member",
+                "Alias": "*SELECT* 1",
+                "Startup Cost": 0.00,
+                "Total Cost": 363.02,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.095,
+                "Actual Total Time": 5.344,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["\\"*SELECT* 1\\".a", "0"],
+                "Shared Hit Blocks": 163,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000,
+                "Plans": [
+                  {
+                    "Node Type": "Seq Scan",
+                    "Parent Relationship": "Subquery",
+                    "Relation Name": "tt1",
+                    "Schema": "public",
+                    "Alias": "tt1",
+                    "Startup Cost": 0.00,
+                    "Total Cost": 263.01,
+                    "Plan Rows": 10001,
+                    "Plan Width": 4,
+                    "Actual Startup Time": 0.095,
+                    "Actual Total Time": 2.711,
+                    "Actual Rows": 10001,
+                    "Actual Loops": 1,
+                    "Output": ["tt1.a"],
+                    "Shared Hit Blocks": 163,
+                    "Shared Read Blocks": 0,
+                    "Shared Dirtied Blocks": 0,
+                    "Shared Written Blocks": 0,
+                    "Local Hit Blocks": 0,
+                    "Local Read Blocks": 0,
+                    "Local Dirtied Blocks": 0,
+                    "Local Written Blocks": 0,
+                    "Temp Read Blocks": 0,
+                    "Temp Written Blocks": 0,
+                    "I/O Read Time": 0.000,
+                    "I/O Write Time": 0.000
+                  }
+                ]
+              },
+              {
+                "Node Type": "Subquery Scan",
+                "Parent Relationship": "Member",
+                "Alias": "*SELECT* 2",
+                "Startup Cost": 0.00,
+                "Total Cost": 255.02,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.008,
+                "Actual Total Time": 4.805,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["\\"*SELECT* 2\\".b", "1"],
+                "Shared Hit Blocks": 55,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000,
+                "Plans": [
+                  {
+                    "Node Type": "Seq Scan",
+                    "Parent Relationship": "Subquery",
+                    "Relation Name": "tt2",
+                    "Schema": "public",
+                    "Alias": "tt2",
+                    "Startup Cost": 0.00,
+                    "Total Cost": 155.01,
+                    "Plan Rows": 10001,
+                    "Plan Width": 4,
+                    "Actual Startup Time": 0.008,
+                    "Actual Total Time": 2.460,
+                    "Actual Rows": 10001,
+                    "Actual Loops": 1,
+                    "Output": ["tt2.b"],
+                    "Shared Hit Blocks": 55,
+                    "Shared Read Blocks": 0,
+                    "Shared Dirtied Blocks": 0,
+                    "Shared Written Blocks": 0,
+                    "Local Hit Blocks": 0,
+                    "Local Read Blocks": 0,
+                    "Local Dirtied Blocks": 0,
+                    "Local Written Blocks": 0,
+                    "Temp Read Blocks": 0,
+                    "Temp Written Blocks": 0,
+                    "I/O Read Time": 0.000,
+                    "I/O Write Time": 0.000
+                  }
+                ]
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.061,
+  "Triggers": [
+  ]
+}'),
+(17, '###### Plan 17: HashSetOp except, SubqueryScan',
+ E'{
+  "Plan": {
+    "Node Type": "Sort",
+    "Startup Cost": 1332.50,
+    "Total Cost": 1357.51,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 24.361,
+    "Actual Total Time": 25.158,
+    "Actual Rows": 10001,
+    "Actual Loops": 1,
+    "Output": ["\\"*SELECT* 1\\".a", "(0)"],
+    "Sort Key": ["\\"*SELECT* 1\\".a"],
+    "Sort Method": "quicksort",
+    "Sort Space Used": 855,
+    "Sort Space Type": "Memory",
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "SetOp",
+        "Strategy": "Hashed",
+        "Parent Relationship": "Outer",
+        "Command": "Except",
+        "Startup Cost": 0.00,
+        "Total Cost": 668.04,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 18.923,
+        "Actual Total Time": 19.997,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["\\"*SELECT* 1\\".a", "(0)"],
+        "Shared Hit Blocks": 218,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Append",
+            "Parent Relationship": "Outer",
+            "Startup Cost": 0.00,
+            "Total Cost": 618.04,
+            "Plan Rows": 20002,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.112,
+            "Actual Total Time": 12.917,
+            "Actual Rows": 20002,
+            "Actual Loops": 1,
+            "Shared Hit Blocks": 218,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000,
+            "Plans": [
+              {
+                "Node Type": "Subquery Scan",
+                "Parent Relationship": "Member",
+                "Alias": "*SELECT* 1",
+                "Startup Cost": 0.00,
+                "Total Cost": 363.02,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.112,
+                "Actual Total Time": 5.518,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["\\"*SELECT* 1\\".a", "0"],
+                "Shared Hit Blocks": 163,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000,
+                "Plans": [
+                  {
+                    "Node Type": "Seq Scan",
+                    "Parent Relationship": "Subquery",
+                    "Relation Name": "tt1",
+                    "Schema": "public",
+                    "Alias": "tt1",
+                    "Startup Cost": 0.00,
+                    "Total Cost": 263.01,
+                    "Plan Rows": 10001,
+                    "Plan Width": 4,
+                    "Actual Startup Time": 0.110,
+                    "Actual Total Time": 2.818,
+                    "Actual Rows": 10001,
+                    "Actual Loops": 1,
+                    "Output": ["tt1.a"],
+                    "Shared Hit Blocks": 163,
+                    "Shared Read Blocks": 0,
+                    "Shared Dirtied Blocks": 0,
+                    "Shared Written Blocks": 0,
+                    "Local Hit Blocks": 0,
+                    "Local Read Blocks": 0,
+                    "Local Dirtied Blocks": 0,
+                    "Local Written Blocks": 0,
+                    "Temp Read Blocks": 0,
+                    "Temp Written Blocks": 0,
+                    "I/O Read Time": 0.000,
+                    "I/O Write Time": 0.000
+                  }
+                ]
+              },
+              {
+                "Node Type": "Subquery Scan",
+                "Parent Relationship": "Member",
+                "Alias": "*SELECT* 2",
+                "Startup Cost": 0.00,
+                "Total Cost": 255.02,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.007,
+                "Actual Total Time": 4.578,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["\\"*SELECT* 2\\".b", "1"],
+                "Shared Hit Blocks": 55,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000,
+                "Plans": [
+                  {
+                    "Node Type": "Seq Scan",
+                    "Parent Relationship": "Subquery",
+                    "Relation Name": "tt2",
+                    "Schema": "public",
+                    "Alias": "tt2",
+                    "Startup Cost": 0.00,
+                    "Total Cost": 155.01,
+                    "Plan Rows": 10001,
+                    "Plan Width": 4,
+                    "Actual Startup Time": 0.007,
+                    "Actual Total Time": 2.310,
+                    "Actual Rows": 10001,
+                    "Actual Loops": 1,
+                    "Output": ["tt2.b"],
+                    "Shared Hit Blocks": 55,
+                    "Shared Read Blocks": 0,
+                    "Shared Dirtied Blocks": 0,
+                    "Shared Written Blocks": 0,
+                    "Local Hit Blocks": 0,
+                    "Local Read Blocks": 0,
+                    "Local Dirtied Blocks": 0,
+                    "Local Written Blocks": 0,
+                    "Temp Read Blocks": 0,
+                    "Temp Written Blocks": 0,
+                    "I/O Read Time": 0.000,
+                    "I/O Write Time": 0.000
+                  }
+                ]
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.071,
+  "Triggers": [
+  ]
+}'),
+(18, '###### Plan 18: HashSetOp except all, SubqueryScan',
+ E'{
+  "Plan": {
+    "Node Type": "Sort",
+    "Startup Cost": 1332.50,
+    "Total Cost": 1357.51,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 23.742,
+    "Actual Total Time": 24.542,
+    "Actual Rows": 10001,
+    "Actual Loops": 1,
+    "Output": ["\\"*SELECT* 1\\".a", "(0)"],
+    "Sort Key": ["\\"*SELECT* 1\\".a"],
+    "Sort Method": "quicksort",
+    "Sort Space Used": 855,
+    "Sort Space Type": "Memory",
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "SetOp",
+        "Strategy": "Hashed",
+        "Parent Relationship": "Outer",
+        "Command": "Except All",
+        "Startup Cost": 0.00,
+        "Total Cost": 668.04,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 18.525,
+        "Actual Total Time": 19.612,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["\\"*SELECT* 1\\".a", "(0)"],
+        "Shared Hit Blocks": 218,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Append",
+            "Parent Relationship": "Outer",
+            "Startup Cost": 0.00,
+            "Total Cost": 618.04,
+            "Plan Rows": 20002,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.116,
+            "Actual Total Time": 12.639,
+            "Actual Rows": 20002,
+            "Actual Loops": 1,
+            "Shared Hit Blocks": 218,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000,
+            "Plans": [
+              {
+                "Node Type": "Subquery Scan",
+                "Parent Relationship": "Member",
+                "Alias": "*SELECT* 1",
+                "Startup Cost": 0.00,
+                "Total Cost": 363.02,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.116,
+                "Actual Total Time": 5.303,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["\\"*SELECT* 1\\".a", "0"],
+                "Shared Hit Blocks": 163,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000,
+                "Plans": [
+                  {
+                    "Node Type": "Seq Scan",
+                    "Parent Relationship": "Subquery",
+                    "Relation Name": "tt1",
+                    "Schema": "public",
+                    "Alias": "tt1",
+                    "Startup Cost": 0.00,
+                    "Total Cost": 263.01,
+                    "Plan Rows": 10001,
+                    "Plan Width": 4,
+                    "Actual Startup Time": 0.115,
+                    "Actual Total Time": 2.724,
+                    "Actual Rows": 10001,
+                    "Actual Loops": 1,
+                    "Output": ["tt1.a"],
+                    "Shared Hit Blocks": 163,
+                    "Shared Read Blocks": 0,
+                    "Shared Dirtied Blocks": 0,
+                    "Shared Written Blocks": 0,
+                    "Local Hit Blocks": 0,
+                    "Local Read Blocks": 0,
+                    "Local Dirtied Blocks": 0,
+                    "Local Written Blocks": 0,
+                    "Temp Read Blocks": 0,
+                    "Temp Written Blocks": 0,
+                    "I/O Read Time": 0.000,
+                    "I/O Write Time": 0.000
+                  }
+                ]
+              },
+              {
+                "Node Type": "Subquery Scan",
+                "Parent Relationship": "Member",
+                "Alias": "*SELECT* 2",
+                "Startup Cost": 0.00,
+                "Total Cost": 255.02,
+                "Plan Rows": 10001,
+                "Plan Width": 4,
+                "Actual Startup Time": 0.007,
+                "Actual Total Time": 4.542,
+                "Actual Rows": 10001,
+                "Actual Loops": 1,
+                "Output": ["\\"*SELECT* 2\\".b", "1"],
+                "Shared Hit Blocks": 55,
+                "Shared Read Blocks": 0,
+                "Shared Dirtied Blocks": 0,
+                "Shared Written Blocks": 0,
+                "Local Hit Blocks": 0,
+                "Local Read Blocks": 0,
+                "Local Dirtied Blocks": 0,
+                "Local Written Blocks": 0,
+                "Temp Read Blocks": 0,
+                "Temp Written Blocks": 0,
+                "I/O Read Time": 0.000,
+                "I/O Write Time": 0.000,
+                "Plans": [
+                  {
+                    "Node Type": "Seq Scan",
+                    "Parent Relationship": "Subquery",
+                    "Relation Name": "tt2",
+                    "Schema": "public",
+                    "Alias": "tt2",
+                    "Startup Cost": 0.00,
+                    "Total Cost": 155.01,
+                    "Plan Rows": 10001,
+                    "Plan Width": 4,
+                    "Actual Startup Time": 0.007,
+                    "Actual Total Time": 2.301,
+                    "Actual Rows": 10001,
+                    "Actual Loops": 1,
+                    "Output": ["tt2.b"],
+                    "Shared Hit Blocks": 55,
+                    "Shared Read Blocks": 0,
+                    "Shared Dirtied Blocks": 0,
+                    "Shared Written Blocks": 0,
+                    "Local Hit Blocks": 0,
+                    "Local Read Blocks": 0,
+                    "Local Dirtied Blocks": 0,
+                    "Local Written Blocks": 0,
+                    "Temp Read Blocks": 0,
+                    "Temp Written Blocks": 0,
+                    "I/O Read Time": 0.000,
+                    "I/O Write Time": 0.000
+                  }
+                ]
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.075,
+  "Triggers": [
+  ]
+}'),
+(19, '###### Plan 19: merge LEFT join',
+ '{
+  "Plan": {
+    "Node Type": "Merge Join",
+    "Join Type": "Left",
+    "Startup Cost": 0.58,
+    "Total Cost": 2434.81,
+    "Plan Rows": 15224,
+    "Plan Width": 4,
+    "Actual Startup Time": 0.028,
+    "Actual Total Time": 37.655,
+    "Actual Rows": 30003,
+    "Actual Loops": 1,
+    "Output": ["x.b"],
+    "Merge Cond": "(x.a = y.a)",
+    "Shared Hit Blocks": 20418,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Index Scan",
+        "Parent Relationship": "Outer",
+        "Scan Direction": "Forward",
+        "Index Name": "i_tt1",
+        "Relation Name": "tt1",
+        "Schema": "public",
+        "Alias": "x",
+        "Startup Cost": 0.29,
+        "Total Cost": 760.30,
+        "Plan Rows": 10001,
+        "Plan Width": 8,
+        "Actual Startup Time": 0.007,
+        "Actual Total Time": 3.875,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["x.a", "x.b", "x.c"],
+        "Shared Hit Blocks": 165,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      },
+      {
+        "Node Type": "Index Only Scan",
+        "Parent Relationship": "Inner",
+        "Scan Direction": "Forward",
+        "Index Name": "i_tt3_a",
+        "Relation Name": "tt3",
+        "Schema": "public",
+        "Alias": "y",
+        "Startup Cost": 0.29,
+        "Total Cost": 5745.99,
+        "Plan Rows": 120003,
+        "Plan Width": 4,
+        "Actual Startup Time": 0.018,
+        "Actual Total Time": 18.091,
+        "Actual Rows": 30004,
+        "Actual Loops": 1,
+        "Output": ["y.a"],
+        "Heap Fetches": 30004,
+        "Shared Hit Blocks": 20253,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      }
+    ]
+  },
+  "Planning Time": 0.331,
+  "Triggers": [
+  ]
+}'),
+(20, '###### Plan 20: hash FULL join',
+ '{
+  "Plan": {
+    "Node Type": "Hash Join",
+    "Join Type": "Full",
+    "Startup Cost": 280.02,
+    "Total Cost": 793.06,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 5.372,
+    "Actual Total Time": 12.828,
+    "Actual Rows": 17001,
+    "Actual Loops": 1,
+    "Output": ["x.b"],
+    "Hash Cond": "(x.a = y.a)",
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Seq Scan",
+        "Parent Relationship": "Outer",
+        "Relation Name": "tt1",
+        "Schema": "public",
+        "Alias": "x",
+        "Startup Cost": 0.00,
+        "Total Cost": 263.01,
+        "Plan Rows": 10001,
+        "Plan Width": 8,
+        "Actual Startup Time": 0.103,
+        "Actual Total Time": 1.570,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["x.a", "x.b", "x.c"],
+        "Shared Hit Blocks": 163,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      },
+      {
+        "Node Type": "Hash",
+        "Parent Relationship": "Inner",
+        "Startup Cost": 155.01,
+        "Total Cost": 155.01,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 5.264,
+        "Actual Total Time": 5.264,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["y.a"],
+        "Hash Buckets": 1024,
+        "Hash Batches": 1,
+        "Original Hash Batches": 1,
+        "Peak Memory Usage": 352,
+        "Shared Hit Blocks": 55,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Outer",
+            "Relation Name": "tt2",
+            "Schema": "public",
+            "Alias": "y",
+            "Startup Cost": 0.00,
+            "Total Cost": 155.01,
+            "Plan Rows": 10001,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.009,
+            "Actual Total Time": 2.478,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["y.a"],
+            "Shared Hit Blocks": 55,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.093,
+  "Triggers": [
+  ]
+}'),
+(21, '###### Plan 21: hash SEMI join',
+ '{
+  "Plan": {
+    "Node Type": "Hash Join",
+    "Join Type": "Semi",
+    "Startup Cost": 280.02,
+    "Total Cost": 793.06,
+    "Plan Rows": 10001,
+    "Plan Width": 12,
+    "Actual Startup Time": 10.091,
+    "Actual Total Time": 10.091,
+    "Actual Rows": 0,
+    "Actual Loops": 1,
+    "Output": ["tt1.a", "tt1.b", "tt1.c"],
+    "Hash Cond": "(tt1.a = tt2.b)",
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Seq Scan",
+        "Parent Relationship": "Outer",
+        "Relation Name": "tt1",
+        "Schema": "public",
+        "Alias": "tt1",
+        "Startup Cost": 0.00,
+        "Total Cost": 263.01,
+        "Plan Rows": 10001,
+        "Plan Width": 12,
+        "Actual Startup Time": 0.090,
+        "Actual Total Time": 1.410,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["tt1.a", "tt1.b", "tt1.c"],
+        "Shared Hit Blocks": 163,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      },
+      {
+        "Node Type": "Hash",
+        "Parent Relationship": "Inner",
+        "Startup Cost": 155.01,
+        "Total Cost": 155.01,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 5.430,
+        "Actual Total Time": 5.430,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["tt2.b"],
+        "Hash Buckets": 1024,
+        "Hash Batches": 1,
+        "Original Hash Batches": 1,
+        "Peak Memory Usage": 352,
+        "Shared Hit Blocks": 55,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Outer",
+            "Relation Name": "tt2",
+            "Schema": "public",
+            "Alias": "tt2",
+            "Startup Cost": 0.00,
+            "Total Cost": 155.01,
+            "Plan Rows": 10001,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.007,
+            "Actual Total Time": 2.483,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["tt2.b"],
+            "Shared Hit Blocks": 55,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.179,
+  "Triggers": [
+  ]
+}'),
+(22, '###### Plan 22: Hash Anti Join',
+ '{
+  "Plan": {
+    "Node Type": "Hash Join",
+    "Join Type": "Anti",
+    "Startup Cost": 280.02,
+    "Total Cost": 693.05,
+    "Plan Rows": 1,
+    "Plan Width": 12,
+    "Actual Startup Time": 5.480,
+    "Actual Total Time": 11.691,
+    "Actual Rows": 10001,
+    "Actual Loops": 1,
+    "Output": ["tt1.a", "tt1.b", "tt1.c"],
+    "Hash Cond": "(tt1.a = tt2.b)",
+    "Shared Hit Blocks": 218,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Seq Scan",
+        "Parent Relationship": "Outer",
+        "Relation Name": "tt1",
+        "Schema": "public",
+        "Alias": "tt1",
+        "Startup Cost": 0.00,
+        "Total Cost": 263.01,
+        "Plan Rows": 10001,
+        "Plan Width": 12,
+        "Actual Startup Time": 0.091,
+        "Actual Total Time": 1.520,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["tt1.a", "tt1.b", "tt1.c"],
+        "Shared Hit Blocks": 163,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      },
+      {
+        "Node Type": "Hash",
+        "Parent Relationship": "Inner",
+        "Startup Cost": 155.01,
+        "Total Cost": 155.01,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 5.384,
+        "Actual Total Time": 5.384,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["tt2.b"],
+        "Hash Buckets": 1024,
+        "Hash Batches": 1,
+        "Original Hash Batches": 1,
+        "Peak Memory Usage": 352,
+        "Shared Hit Blocks": 55,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Outer",
+            "Relation Name": "tt2",
+            "Schema": "public",
+            "Alias": "tt2",
+            "Startup Cost": 0.00,
+            "Total Cost": 155.01,
+            "Plan Rows": 10001,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.007,
+            "Actual Total Time": 2.563,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["tt2.b"],
+            "Shared Hit Blocks": 55,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.127,
+  "Triggers": [
+  ]
+}'),
+(23, '###### Plan 23: WindowAgg',
+ '{
+  "Plan": {
+    "Node Type": "WindowAgg",
+    "Startup Cost": 927.47,
+    "Total Cost": 1127.49,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 5.598,
+    "Actual Total Time": 16.880,
+    "Actual Rows": 10001,
+    "Actual Loops": 1,
+    "Output": ["first_value(a) OVER (?)", "((a / 10))"],
+    "Shared Hit Blocks": 163,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Sort",
+        "Parent Relationship": "Outer",
+        "Startup Cost": 927.47,
+        "Total Cost": 952.47,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 5.591,
+        "Actual Total Time": 6.471,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["((a / 10))", "a"],
+        "Sort Key": ["((tt1.a / 10))"],
+        "Sort Method": "quicksort",
+        "Sort Space Used": 855,
+        "Sort Space Type": "Memory",
+        "Shared Hit Blocks": 163,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Outer",
+            "Relation Name": "tt1",
+            "Schema": "public",
+            "Alias": "tt1",
+            "Startup Cost": 0.00,
+            "Total Cost": 263.01,
+            "Plan Rows": 10001,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.094,
+            "Actual Total Time": 3.052,
+            "Actual Rows": 10001,
+            "Actual Loops": 1,
+            "Output": ["(a / 10)", "a"],
+            "Shared Hit Blocks": 163,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.050,
+  "Triggers": [
+  ]
+}'),
+(24, '###### Plan 24: Unique',
+ '{
+  "Plan": {
+    "Node Type": "Unique",
+    "Startup Cost": 0.29,
+    "Total Cost": 785.30,
+    "Plan Rows": 10001,
+    "Plan Width": 4,
+    "Actual Startup Time": 0.010,
+    "Actual Total Time": 7.552,
+    "Actual Rows": 10001,
+    "Actual Loops": 1,
+    "Output": ["a"],
+    "Shared Hit Blocks": 165,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Index Only Scan",
+        "Parent Relationship": "Outer",
+        "Scan Direction": "Forward",
+        "Index Name": "i_tt1",
+        "Relation Name": "tt1",
+        "Schema": "public",
+        "Alias": "tt1",
+        "Startup Cost": 0.29,
+        "Total Cost": 760.30,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 0.009,
+        "Actual Total Time": 4.040,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["a"],
+        "Heap Fetches": 10001,
+        "Shared Hit Blocks": 165,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      }
+    ]
+  },
+  "Planning Time": 0.040,
+  "Triggers": [
+  ]
+}'),
+(25, '###### Plan 25: PlainAggregate',
+ '{
+  "Plan": {
+    "Node Type": "Aggregate",
+    "Strategy": "Plain",
+    "Startup Cost": 288.01,
+    "Total Cost": 288.02,
+    "Plan Rows": 1,
+    "Plan Width": 4,
+    "Actual Startup Time": 3.202,
+    "Actual Total Time": 3.202,
+    "Actual Rows": 1,
+    "Actual Loops": 1,
+    "Output": ["sum(a)"],
+    "Shared Hit Blocks": 163,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Seq Scan",
+        "Parent Relationship": "Outer",
+        "Relation Name": "tt1",
+        "Schema": "public",
+        "Alias": "tt1",
+        "Startup Cost": 0.00,
+        "Total Cost": 263.01,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 0.100,
+        "Actual Total Time": 1.414,
+        "Actual Rows": 10001,
+        "Actual Loops": 1,
+        "Output": ["a", "b", "c"],
+        "Shared Hit Blocks": 163,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      }
+    ]
+  },
+  "Planning Time": 0.031,
+  "Triggers": [
+  ]
+}'),
+(26, '###### Plan 26: BitmapIndexScan/BitmapHeapScan, BitmapOr',
+ '{
+  "Plan": {
+    "Node Type": "Bitmap Heap Scan",
+    "Relation Name": "tt3",
+    "Schema": "public",
+    "Alias": "tt3",
+    "Startup Cost": 208.40,
+    "Total Cost": 1006.81,
+    "Plan Rows": 9961,
+    "Plan Width": 12,
+    "Actual Startup Time": 1.385,
+    "Actual Total Time": 3.464,
+    "Actual Rows": 10003,
+    "Actual Loops": 1,
+    "Output": ["a", "b", "c"],
+    "Recheck Cond": "((tt3.a = 5000) OR (tt3.b = 50))",
+    "Rows Removed by Index Recheck": 0,
+    "Exact Heap Blocks": 57,
+    "Lossy Heap Blocks": 0,
+    "Shared Hit Blocks": 97,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "BitmapOr",
+        "Parent Relationship": "Outer",
+        "Startup Cost": 208.40,
+        "Total Cost": 208.40,
+        "Plan Rows": 9961,
+        "Plan Width": 0,
+        "Actual Startup Time": 1.373,
+        "Actual Total Time": 1.373,
+        "Actual Rows": 0,
+        "Actual Loops": 1,
+        "Shared Hit Blocks": 40,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Bitmap Index Scan",
+            "Parent Relationship": "Member",
+            "Index Name": "i_tt3_a",
+            "Startup Cost": 0.00,
+            "Total Cost": 198.99,
+            "Plan Rows": 9960,
+            "Plan Width": 0,
+            "Actual Startup Time": 1.366,
+            "Actual Total Time": 1.366,
+            "Actual Rows": 10003,
+            "Actual Loops": 1,
+            "Index Cond": "(tt3.a = 5000)",
+            "Shared Hit Blocks": 37,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          },
+          {
+            "Node Type": "Bitmap Index Scan",
+            "Parent Relationship": "Member",
+            "Index Name": "i_tt3_b",
+            "Startup Cost": 0.00,
+            "Total Cost": 4.43,
+            "Plan Rows": 1,
+            "Plan Width": 0,
+            "Actual Startup Time": 0.006,
+            "Actual Total Time": 0.006,
+            "Actual Rows": 1,
+            "Actual Loops": 1,
+            "Index Cond": "(tt3.b = 50)",
+            "Shared Hit Blocks": 3,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.091,
+  "Triggers": [
+  ]
+}'),
+(27, '###### Plan 27: TidScan',
+ E'{
+  "Plan": {
+    "Node Type": "Tid Scan",
+    "Relation Name": "tt3",
+    "Schema": "public",
+    "Alias": "tt3",
+    "Startup Cost": 0.00,
+    "Total Cost": 4.01,
+    "Plan Rows": 1,
+    "Plan Width": 12,
+    "Actual Startup Time": 0.004,
+    "Actual Total Time": 0.004,
+    "Actual Rows": 1,
+    "Actual Loops": 1,
+    "Output": ["a", "b", "c"],
+    "TID Cond": "(tt3.ctid = \'(0,28)\'::tid)",
+    "Shared Hit Blocks": 1,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000
+  },
+  "Planning Time": 0.061,
+  "Triggers": [
+  ]
+}'),
+(28, '###### Plan 28: LockRows',
+ '{
+  "Plan": {
+    "Node Type": "LockRows",
+    "Startup Cost": 0.00,
+    "Total Cost": 313.51,
+    "Plan Rows": 50,
+    "Plan Width": 10,
+    "Actual Startup Time": 0.109,
+    "Actual Total Time": 4.240,
+    "Actual Rows": 1001,
+    "Actual Loops": 1,
+    "Output": ["a", "ctid"],
+    "Shared Hit Blocks": 1164,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Seq Scan",
+        "Parent Relationship": "Outer",
+        "Relation Name": "tt1",
+        "Schema": "public",
+        "Alias": "tt1",
+        "Startup Cost": 0.00,
+        "Total Cost": 313.01,
+        "Plan Rows": 50,
+        "Plan Width": 10,
+        "Actual Startup Time": 0.099,
+        "Actual Total Time": 3.106,
+        "Actual Rows": 1001,
+        "Actual Loops": 1,
+        "Output": ["a", "ctid"],
+        "Filter": "((tt1.a % 10) = 0)",
+        "Rows Removed by Filter": 9000,
+        "Shared Hit Blocks": 163,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000
+      }
+    ]
+  },
+  "Planning Time": 0.036,
+  "Triggers": [
+  ]
+}'),
+(29, '###### Plan 29: Materialize',
+ '{
+  "Plan": {
+    "Node Type": "Seq Scan",
+    "Relation Name": "tt1",
+    "Schema": "public",
+    "Alias": "tt1",
+    "Startup Cost": 0.00,
+    "Total Cost": 1150490.52,
+    "Plan Rows": 5000,
+    "Plan Width": 12,
+    "Actual Startup Time": 4.788,
+    "Actual Total Time": 4.788,
+    "Actual Rows": 0,
+    "Actual Loops": 1,
+    "Output": ["tt1.a", "tt1.b", "tt1.c"],
+    "Filter": "(SubPlan 1)",
+    "Rows Removed by Filter": 10001,
+    "Shared Hit Blocks": 164,
+    "Shared Read Blocks": 0,
+    "Shared Dirtied Blocks": 0,
+    "Shared Written Blocks": 0,
+    "Local Hit Blocks": 0,
+    "Local Read Blocks": 0,
+    "Local Dirtied Blocks": 0,
+    "Local Written Blocks": 0,
+    "Temp Read Blocks": 0,
+    "Temp Written Blocks": 0,
+    "I/O Read Time": 0.000,
+    "I/O Write Time": 0.000,
+    "Plans": [
+      {
+        "Node Type": "Materialize",
+        "Parent Relationship": "SubPlan",
+        "Subplan Name": "SubPlan 1",
+        "Startup Cost": 0.00,
+        "Total Cost": 205.01,
+        "Plan Rows": 10001,
+        "Plan Width": 4,
+        "Actual Startup Time": 0.000,
+        "Actual Total Time": 0.000,
+        "Actual Rows": 1,
+        "Actual Loops": 10001,
+        "Output": ["tt2.b"],
+        "Shared Hit Blocks": 1,
+        "Shared Read Blocks": 0,
+        "Shared Dirtied Blocks": 0,
+        "Shared Written Blocks": 0,
+        "Local Hit Blocks": 0,
+        "Local Read Blocks": 0,
+        "Local Dirtied Blocks": 0,
+        "Local Written Blocks": 0,
+        "Temp Read Blocks": 0,
+        "Temp Written Blocks": 0,
+        "I/O Read Time": 0.000,
+        "I/O Write Time": 0.000,
+        "Plans": [
+          {
+            "Node Type": "Seq Scan",
+            "Parent Relationship": "Outer",
+            "Relation Name": "tt2",
+            "Schema": "public",
+            "Alias": "tt2",
+            "Startup Cost": 0.00,
+            "Total Cost": 155.01,
+            "Plan Rows": 10001,
+            "Plan Width": 4,
+            "Actual Startup Time": 0.007,
+            "Actual Total Time": 0.007,
+            "Actual Rows": 1,
+            "Actual Loops": 1,
+            "Output": ["tt2.b"],
+            "Shared Hit Blocks": 1,
+            "Shared Read Blocks": 0,
+            "Shared Dirtied Blocks": 0,
+            "Shared Written Blocks": 0,
+            "Local Hit Blocks": 0,
+            "Local Read Blocks": 0,
+            "Local Dirtied Blocks": 0,
+            "Local Written Blocks": 0,
+            "Temp Read Blocks": 0,
+            "Temp Written Blocks": 0,
+            "I/O Read Time": 0.000,
+            "I/O Write Time": 0.000
+          }
+        ]
+      }
+    ]
+  },
+  "Planning Time": 0.052,
+  "Triggers": [
+  ]
 }'));
 
 \pset pager