diff --git a/src/sql/optimizer/ob_join_order.cpp b/src/sql/optimizer/ob_join_order.cpp index bd18f31b50..3046a2b140 100644 --- a/src/sql/optimizer/ob_join_order.cpp +++ b/src/sql/optimizer/ob_join_order.cpp @@ -1517,6 +1517,7 @@ int ObJoinOrder::will_use_das(const uint64_t table_id, get_plan()->get_optimizer_context().has_dblink() || get_plan()->get_optimizer_context().has_subquery_in_function_table() || get_plan()->get_optimizer_context().has_cursor_expression() || + get_plan()->get_optimizer_context().has_var_assign() || is_batch_update_table; if (EXTERNAL_TABLE == table_item->table_type_) { create_das_path = false; diff --git a/src/sql/optimizer/ob_log_table_scan.cpp b/src/sql/optimizer/ob_log_table_scan.cpp index 486b42772a..653dbc2d65 100644 --- a/src/sql/optimizer/ob_log_table_scan.cpp +++ b/src/sql/optimizer/ob_log_table_scan.cpp @@ -537,6 +537,10 @@ int ObLogTableScan::extract_pushdown_filters(ObIArray &nonpushdown_f if (OB_FAIL(nonpushdown_filters.push_back(filters.at(i)))) { LOG_WARN("push UDF filter store non-pushdown filter failed", K(ret), K(i)); } + } else if (filters.at(i)->has_flag(CNT_ASSIGN_EXPR)) { + if (OB_FAIL(nonpushdown_filters.push_back(filters.at(i)))) { + LOG_WARN("push variable assign filter store non-pushdown filter failed", K(ret), K(i)); + } } else if (!get_index_back()) { if (OB_FAIL(scan_pushdown_filters.push_back(filters.at(i)))) { LOG_WARN("store pushdown filter failed", K(ret)); diff --git a/src/sql/resolver/dml/ob_dml_resolver.cpp b/src/sql/resolver/dml/ob_dml_resolver.cpp index a23fc80369..035dfc5c3b 100755 --- a/src/sql/resolver/dml/ob_dml_resolver.cpp +++ b/src/sql/resolver/dml/ob_dml_resolver.cpp @@ -6509,6 +6509,10 @@ int ObDMLResolver::resolve_order_item(const ParseNode &sort_node, OrderItem &ord SQL_RESV_LOG(WARN, "index order item not support in update"); } else if (OB_FAIL(resolve_sql_expr(*(sort_node.children_[0]), expr))) { SQL_RESV_LOG(WARN, "resolve sql expression failed", K(ret)); + } else if (expr->has_flag(CNT_ASSIGN_EXPR)) { + ret = OB_NOT_SUPPORTED; + LOG_WARN("Not supported variable assignment in order by item", K(ret)); + LOG_USER_ERROR(OB_NOT_SUPPORTED, "Variable assignment in order by item"); } else { order_item.expr_ = expr; } diff --git a/src/sql/resolver/dml/ob_select_resolver.cpp b/src/sql/resolver/dml/ob_select_resolver.cpp index 29d50e312e..a16c3cf5f4 100644 --- a/src/sql/resolver/dml/ob_select_resolver.cpp +++ b/src/sql/resolver/dml/ob_select_resolver.cpp @@ -1766,6 +1766,11 @@ int ObSelectResolver::resolve_order_item(const ParseNode &sort_node, OrderItem & LOG_WARN("ORDER BY item must be the number of a SELECT-list expression", K(ret)); } } + if (OB_SUCC(ret) && OB_NOT_NULL(order_item.expr_) && order_item.expr_->has_flag(CNT_ASSIGN_EXPR)) { + ret = OB_NOT_SUPPORTED; + LOG_WARN("Not supported variable assignment in order by item", K(ret)); + LOG_USER_ERROR(OB_NOT_SUPPORTED, "Variable assignment in order by item"); + } return ret; }