[FEAT MERGE][CP]optimizer stats enhancement
This commit is contained in:
@ -1849,7 +1849,7 @@ int ObRawExprDeduceType::visit(ObAggFunRawExpr &expr)
|
||||
if (OB_ISNULL(param_expr = expr.get_param_expr(i))) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("get unexpected null", K(param_expr), K(expr.get_param_count()));
|
||||
} else if (i == 0 || i == 2) {
|
||||
} else if (i == 0 || i == 2 || i == 3) {
|
||||
if (lib::is_oracle_mode()) {
|
||||
const_cast<ObExprResType&>(param_expr->get_result_type()).set_calc_type(ObNumberType);
|
||||
} else {
|
||||
|
||||
@ -4146,10 +4146,11 @@ int ObRawExprResolverImpl::process_agg_node(const ParseNode *node, ObRawExpr *&e
|
||||
ObSysFunRawExpr *window_size_expr = NULL;
|
||||
ObRawExpr *div_expr = NULL;
|
||||
ObConstRawExpr *one_expr = NULL;
|
||||
ObRawExpr *max_disuse_expr = NULL;
|
||||
if (OB_ISNULL(ctx_.session_info_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("get unexpected null", K(ret), K(ctx_.session_info_));
|
||||
} else if (OB_UNLIKELY(3 != node->num_child_)) {
|
||||
} else if (OB_UNLIKELY(4 != node->num_child_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("get unexpected error", K(ret), K(node->num_child_));
|
||||
} else if (OB_FAIL(SMART_CALL(recursive_resolve(node->children_[0], error_expr)))) {
|
||||
@ -4193,6 +4194,14 @@ int ObRawExprResolverImpl::process_agg_node(const ParseNode *node, ObRawExpr *&e
|
||||
LOG_WARN("get invalid item_size_expr", K(ret), K(item_size_expr));
|
||||
} else if (OB_FAIL(agg_expr->add_real_param_expr(item_size_expr))) {
|
||||
LOG_WARN("fail to add param expr to agg expr", K(ret));
|
||||
} else if (OB_FAIL(SMART_CALL(recursive_resolve(node->children_[3], max_disuse_expr)))) {
|
||||
LOG_WARN("fail to recursive resolve expr item", K(ret));
|
||||
} else if (OB_ISNULL(max_disuse_expr) ||
|
||||
OB_UNLIKELY(ObRawExpr::EXPR_CONST != max_disuse_expr->get_expr_class())) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("get invalid item_size_expr", K(ret), K(max_disuse_expr));
|
||||
} else if (OB_FAIL(agg_expr->add_real_param_expr(max_disuse_expr))) {
|
||||
LOG_WARN("fail to add param expr to agg expr", K(ret));
|
||||
} else {/*do nothing*/}
|
||||
} else if (T_FUN_HYBRID_HIST == node->type_ || T_FUN_JSON_OBJECTAGG == node->type_) {
|
||||
if (OB_UNLIKELY(2 != node->num_child_)) {
|
||||
|
||||
Reference in New Issue
Block a user