fix transform shared subquery bug

This commit is contained in:
obdev
2022-11-30 14:35:45 +00:00
committed by ob-robot
parent d4e6d5b0e8
commit ca1574a1ac

View File

@ -6920,9 +6920,11 @@ int ObTransformUtils::construct_simple_view(ObDMLStmt *stmt,
}
}
// rebuild relation id info
// rebuild subquery list and relation id info
if (OB_SUCC(ret)) {
if (OB_FAIL(simple_stmt->rebuild_tables_hash())) {
if (OB_FAIL(simple_stmt->adjust_subquery_list())) {
LOG_WARN("failed to adjust subquery list", K(ret));
} else if (OB_FAIL(simple_stmt->rebuild_tables_hash())) {
LOG_WARN("failed to rebuild table hash", K(ret));
} else if (OB_FAIL(simple_stmt->update_column_item_rel_id())) {
LOG_WARN("failed to update column item by id", K(ret));
@ -6945,6 +6947,9 @@ int ObTransformUtils::generate_select_list(ObTransformerCtx *ctx,
OB_ISNULL(view_stmt = table->ref_query_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("params have null", K(ret), K(stmt), K(table));
} else if (OB_FAIL(ObOptimizerUtil::remove_item(stmt->get_subquery_exprs(),
view_stmt->get_subquery_exprs()))) {
LOG_WARN("failed to remove item", K(ret));
} else if (OB_FAIL(extract_shared_exprs(stmt, view_stmt, shared_exprs))) {
LOG_WARN("failed to extract shared expr", K(ret));
} else if (OB_FAIL(remove_const_exprs(shared_exprs, shared_exprs))) {
@ -6964,8 +6969,6 @@ int ObTransformUtils::generate_select_list(ObTransformerCtx *ctx,
if (OB_SUCC(ret)) {
if (OB_FAIL(stmt->adjust_subquery_list())) {
LOG_WARN("failed to adjust subquery list", K(ret));
} else if (OB_FAIL(view_stmt->adjust_subquery_list())) {
LOG_WARN("failed to adjust subquery list", K(ret));
} else if (OB_FAIL(adjust_pseudo_column_like_exprs(*stmt))) {
LOG_WARN("failed to adjust pseudo column like exprs", K(ret));
} else if (OB_FAIL(adjust_pseudo_column_like_exprs(*view_stmt))) {