[SCN REFACTOR] replace flash back snapshot and remove read snapshot session

This commit is contained in:
wangt1xiuyi
2022-11-28 01:54:50 +00:00
committed by ob-robot
parent c4c13f6296
commit 11485d6a98
268 changed files with 6763 additions and 7737 deletions

View File

@ -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));
}