[SCN REFACTOR] replace flash back snapshot and remove read snapshot session
This commit is contained in:
@ -5433,20 +5433,21 @@ int ObSelectResolver::resolve_alias_column_ref(
|
||||
}
|
||||
|
||||
// subquery cannot ref parent aggr/window function alias
|
||||
// SELECT SUM(c1) OVER () AS c, (SELECT SUM(c) from t2) FROM t1;
|
||||
// SELECT SUM(c1) AS c, (SELECT SUM(c) from t2) FROM t1;
|
||||
if(OB_SUCC(ret) && current_level_ < q_name.current_resolve_level_ && T_FIELD_LIST_SCOPE == current_scope_) {
|
||||
// SELECT SUM(c1) OVER () AS c, (SELECT c from t2) FROM t1;
|
||||
// SELECT SUM(c1) AS c, (SELECT c from t2) FROM t1;
|
||||
// SELECT SUM(c1) AS c FROM t1 having (SELECT SUM(c) from t2) > 0;
|
||||
if(OB_SUCC(ret) && current_level_ < q_name.current_resolve_level_) {
|
||||
bool cnt_aggr = false;
|
||||
if (OB_FAIL(ObRawExprUtils::cnt_current_level_aggr_expr(
|
||||
real_ref_expr, current_level_, cnt_aggr))) {
|
||||
LOG_WARN("check cnt_current level aggr expr failed", K(ret));
|
||||
} else if (cnt_aggr) {
|
||||
ret = OB_ERR_BAD_FIELD_ERROR;
|
||||
ret = OB_ILLEGAL_REFERENCE;
|
||||
} else if (OB_FAIL(ObRawExprUtils::cnt_current_level_window_expr(
|
||||
real_ref_expr, current_level_, cnt_aggr))) {
|
||||
LOG_WARN("check cnt_current level window expr failed", K(ret));
|
||||
} else if (cnt_aggr) {
|
||||
ret = OB_ERR_BAD_FIELD_ERROR;
|
||||
ret = OB_ILLEGAL_REFERENCE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -5772,6 +5773,8 @@ int ObSelectResolver::resolve_subquery_info(const ObIArray<ObSubQueryInfo> &subq
|
||||
subquery_resolver.set_parent_namespace_resolver(this);
|
||||
subquery_resolver.set_current_view_level(current_view_level_);
|
||||
set_query_ref_expr(info.ref_expr_);
|
||||
resolve_alias_for_subquery_ = !(T_FIELD_LIST_SCOPE == current_scope_
|
||||
&& info.parents_expr_info_.has_member(IS_AGG));
|
||||
if (OB_FAIL(subquery_resolver.add_parent_gen_col_exprs(gen_col_exprs_))) {
|
||||
LOG_WARN("failed to add parent gen col exprs", K(ret));
|
||||
}
|
||||
@ -5818,7 +5821,7 @@ int ObSelectResolver::resolve_column_ref_for_subquery(
|
||||
} else if (OB_FAIL(resolve_table_column_ref(q_name, real_ref_expr))) {
|
||||
LOG_WARN_IGNORE_COL_NOTFOUND(ret, "resolve table column failed", K(ret), K(q_name));
|
||||
}
|
||||
if (OB_ERR_BAD_FIELD_ERROR == ret) {
|
||||
if (OB_ERR_BAD_FIELD_ERROR == ret && resolve_alias_for_subquery_) {
|
||||
if (OB_FAIL(resolve_alias_column_ref(q_name, real_ref_expr))) {
|
||||
LOG_WARN_IGNORE_COL_NOTFOUND(ret, "resolve alias column ref failed", K(ret), K(q_name));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user