提交 45a87970 编写于 作者: O obdev 提交者: ob-robot

[Fix] fix same cte table name in different subquery resolve bug

上级 b401dc29
......@@ -15197,6 +15197,7 @@ int ObDMLResolver::resolve_with_clause_subquery(const ParseNode &parse_tree, Tab
cycle_pseudo_column_name) );
cur_select_resolver->set_current_recursive_cte_table_item(NULL);
cur_select_resolver->set_current_cte_involed_stmt(NULL);
OZ ( schema_checker_->remove_tmp_cte_schemas(select_resolver.cte_ctx_.get_current_cte_table_name()) );
}
return ret;
}
......
......@@ -109,6 +109,7 @@ class ObDMLResolver : public ObStmtResolver
}
inline void set_is_with_resolver(bool is_with_resolver) { is_with_clause_resolver_ = is_with_resolver; }
inline void set_current_cte_table_name(const ObString& table_name) { current_cte_table_name_ = table_name; }
inline ObString& get_current_cte_table_name() { return current_cte_table_name_; }
inline bool is_with_resolver() const { return is_with_clause_resolver_; }
inline void set_recursive(bool recursive) { is_recursive_cte_ = recursive; }
inline void set_in_subquery() { is_cte_subquery_ = true; }
......
......@@ -2973,5 +2973,20 @@ bool ObSchemaChecker::is_ora_priv_check()
return false;
}
int ObSchemaChecker::remove_tmp_cte_schemas(const ObString& cte_table_name)
{
int ret = OB_SUCCESS;
for (int64_t i = 0; OB_SUCC(ret) && i < tmp_cte_schemas_.count(); i++) {
if (cte_table_name == tmp_cte_schemas_.at(i)->get_table_name()) {
if(OB_FAIL(tmp_cte_schemas_.remove(i))) {
LOG_WARN("remove from tmp_cte_schemas_ failed.", K(ret));
} else {
break;
}
}
}
return ret;
}
}//end of namespace sql
}//end of namespace oceanbase
......@@ -519,6 +519,8 @@ public:
int get_directory_id(const uint64_t tenant_id,
const common::ObString &directory_name,
uint64_t &directory_id);
int remove_tmp_cte_schemas(const ObString& cte_table_name);
private:
int get_link_table_schema_inner(uint64_t table_id,
const share::schema::ObTableSchema *&table_schema) const;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册