From 5164d30287d97effcf6e923c6bdbb33d9acb3cce Mon Sep 17 00:00:00 2001 From: zhagnlu <1542303831@qq.com> Date: Thu, 11 Jan 2024 10:26:50 +0800 Subject: [PATCH] fix: increase expr recursion depth to avoid parse failed (#29860) #29759 Signed-off-by: luzhang Co-authored-by: luzhang --- internal/core/src/query/Plan.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/core/src/query/Plan.cpp b/internal/core/src/query/Plan.cpp index 979b9e80bd..e74e387111 100644 --- a/internal/core/src/query/Plan.cpp +++ b/internal/core/src/query/Plan.cpp @@ -77,7 +77,15 @@ CreateRetrievePlanByExpr(const Schema& schema, const void* serialized_expr_plan, const int64_t size) { proto::plan::PlanNode plan_node; - plan_node.ParseFromArray(serialized_expr_plan, size); + google::protobuf::io::ArrayInputStream array_stream(serialized_expr_plan, + size); + google::protobuf::io::CodedInputStream input_stream(&array_stream); + input_stream.SetRecursionLimit(std::numeric_limits::max()); + + auto res = plan_node.ParsePartialFromCodedStream(&input_stream); + if (!res) { + throw SegcoreError(UnexpectedError, "parse plan node proto failed"); + } return ProtoParser(schema).CreateRetrievePlan(plan_node); }