# Default query options
select /* +straight_join */ count(*) from functional.alltypes a
  join /* +broadcast */ functional.alltypes b on b.id = a.id and
    b.date_string_col = a.date_string_col
  join /* +broadcast */ functional.alltypes c on c.month = a.month and
    c.int_col = a.int_col
  join /* +shuffle */ functional.alltypes d on d.bool_col = a.bool_col and d.year = a.year
---- PLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  runtime filters: RF000 <- d.`year`, RF001 <- d.bool_col
|  row-size=74B cardinality=16.21G
|
|--03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`, RF005 <- c.int_col
|  row-size=69B cardinality=4.44M
|
|--02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  runtime filters: RF008 <- b.id, RF009 <- b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF000 -> a.`year`, RF001 -> a.bool_col, RF004 -> a.`month`, RF005 -> a.int_col, RF008 -> a.id, RF009 -> a.date_string_col
   row-size=37B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
13:AGGREGATE [FINALIZE]
|  output: count:merge(*)
|  row-size=8B cardinality=1
|
12:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN, PARTITIONED]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  runtime filters: RF000 <- d.`year`, RF001 <- d.bool_col
|  row-size=74B cardinality=16.21G
|
|--11:EXCHANGE [HASH(d.`year`,d.bool_col)]
|  |
|  03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
10:EXCHANGE [HASH(a.`year`,a.bool_col)]
|
05:HASH JOIN [INNER JOIN, BROADCAST]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`, RF005 <- c.int_col
|  row-size=69B cardinality=4.44M
|
|--09:EXCHANGE [BROADCAST]
|  |
|  02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN, BROADCAST]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  runtime filters: RF008 <- b.id, RF009 <- b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--08:EXCHANGE [BROADCAST]
|  |
|  01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF000 -> a.`year`, RF001 -> a.bool_col, RF004 -> a.`month`, RF005 -> a.int_col, RF008 -> a.id, RF009 -> a.date_string_col
   row-size=37B cardinality=7.30K
====
# Keep only MAX_NUM_RUNTIME_FILTERS most selective filters, remove the rest.
# In this query RF000 (<- d.bool_col) and RF001 (<- d.year) are the least selective
# filters.
select /* +straight_join */ count(*) from functional.alltypes a
  join /* +broadcast */ functional.alltypes b on b.id = a.id and
    b.date_string_col = a.date_string_col
  join /* +broadcast */ functional.alltypes c on c.month = a.month and
    c.int_col = a.int_col
  join /* +shuffle */ functional.alltypes d on d.bool_col = a.bool_col and d.year = a.year
---- QUERYOPTIONS
MAX_NUM_RUNTIME_FILTERS=4
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
13:AGGREGATE [FINALIZE]
|  output: count:merge(*)
|  row-size=8B cardinality=1
|
12:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN, PARTITIONED]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  row-size=74B cardinality=16.21G
|
|--11:EXCHANGE [HASH(d.`year`,d.bool_col)]
|  |
|  03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
10:EXCHANGE [HASH(a.`year`,a.bool_col)]
|
05:HASH JOIN [INNER JOIN, BROADCAST]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`, RF005 <- c.int_col
|  row-size=69B cardinality=4.44M
|
|--09:EXCHANGE [BROADCAST]
|  |
|  02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN, BROADCAST]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  runtime filters: RF008 <- b.id, RF009 <- b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--08:EXCHANGE [BROADCAST]
|  |
|  01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF008 -> a.id, RF009 -> a.date_string_col, RF004 -> a.`month`, RF005 -> a.int_col
   row-size=37B cardinality=7.30K
====
# DISABLE_ROW_RUNTIME_FILTERING is set: only partition column filters are applied.
select /* +straight_join */ count(*) from functional.alltypes a
  join /* +broadcast */ functional.alltypes b on b.id = a.id and
    b.date_string_col = a.date_string_col
  join /* +broadcast */ functional.alltypes c on c.month = a.month and
    c.int_col = a.int_col
  join /* +shuffle */ functional.alltypes d on d.bool_col = a.bool_col and d.year = a.year
---- QUERYOPTIONS
DISABLE_ROW_RUNTIME_FILTERING=true
---- PLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  runtime filters: RF000 <- d.`year`
|  row-size=74B cardinality=16.21G
|
|--03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`
|  row-size=69B cardinality=4.44M
|
|--02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF000 -> a.`year`, RF004 -> a.`month`
   row-size=37B cardinality=7.30K
====
# DISABLE_ROW_RUNTIME_FILTERING is set and MAX_NUM_RUNTIME_FILTERS is set to 2: only the 2
# partition column filters are applied
select /* +straight_join */ count(*) from functional.alltypes a
  join /* +broadcast */ functional.alltypes b on b.id = a.id and
    b.date_string_col = a.date_string_col
  join /* +broadcast */ functional.alltypes c on c.month = a.month and
    c.int_col = a.int_col
  join /* +shuffle */ functional.alltypes d on d.bool_col = a.bool_col and d.year = a.year
---- QUERYOPTIONS
DISABLE_ROW_RUNTIME_FILTERING=true
MAX_NUM_RUNTIME_FILTERS=2
---- PLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  runtime filters: RF000 <- d.`year`
|  row-size=74B cardinality=16.21G
|
|--03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`
|  row-size=69B cardinality=4.44M
|
|--02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF000 -> a.`year`, RF004 -> a.`month`
   row-size=37B cardinality=7.30K
====
# RUNTIME_FILTER_MODE is set to LOCAL: only local filters are applied
select /* +straight_join */ count(*) from functional.alltypes a
  join /* +broadcast */ functional.alltypes b on b.id = a.id and
    b.date_string_col = a.date_string_col
  join /* +broadcast */ functional.alltypes c on c.month = a.month and
    c.int_col = a.int_col
  join /* +shuffle */ functional.alltypes d on d.bool_col = a.bool_col and d.year = a.year
---- QUERYOPTIONS
RUNTIME_FILTER_MODE=LOCAL
---- PLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  runtime filters: RF000 <- d.`year`, RF001 <- d.bool_col
|  row-size=74B cardinality=16.21G
|
|--03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`, RF005 <- c.int_col
|  row-size=69B cardinality=4.44M
|
|--02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  runtime filters: RF008 <- b.id, RF009 <- b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF000 -> a.`year`, RF001 -> a.bool_col, RF004 -> a.`month`, RF005 -> a.int_col, RF008 -> a.id, RF009 -> a.date_string_col
   row-size=37B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
13:AGGREGATE [FINALIZE]
|  output: count:merge(*)
|  row-size=8B cardinality=1
|
12:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN, PARTITIONED]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  row-size=74B cardinality=16.21G
|
|--11:EXCHANGE [HASH(d.`year`,d.bool_col)]
|  |
|  03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
10:EXCHANGE [HASH(a.`year`,a.bool_col)]
|
05:HASH JOIN [INNER JOIN, BROADCAST]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`, RF005 <- c.int_col
|  row-size=69B cardinality=4.44M
|
|--09:EXCHANGE [BROADCAST]
|  |
|  02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN, BROADCAST]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  runtime filters: RF008 <- b.id, RF009 <- b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--08:EXCHANGE [BROADCAST]
|  |
|  01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF004 -> a.`month`, RF005 -> a.int_col, RF008 -> a.id, RF009 -> a.date_string_col
   row-size=37B cardinality=7.30K
====
# RUNTIME_FILTER_MODE is set to LOCAL and MAX_NUM_RUNTIME_FILTERS is set to 3: only 3
# local filters are kept, which means that both local and non-local filters are removed
# from the distributed plan.
select /* +straight_join */ count(*) from functional.alltypes a
  join /* +broadcast */ functional.alltypes b on b.id = a.id and
    b.date_string_col = a.date_string_col
  join /* +broadcast */ functional.alltypes c on c.month = a.month and
    c.int_col = a.int_col
  join /* +shuffle */ functional.alltypes d on d.bool_col = a.bool_col and d.year = a.year
---- QUERYOPTIONS
RUNTIME_FILTER_MODE=LOCAL
MAX_NUM_RUNTIME_FILTERS=3
---- PLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  row-size=74B cardinality=16.21G
|
|--03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`
|  row-size=69B cardinality=4.44M
|
|--02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  runtime filters: RF008 <- b.id, RF009 <- b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF008 -> a.id, RF009 -> a.date_string_col, RF004 -> a.`month`
   row-size=37B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
13:AGGREGATE [FINALIZE]
|  output: count:merge(*)
|  row-size=8B cardinality=1
|
12:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN, PARTITIONED]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  row-size=74B cardinality=16.21G
|
|--11:EXCHANGE [HASH(d.`year`,d.bool_col)]
|  |
|  03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
10:EXCHANGE [HASH(a.`year`,a.bool_col)]
|
05:HASH JOIN [INNER JOIN, BROADCAST]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`
|  row-size=69B cardinality=4.44M
|
|--09:EXCHANGE [BROADCAST]
|  |
|  02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN, BROADCAST]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  runtime filters: RF008 <- b.id, RF009 <- b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--08:EXCHANGE [BROADCAST]
|  |
|  01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF008 -> a.id, RF009 -> a.date_string_col, RF004 -> a.`month`
   row-size=37B cardinality=7.30K
====
# DISABLE_ROW_RUNTIME_FILTERING is set and RUNTIME_FILTER_MODE is set to LOCAL: only local
# partition column filters are applied
select /* +straight_join */ count(*) from functional.alltypes a
  join /* +broadcast */ functional.alltypes b on b.id = a.id and
    b.date_string_col = a.date_string_col
  join /* +broadcast */ functional.alltypes c on c.month = a.month and
    c.int_col = a.int_col
  join /* +shuffle */ functional.alltypes d on d.bool_col = a.bool_col and d.year = a.year
---- QUERYOPTIONS
DISABLE_ROW_RUNTIME_FILTERING=true
RUNTIME_FILTER_MODE=LOCAL
---- PLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  runtime filters: RF000 <- d.`year`
|  row-size=74B cardinality=16.21G
|
|--03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`
|  row-size=69B cardinality=4.44M
|
|--02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF000 -> a.`year`, RF004 -> a.`month`
   row-size=37B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
13:AGGREGATE [FINALIZE]
|  output: count:merge(*)
|  row-size=8B cardinality=1
|
12:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN, PARTITIONED]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  row-size=74B cardinality=16.21G
|
|--11:EXCHANGE [HASH(d.`year`,d.bool_col)]
|  |
|  03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
10:EXCHANGE [HASH(a.`year`,a.bool_col)]
|
05:HASH JOIN [INNER JOIN, BROADCAST]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  runtime filters: RF004 <- c.`month`
|  row-size=69B cardinality=4.44M
|
|--09:EXCHANGE [BROADCAST]
|  |
|  02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN, BROADCAST]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--08:EXCHANGE [BROADCAST]
|  |
|  01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   runtime filters: RF004 -> a.`month`
   row-size=37B cardinality=7.30K
====
# RUNTIME_FILTER_MODE is OFF: no filters are applied
select /* +straight_join */ count(*) from functional.alltypes a
  join /* +broadcast */ functional.alltypes b on b.id = a.id and
    b.date_string_col = a.date_string_col
  join /* +broadcast */ functional.alltypes c on c.month = a.month and
    c.int_col = a.int_col
  join /* +shuffle */ functional.alltypes d on d.bool_col = a.bool_col and d.year = a.year
---- QUERYOPTIONS
RUNTIME_FILTER_MODE=OFF
---- PLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  row-size=74B cardinality=16.21G
|
|--03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  row-size=69B cardinality=4.44M
|
|--02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   row-size=37B cardinality=7.30K
====
# MAX_NUM_RUNTIME_FILTERS is 0: no filters are applied
select /* +straight_join */ count(*) from functional.alltypes a
  join /* +broadcast */ functional.alltypes b on b.id = a.id and
    b.date_string_col = a.date_string_col
  join /* +broadcast */ functional.alltypes c on c.month = a.month and
    c.int_col = a.int_col
  join /* +shuffle */ functional.alltypes d on d.bool_col = a.bool_col and d.year = a.year
---- QUERYOPTIONS
MAX_NUM_RUNTIME_FILTERS=0
---- PLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
06:HASH JOIN [INNER JOIN]
|  hash predicates: a.`year` = d.`year`, a.bool_col = d.bool_col
|  row-size=74B cardinality=16.21G
|
|--03:SCAN HDFS [functional.alltypes d]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=5B cardinality=7.30K
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: a.`month` = c.`month`, a.int_col = c.int_col
|  row-size=69B cardinality=4.44M
|
|--02:SCAN HDFS [functional.alltypes c]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=8B cardinality=7.30K
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: a.id = b.id, a.date_string_col = b.date_string_col
|  row-size=61B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypes b]
|     partitions=24/24 files=24 size=478.45KB
|     row-size=24B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   row-size=37B cardinality=7.30K
====
# DISABLE_ROW_RUNTIME_FILTERING completely disables filters for Kudu.
select /* +straight_join */ count(*) from functional_kudu.alltypes a
  join functional_kudu.alltypes b on a.id = b.id
---- QUERYOPTIONS
DISABLE_ROW_RUNTIME_FILTERING=TRUE
---- PLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
02:HASH JOIN [INNER JOIN]
|  hash predicates: a.id = b.id
|  row-size=8B cardinality=7.30K
|
|--01:SCAN KUDU [functional_kudu.alltypes b]
|     row-size=4B cardinality=7.30K
|
00:SCAN KUDU [functional_kudu.alltypes a]
   row-size=4B cardinality=7.30K
====
