| ==== |
| ---- QUERY |
| # Query should succeed. |
| set CPU_LIMIT_S=10000; |
| set SCAN_BYTES_LIMIT="10G"; |
| select id from functional.alltypessmall order by 1 limit 1 |
| ---- TYPES |
| INT |
| ---- RESULTS |
| 0 |
| ==== |
| ---- QUERY |
| # Query should fail due to exceeding scan bytes limit. |
| # Added a sleep to make sure it runs long enough to get a non-zero update from the |
| # fragment instances on the num of bytes read and cpu time. |
| set SCAN_BYTES_LIMIT="100M"; |
| select sleep(10000) union select count(*) from tpch.lineitem l1,tpch.lineitem l2, |
| tpch.lineitem l3 where l1.l_suppkey = l2.l_linenumber and l1.l_orderkey = l2.l_orderkey |
| and l1.l_orderkey = l3.l_orderkey group by l1.l_comment, l2.l_comment having count(*) = 99 |
| ---- CATCH |
| row_regex:.*terminated due to scan bytes limit of 100.00 M.* |
| ==== |
| ---- QUERY |
| # Query should fail due to CPU time limit. |
| # Added a sleep to make sure it runs long enough to get a non-zero update from the |
| # fragment instances on the num of bytes read and cpu time. |
| set CPU_LIMIT_S=1; |
| select sleep(10000) union select count(*) from tpch.lineitem l1,tpch.lineitem l2, |
| tpch.lineitem l3 where l1.l_suppkey = l2.l_linenumber and l1.l_orderkey = l2.l_orderkey |
| and l1.l_orderkey = l3.l_orderkey group by l1.l_comment, l2.l_comment having count(*) = 99 |
| ---- CATCH |
| row_regex:.*terminated due to CPU limit of 1s000ms.* |
| ==== |
| ---- QUERY |
| # Query should fail due to CPU time limit. |
| # Added a sleep to make sure it runs long enough to get a non-zero update from the |
| # fragment instances on the num of bytes read and cpu time. |
| set CPU_LIMIT_S=1; |
| set SCAN_BYTES_LIMIT="100G"; |
| select sleep(10000) union select count(*) from tpch.lineitem l1,tpch.lineitem l2, |
| tpch.lineitem l3 where l1.l_suppkey = l2.l_linenumber and l1.l_orderkey = l2.l_orderkey |
| and l1.l_orderkey = l3.l_orderkey group by l1.l_comment, l2.l_comment having count(*) = 99 |
| ---- CATCH |
| row_regex:.*terminated due to CPU limit of 1s000ms.* |
| ==== |
| ---- QUERY |
| # Query should fail due to exceeding time limit. |
| set EXEC_TIME_LIMIT_S=2; |
| select sleep(10000) |
| ---- CATCH |
| row_regex:.*expired due to execution time limit of 2s000ms.* |
| ==== |
| ---- QUERY |
| # Query should fail due to exceeding rows produced limit. |
| set NUM_ROWS_PRODUCED_LIMIT = 10000; |
| select * from tpch.lineitem; |
| ---- CATCH |
| row_regex:.*terminated due to rows produced limit of 10000.* |
| ==== |
| ---- QUERY |
| # The query should succeed when it doesn't exceed the rows produced limit. |
| set NUM_ROWS_PRODUCED_LIMIT = 3; |
| select * from functional.tinytable; |
| ---- TYPES |
| STRING,STRING |
| ---- RESULTS |
| 'aaaaaaa','bbbbbbb' |
| 'ccccc','dddd' |
| 'eeeeeeee','f' |
| ==== |
| ---- QUERY |
| # Query should fail due to exceeding hash join rows produced limit. |
| # Added a sleep to make sure it runs long enough to get a non-zero update from the |
| # fragment instances on the num of join rows produced. |
| set JOIN_ROWS_PRODUCED_LIMIT = 1000; |
| select sleep(10000) union select count(*) from tpch.lineitem l1,tpch.lineitem l2, |
| tpch.lineitem l3 where l1.l_suppkey = l2.l_linenumber and l1.l_orderkey = l2.l_orderkey |
| and l1.l_orderkey = l3.l_orderkey group by l1.l_comment, l2.l_comment having count(*) = 99 |
| ---- CATCH |
| row_regex:.*terminated due to join rows produced exceeds the limit of 1.00K.* |
| ==== |
| ---- QUERY |
| # Query should fail due to exceeding nested loop join rows produced limit. |
| # Added a sleep to make sure it runs long enough to get a non-zero update from the |
| # fragment instances on the num of join rows produced. |
| set JOIN_ROWS_PRODUCED_LIMIT = 500; |
| select sleep(10000) union select count(*) from functional.alltypestiny t1 left outer join |
| functional.alltypessmall t2 on t1.int_col < t2.int_col; |
| ---- CATCH |
| row_regex:.*terminated due to join rows produced exceeds the limit of 500.* |
| ==== |
| ---- QUERY |
| # If one of the mixed joins exceeds the row produced limit, the query should fail. |
| # Added a sleep to make sure it runs long enough to get a non-zero update from the |
| # fragment instances on the num of join rows produced. |
| set JOIN_ROWS_PRODUCED_LIMIT = 10000; |
| select sleep(10000) union select count(*) from ( |
| select |
| * |
| from ( |
| select |
| ps_partkey, |
| sum(ps_supplycost * ps_availqty) as value |
| from |
| tpch_parquet.partsupp, |
| tpch_parquet.supplier, |
| tpch_parquet.nation |
| where |
| ps_suppkey = s_suppkey |
| and s_nationkey = n_nationkey |
| and n_name = 'GERMANY' |
| group by |
| ps_partkey |
| ) as inner_query |
| where |
| value > ( |
| select |
| sum(ps_supplycost * ps_availqty) * 0.0001 |
| from |
| tpch_parquet.partsupp, |
| tpch_parquet.supplier, |
| tpch_parquet.nation |
| where |
| ps_suppkey = s_suppkey |
| and s_nationkey = n_nationkey |
| and n_name = 'GERMANY' |
| ) |
| order by |
| value desc |
| ) t; |
| ---- CATCH |
| row_regex:.*terminated due to join rows produced exceeds the limit of 10.00k* |
| ==== |
| ---- QUERY |
| # The query should succeed when it doesn't exceed the join rows produced limit. |
| set JOIN_ROWS_PRODUCED_LIMIT = 10000; |
| select count(*) from alltypessmall a inner join alltypessmall b |
| on (a.timestamp_col = b.timestamp_col) |
| where a.year=2009 and a.month=1 and b.year=2009 and b.month=1; |
| ---- TYPES |
| BIGINT |
| ---- RESULTS |
| 25 |
| ==== |