blob: 9984f2bb58c219dfcf70fda0cd53dd3e15657cd0 [file] [log] [blame]
====
---- QUERY
# Small query where estimate exceeds available memory but the query can execute with a
# low mem_limit.
select min(c_name), min(n_name)
from tpch_parquet.customer
join tpch_parquet.nation on c_nationkey = n_nationkey
---- CATCH
request memory needed 82.94 MB is greater than pool
max mem resources 40.00 MB (configured statically)
====
---- QUERY
# Overriding the memory estimate should allow the query to execute.
set max_mem_estimate_for_admission=30m;
select min(c_name), min(n_name)
from tpch_parquet.customer
join tpch_parquet.nation on c_nationkey = n_nationkey
---- RESULTS
'Customer#000000001','ALGERIA'
---- TYPES
STRING,STRING
---- RUNTIME_PROFILE
row_regex: .*Query Options \(set by configuration\).*MAX_MEM_ESTIMATE_FOR_ADMISSION=31457280.*
# Memory estimate sent to backend is overridden, but the explain plan shows the planner output.
row_regex: .*Estimated Per-Host Mem: 31457280.*
row_regex: .*Per-Host Resource Estimates: Memory=83MB.*
====
---- QUERY
# If the estimate is set to a higher value that is still > the max mem resources for
# the pool, the query still can't execute.
set max_mem_estimate_for_admission=45m;
select min(c_name), min(n_name)
from tpch_parquet.customer
join tpch_parquet.nation on c_nationkey = n_nationkey
---- CATCH
request memory needed 45.00 MB is greater than pool
max mem resources 40.00 MB (configured statically)
====
---- QUERY
# MEM_LIMIT takes precedence over MAX_MEM_ESTIMATE_FOR_ADMISSION, so the query is
# rejected if MEM_LIMIT is higher.
set mem_limit=45m;
set max_mem_estimate_for_admission=30m;
select min(c_name), min(n_name)
from tpch_parquet.customer
join tpch_parquet.nation on c_nationkey = n_nationkey
---- CATCH
request memory needed 45.00 MB is greater than pool
max mem resources 40.00 MB (configured statically)
====
---- QUERY
# MEM_LIMIT takes precedence over MAX_MEM_ESTIMATE_FOR_ADMISSION, so the query is
# admitted if MEM_LIMIT is lower.
set mem_limit=40m;
set max_mem_estimate_for_admission=45m;
select min(c_name), min(n_name)
from tpch_parquet.customer
join tpch_parquet.nation on c_nationkey = n_nationkey
---- RESULTS
'Customer#000000001','ALGERIA'
---- TYPES
STRING,STRING
---- RUNTIME_PROFILE
row_regex: .*Query Options \(set by configuration\).*MEM_LIMIT=41943040.*MAX_MEM_ESTIMATE_FOR_ADMISSION=47185920.*
# Memory estimate sent to backend is overridden, but the explain plan shows the planner output.
row_regex: .*Estimated Per-Host Mem: 47185920.*
row_regex: .*Per-Host Resource Estimates: Memory=83MB.*
====
---- QUERY
# Larger queries that use more memory than the estimate can still run because no mem_limit is set.
set max_mem_estimate_for_admission=10m;
select min(l_comment) from tpch_parquet.lineitem
---- RESULTS
' Tiresias '
---- TYPES
STRING
---- RUNTIME_PROFILE
row_regex: .*Query Options \(set by configuration\).*MAX_MEM_ESTIMATE_FOR_ADMISSION=10485760.*
# Memory estimate sent to backend is overridden, but the explain plan shows the planner output.
row_regex: .*Estimated Per-Host Mem: 10485760.*
row_regex: .*Per-Host Resource Estimates: Memory=90MB.*
====
---- QUERY
# If the memory estimate is less than max_mem_estimate_for_admission, then the estimate
# is used for admission. This query's memory estimate is 10MB, and it would be rejected
# if the memory estimate was > 40MB.
set max_mem_estimate_for_admission=50m;
select 'foo'
---- RESULTS
'foo'
---- TYPES
STRING
---- RUNTIME_PROFILE
row_regex: .*Query Options \(set by configuration\).*MAX_MEM_ESTIMATE_FOR_ADMISSION=52428800.*
row_regex: .*Estimated Per-Host Mem: 10485760.*
row_regex: .*Per-Host Resource Estimates: Memory=10MB.*
====