explain
-------------------------------
SORT(3)
  => Sort Keys: default.n2.n_name (TEXT) (asc, nulls last)
   JOIN(6)(INNER)
     => Join Cond: (default.n1.n_comment (TEXT) = default.n2.n_comment (TEXT) AND (default.n1.n_name (TEXT) = default.n2.n_name (TEXT) AND (default.n1.n_nationkey (INT4) = default.n2.n_nationkey (INT4) AND default.n1.n_regionkey (INT4) = default.n2.n_regionkey (INT4))))
     => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT)
     => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)}
     => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)}
      SCAN(0) on default.nation as n1
        => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)
        => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)}
        => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)}
      SCAN(1) on default.nation as n2
        => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)
        => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)}
        => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)}
explain
-------------------------------
-------------------------------------------------------------------------------
Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005)
-------------------------------------------------------------------------------
|-eb_0000000000000_0000_000005
   |-eb_0000000000000_0000_000004
      |-eb_0000000000000_0000_000003
         |-eb_0000000000000_0000_000002
         |-eb_0000000000000_0000_000001
-------------------------------------------------------------------------------
Order of Execution
-------------------------------------------------------------------------------
1: eb_0000000000000_0000_000001
2: eb_0000000000000_0000_000002
3: eb_0000000000000_0000_000003
4: eb_0000000000000_0000_000004
5: eb_0000000000000_0000_000005
-------------------------------------------------------------------------------

=======================================================
Block Id: eb_0000000000000_0000_000001 [LEAF]
=======================================================

[Outgoing]
[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32)

SCAN(1) on default.nation as n2
  => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)
  => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)}
  => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)}

=======================================================
Block Id: eb_0000000000000_0000_000002 [LEAF]
=======================================================

[Outgoing]
[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32)

SCAN(0) on default.nation as n1
  => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)
  => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)}
  => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)}

=======================================================
Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE]
=======================================================

[Incoming]
[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32)
[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32)

[Outgoing]
[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n2.n_name (TEXT), num=32)

SORT(10)
  => Sort Keys: default.n2.n_name (TEXT) (asc, nulls last)
   JOIN(6)(INNER)
     => Join Cond: (default.n1.n_comment (TEXT) = default.n2.n_comment (TEXT) AND (default.n1.n_name (TEXT) = default.n2.n_name (TEXT) AND (default.n1.n_nationkey (INT4) = default.n2.n_nationkey (INT4) AND default.n1.n_regionkey (INT4) = default.n2.n_regionkey (INT4))))
     => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT)
     => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)}
     => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)}
      SCAN(9) on eb_0000000000000_0000_000002
        => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)}
        => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)}
      SCAN(8) on eb_0000000000000_0000_000001
        => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)}
        => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)}

=======================================================
Block Id: eb_0000000000000_0000_000004 [ROOT]
=======================================================

[Incoming]
[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n2.n_name (TEXT), num=32)

[Enforcers]
 0: sorted input=eb_0000000000000_0000_000003

SORT(3)
  => Sort Keys: default.n2.n_name (TEXT) (asc, nulls last)
   SCAN(11) on eb_0000000000000_0000_000003
     => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)}
     => in schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)}

=======================================================
Block Id: eb_0000000000000_0000_000005 [TERMINAL]
=======================================================
