From 2477ffe83b56c6d2ca2219bd45f393c0cb528951 Mon Sep 17 00:00:00 2001 From: Bruce Ritchie Date: Mon, 7 Apr 2025 15:43:49 +0000 Subject: [PATCH 1/2] Update parser recursion limit from 50 to 100. --- datafusion/sql/src/parser.rs | 2 +- datafusion/sqllogictest/test_files/errors.slt | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/datafusion/sql/src/parser.rs b/datafusion/sql/src/parser.rs index 822b651eae86..ec9285e9f54d 100644 --- a/datafusion/sql/src/parser.rs +++ b/datafusion/sql/src/parser.rs @@ -288,7 +288,7 @@ pub struct DFParser<'a> { } /// Same as `sqlparser` -const DEFAULT_RECURSION_LIMIT: usize = 50; +const DEFAULT_RECURSION_LIMIT: usize = 100; const DEFAULT_DIALECT: GenericDialect = GenericDialect {}; /// Builder for [`DFParser`] diff --git a/datafusion/sqllogictest/test_files/errors.slt b/datafusion/sqllogictest/test_files/errors.slt index dc7a53adf889..798af4fce1ba 100644 --- a/datafusion/sqllogictest/test_files/errors.slt +++ b/datafusion/sqllogictest/test_files/errors.slt @@ -185,3 +185,17 @@ select ammp from a; statement ok drop table a; + +# Error number of nested expressions exceeds limit +statement error DataFusion error: SQL error: RecursionLimitExceeded +SELECT + c1 +FROM + aggregate_test_100 +WHERE + c1=0 OR (c2=0 OR (c3=0 OR (c4=0 OR (c5=0 OR (c6=0 OR (c7=0 OR (c8=0 OR (c9=0 OR (c10=0 OR + (c1=1 OR (c2=1 OR (c3=1 OR (c4=1 OR (c5=1 OR (c6=1 OR (c7=1 OR (c8=1 OR (c9=1 OR (c10=1 OR + (c1=2 OR (c2=2 OR (c3=2 OR (c4=2 OR (c5=2 OR (c6=2 OR (c7=2 OR (c8=2 OR (c9=2 OR (c10=2 OR + (c1=3 OR (c2=3 OR (c3=3 OR (c4=3 OR (c5=3 OR (c6=3 OR (c7=3 OR (c8=3 OR (c9=3 OR (c10=3 OR + (c1=4 OR (c2=4 OR (c3=4 OR (c4=4 OR (c5=4 OR (c6=4 OR (c7=4 OR (c8=4 OR (c9=4 OR (c10=4 + ))))))))))))))))))))))))))))))))))))))))))))))))); \ No newline at end of file From 28446f05e8aff3f7efa53af9a1ea0f90913fe2c9 Mon Sep 17 00:00:00 2001 From: Bruce Ritchie Date: Tue, 8 Apr 2025 19:28:11 +0000 Subject: [PATCH 2/2] Update parser recursion limit from 50 to 100. --- datafusion/common/src/config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datafusion/common/src/config.rs b/datafusion/common/src/config.rs index b0f17630c910..f4bb8069671b 100644 --- a/datafusion/common/src/config.rs +++ b/datafusion/common/src/config.rs @@ -263,7 +263,7 @@ config_namespace! { pub collect_spans: bool, default = false /// Specifies the recursion depth limit when parsing complex SQL Queries - pub recursion_limit: usize, default = 50 + pub recursion_limit: usize, default = 100 } }