blob: 12f4b97a1541378d31bf6959f079a6ee15783dd4 [file] [log] [blame]
# basic filter
select count(*) from functional_kudu.alltypes a, functional_kudu.alltypestiny b
where a.int_col = b.tinyint_col + 1 and a.string_col = b.string_col
---- PLAN
F00:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1
| Per-Host Resources: mem-estimate=13.44MB mem-reservation=1.94MB thread-reservation=3
PLAN-ROOT SINK
| output exprs: count(*)
| mem-estimate=0B mem-reservation=0B thread-reservation=0
|
03:AGGREGATE [FINALIZE]
| output: count(*)
| mem-estimate=10.00MB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
| tuple-ids=2 row-size=8B cardinality=1
| in pipelines: 03(GETNEXT), 00(OPEN)
|
02:HASH JOIN [INNER JOIN]
| hash predicates: a.string_col = b.string_col, a.int_col = b.tinyint_col + 1
| fk/pk conjuncts: none
| runtime filters: RF002[min_max] <- b.string_col, RF003[min_max] <- b.tinyint_col + 1
| mem-estimate=1.94MB mem-reservation=1.94MB spill-buffer=64.00KB thread-reservation=0
| tuple-ids=0,1 row-size=39B cardinality=5.84K
| in pipelines: 00(GETNEXT), 01(OPEN)
|
|--01:SCAN KUDU [functional_kudu.alltypestiny b]
| mem-estimate=1.50MB mem-reservation=0B thread-reservation=1
| tuple-ids=1 row-size=18B cardinality=8
| in pipelines: 01(GETNEXT)
|
00:SCAN KUDU [functional_kudu.alltypes a]
runtime filters: RF002[min_max] -> a.string_col, RF003[min_max] -> a.int_col
mem-estimate=1.50MB mem-reservation=0B thread-reservation=1
tuple-ids=0 row-size=21B cardinality=7.30K
in pipelines: 00(GETNEXT)
====
# Filters are not created if the target isn't a bare Kudu column or if 'is (not) distinct'
# is used.
select count(*) from functional_kudu.alltypes a, functional_kudu.alltypestiny b
where a.int_col + 1 = b.int_col
and a.string_col is distinct from b.string_col
and a.tinyint_col is not distinct from b.tinyint_col
---- PLAN
F00:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1
| Per-Host Resources: mem-estimate=14.19MB mem-reservation=1.94MB thread-reservation=3
PLAN-ROOT SINK
| output exprs: count(*)
| mem-estimate=0B mem-reservation=0B thread-reservation=0
|
03:AGGREGATE [FINALIZE]
| output: count(*)
| mem-estimate=10.00MB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
| tuple-ids=2 row-size=8B cardinality=1
| in pipelines: 03(GETNEXT), 00(OPEN)
|
02:HASH JOIN [INNER JOIN]
| hash predicates: a.tinyint_col IS NOT DISTINCT FROM b.tinyint_col, a.int_col + 1 = b.int_col
| fk/pk conjuncts: assumed fk/pk
| other predicates: a.string_col IS DISTINCT FROM b.string_col
| mem-estimate=1.94MB mem-reservation=1.94MB spill-buffer=64.00KB thread-reservation=0
| tuple-ids=0,1 row-size=44B cardinality=7.30K
| in pipelines: 00(GETNEXT), 01(OPEN)
|
|--01:SCAN KUDU [functional_kudu.alltypestiny b]
| mem-estimate=2.25MB mem-reservation=0B thread-reservation=1
| tuple-ids=1 row-size=22B cardinality=8
| in pipelines: 01(GETNEXT)
|
00:SCAN KUDU [functional_kudu.alltypes a]
mem-estimate=2.25MB mem-reservation=0B thread-reservation=1
tuple-ids=0 row-size=22B cardinality=7.30K
in pipelines: 00(GETNEXT)
====
# Filters are only assigned when the target expr is cast if its an implicit integer cast.
select count(*) from functional_kudu.alltypes a, functional_kudu.alltypestiny b
where a.tinyint_col = b.bigint_col
and cast(a.int_col as smallint) = b.smallint_col
and a.string_col = b.timestamp_col
and cast(a.float_col as double) = b.double_col
---- PLAN
F00:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1
| Per-Host Resources: mem-estimate=14.94MB mem-reservation=1.94MB thread-reservation=3
PLAN-ROOT SINK
| output exprs: count(*)
| mem-estimate=0B mem-reservation=0B thread-reservation=0
|
03:AGGREGATE [FINALIZE]
| output: count(*)
| mem-estimate=10.00MB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
| tuple-ids=2 row-size=8B cardinality=1
| in pipelines: 03(GETNEXT), 00(OPEN)
|
02:HASH JOIN [INNER JOIN]
| hash predicates: CAST(a.float_col AS DOUBLE) = b.double_col, CAST(a.int_col AS SMALLINT) = b.smallint_col, a.string_col = b.timestamp_col, a.tinyint_col = b.bigint_col
| fk/pk conjuncts: a.string_col = b.timestamp_col, a.tinyint_col = b.bigint_col
| runtime filters: RF007[min_max] <- b.bigint_col
| mem-estimate=1.94MB mem-reservation=1.94MB spill-buffer=64.00KB thread-reservation=0
| tuple-ids=0,1 row-size=60B cardinality=1.46K
| in pipelines: 00(GETNEXT), 01(OPEN)
|
|--01:SCAN KUDU [functional_kudu.alltypestiny b]
| mem-estimate=3.00MB mem-reservation=0B thread-reservation=1
| tuple-ids=1 row-size=34B cardinality=8
| in pipelines: 01(GETNEXT)
|
00:SCAN KUDU [functional_kudu.alltypes a]
runtime filters: RF007[min_max] -> a.tinyint_col
mem-estimate=3.00MB mem-reservation=0B thread-reservation=1
tuple-ids=0 row-size=26B cardinality=7.30K
in pipelines: 00(GETNEXT)
====
# Query with both Kudu and HDFS filter targets.
select count(*) from functional_kudu.alltypes a, functional_parquet.alltypes b,
functional_kudu.alltypes c
where a.int_col = b.int_col and a.int_col = c.int_col
---- PLAN
F00:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1
| Per-Host Resources: mem-estimate=2.02GB mem-reservation=36.95MB thread-reservation=4 runtime-filters-memory=1.00MB
PLAN-ROOT SINK
| output exprs: count(*)
| mem-estimate=0B mem-reservation=0B thread-reservation=0
|
05:AGGREGATE [FINALIZE]
| output: count(*)
| mem-estimate=10.00MB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
| tuple-ids=3 row-size=8B cardinality=1
| in pipelines: 05(GETNEXT), 00(OPEN)
|
04:HASH JOIN [INNER JOIN]
| hash predicates: a.int_col = c.int_col
| fk/pk conjuncts: none
| runtime filters: RF000[bloom] <- c.int_col, RF001[min_max] <- c.int_col
| mem-estimate=1.94MB mem-reservation=1.94MB spill-buffer=64.00KB thread-reservation=0
| tuple-ids=0,1,2 row-size=12B cardinality=5.33M
| in pipelines: 00(GETNEXT), 02(OPEN)
|
|--02:SCAN KUDU [functional_kudu.alltypes c]
| mem-estimate=768.00KB mem-reservation=0B thread-reservation=1
| tuple-ids=2 row-size=4B cardinality=7.30K
| in pipelines: 02(GETNEXT)
|
03:HASH JOIN [INNER JOIN]
| hash predicates: a.int_col = b.int_col
| fk/pk conjuncts: assumed fk/pk
| runtime filters: RF003[min_max] <- b.int_col
| mem-estimate=2.00GB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
| tuple-ids=0,1 row-size=8B cardinality=7.30K
| in pipelines: 00(GETNEXT), 01(OPEN)
|
|--01:SCAN HDFS [functional_parquet.alltypes b]
| HDFS partitions=24/24 files=24 size=200.33KB
| runtime filters: RF000[bloom] -> b.int_col
| stored statistics:
| table: rows=unavailable size=unavailable
| partitions: 0/24 rows=unavailable
| columns: unavailable
| extrapolated-rows=disabled max-scan-range-rows=unavailable
| mem-estimate=16.00MB mem-reservation=16.00KB thread-reservation=1
| tuple-ids=1 row-size=4B cardinality=unavailable
| in pipelines: 01(GETNEXT)
|
00:SCAN KUDU [functional_kudu.alltypes a]
runtime filters: RF001[min_max] -> a.int_col, RF003[min_max] -> a.int_col
mem-estimate=768.00KB mem-reservation=0B thread-reservation=1
tuple-ids=0 row-size=4B cardinality=7.30K
in pipelines: 00(GETNEXT)
====