Uploaded image for project: 'IMPALA'
  1. IMPALA
  2. IMPALA-91

Make EXPLAIN output easier to interpret

    XMLWordPrintableJSON

Details

    • Task
    • Status: Resolved
    • Blocker
    • Resolution: Fixed
    • Impala 0.5
    • Impala 1.0
    • None
    • None

    Description

      To make it easier to interpret, for a query like:

      select *
      from alltypesagg a
      full outer join alltypessmall b using (id, int_col)
      right join alltypesaggnonulls c on (a.id = c.id and b.string_col = c.string_col)
      where a.day >= 6
      and b.month > 2
      and c.day < 3
      and a.tinyint_col = 15
      and b.string_col = '15'
      and a.tinyint_col + b.tinyint_col < 15
      and a.float_col - c.double_col < 0
      and (b.double_col * c.tinyint_col > 1000 or c.tinyint_col < 1000)
      
      the output in verbose mode could look like
      HASH JOIN
      JOIN OP: RIGHT OUTER JOIN
      HASH PREDICATES: a.id = c.id, b.string_col = c.string_col
      OTHER PREDICATES: a.float_col - c.double_col < 0.0, b.double_col *
      c.tinyint_col > 1000.0 OR c.tinyint_col < 1000
      TUPLE IDS: 0N 1N 2
      INNER:
      SCAN HDFS table=default.alltypesaggnonulls (3) compact
      TUPLE IDS: 2
      HASH JOIN
      JOIN OP: FULL OUTER JOIN
      HASH PREDICATES: a.id = b.id, a.int_col = b.int_col
      OTHER PREDICATES: a.tinyint_col + b.tinyint_col < 15
      TUPLE IDS: 0N 1N
      INNER:
      SCAN HDFS table=default.alltypessmall (1) compact
      PREDICATES: b.string_col = '15'
      TUPLE IDS: 1
      SCAN HDFS table=default.alltypesagg (0)
      PREDICATES: a.tinyint_col = 15
      TUPLE IDS: 0
      
      
      right now it is:
      
      HASH JOIN
      JOIN OP: RIGHT OUTER JOIN
      HASH PREDICATES:
      a.id = c.id
      b.string_col = c.string_col
      OTHER PREDICATES: a.float_col - c.double_col < 0.0, b.double_col *
      c.tinyint_col > 1000.0 OR c.tinyint_col < 1000
      TUPLE IDS: 0N 1N 2
      HASH JOIN
      JOIN OP: FULL OUTER JOIN
      HASH PREDICATES:
      a.id = b.id
      a.int_col = b.int_col
      OTHER PREDICATES: a.tinyint_col + b.tinyint_col < 15
      TUPLE IDS: 0N 1N
      SCAN HDFS table=default.alltypesagg (0)
      PREDICATES: a.tinyint_col = 15
      TUPLE IDS: 0
      SCAN HDFS table=default.alltypessmall (1) compact
      PREDICATES: b.string_col = '15'
      TUPLE IDS: 1
      SCAN HDFS table=default.alltypesaggnonulls (3) compact
      TUPLE IDS: 2
      
      
      in regular mode, it could be something like
      HASH JOIN
      JOIN OP: RIGHT OUTER JOIN
      INNER:
      SCAN HDFS table=default.alltypesaggnonulls
      HASH JOIN
      JOIN OP: FULL OUTER JOIN
      INNER:
      SCAN HDFS table=default.alltypessmall
      SCAN HDFS table=default.alltypesagg (0)
      

      Attachments

        Activity

          People

            alan@cloudera.com Alan Choi
            lskuff Lenni Kuff
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: