|
@@ -352,6 +352,11 @@ RefPtr<CommonTableExpressionList> Parser::parse_common_table_expression_list()
|
|
|
|
|
|
NonnullRefPtr<Expression> Parser::parse_expression()
|
|
|
{
|
|
|
+ if (++m_parser_state.m_current_expression_depth > Limits::maximum_expression_tree_depth) {
|
|
|
+ syntax_error(String::formatted("Exceeded maximum expression tree depth of {}", Limits::maximum_expression_tree_depth));
|
|
|
+ return create_ast_node<ErrorExpression>();
|
|
|
+ }
|
|
|
+
|
|
|
// https://sqlite.org/lang_expr.html
|
|
|
auto expression = parse_primary_expression();
|
|
|
|
|
@@ -362,6 +367,7 @@ NonnullRefPtr<Expression> Parser::parse_expression()
|
|
|
// FIXME: Parse 'function-name'.
|
|
|
// FIXME: Parse 'raise-function'.
|
|
|
|
|
|
+ --m_parser_state.m_current_expression_depth;
|
|
|
return expression;
|
|
|
}
|
|
|
|