[to #48840416] fix collection access with a(idx1)(idx2)(idx3).col1
This commit is contained in:
		| @ -2136,11 +2136,21 @@ int ObRawExprResolverImpl::resolve_right_node_of_obj_access_idents(const ParseNo | ||||
| { | ||||
|   int ret = OB_SUCCESS; | ||||
|   if (T_OBJ_ACCESS_REF == right_node.type_) { | ||||
|     // example: a(1).b(1), here, we resolve '.b(1)' | ||||
|     OZ (resolve_obj_access_idents(right_node, q_name), K(q_name)); | ||||
|     if (right_node.children_[0] != NULL && T_EXPR_LIST == right_node.children_[0]->type_) { | ||||
|       // example: a(1)(2).count, here, we resolve '(2).count' which '(2)' is 'children_[0]' and '.count' is 'children_[1]' | ||||
|       CK (2 == right_node.num_child_); | ||||
|       CK (OB_NOT_NULL(right_node.children_[0])); | ||||
|       CK (OB_NOT_NULL(right_node.children_[1])); | ||||
|       OZ (resolve_right_node_of_obj_access_idents(*(right_node.children_[0]), q_name)); | ||||
|       OZ (resolve_obj_access_idents(*(right_node.children_[1]), q_name)); | ||||
|     } else { | ||||
|       // example: a(1).b(1), here, we resolve '.b(1)' | ||||
|       OZ (resolve_obj_access_idents(right_node, q_name), K(q_name)); | ||||
|     } | ||||
|   } else { | ||||
|     // example: a(1)(2) here, we resolve '(2)' | ||||
|     const ParseNode *element_list = &right_node; | ||||
|     CK (T_EXPR_LIST == element_list->type_); | ||||
|     CK (OB_LIKELY(!q_name.access_idents_.empty())); | ||||
|     for (int64_t i = 0; OB_SUCC(ret) && i < element_list->num_child_; ++i) { | ||||
|       ObObjAccessIdent &access_ident = q_name.access_idents_.at(q_name.access_idents_.count() - 1); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 obdev
					obdev