explain
-------------------------------
SORT(3)
  => Sort Keys: default.n1.n_nationkey (INT4) (asc, nulls last)
   JOIN(6)(INNER)
     => Join Cond: name1 (TEXT) = name2 (TEXT)
     => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)
     => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)}
     => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)}
      SCAN(0) on default.nation as n1
        => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1
        => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)}
        => 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: substr(default.n2.n_name (TEXT),1,4) as name2
        => out schema: {(1) name2 (TEXT)}
        => 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=name2 (TEXT), num=32)

SCAN(1) on default.nation as n2
  => target list: substr(default.n2.n_name (TEXT),1,4) as name2
  => out schema: {(1) name2 (TEXT)}
  => 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=name1 (TEXT), num=32)

SCAN(0) on default.nation as n1
  => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1
  => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)}
  => 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=name2 (TEXT), num=32)
[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32)

[Outgoing]
[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32)

SORT(10)
  => Sort Keys: default.n1.n_nationkey (INT4) (asc, nulls last)
   JOIN(6)(INNER)
     => Join Cond: name1 (TEXT) = name2 (TEXT)
     => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)
     => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)}
     => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)}
      SCAN(9) on eb_0000000000000_0000_000002
        => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)}
        => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)}
      SCAN(8) on eb_0000000000000_0000_000001
        => out schema: {(1) name2 (TEXT)}
        => in schema: {(1) name2 (TEXT)}

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

[Incoming]
[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32)

[Enforcers]
 0: sorted input=eb_0000000000000_0000_000003

SORT(3)
  => Sort Keys: default.n1.n_nationkey (INT4) (asc, nulls last)
   SCAN(11) on eb_0000000000000_0000_000003
     => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)}
     => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)}

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