[FEAT MERGE] enhance mview rewrite, support join MAV fast refresh and real-time mview

Co-authored-by: hy-guo <fqboyg@gmail.com>
This commit is contained in:
chimyue
2024-08-23 13:55:07 +00:00
committed by ob-robot
parent 5a0b6f8129
commit 10e34896bc
68 changed files with 6438 additions and 2615 deletions

View File

@ -3446,7 +3446,9 @@ int ObSql::generate_plan(ParseResult &parse_result,
&self_addr_,
phy_plan,
result.get_exec_context(),
stmt))) { //rewrite stmt
stmt,
stmt_need_privs,
stmt_ora_need_privs))) { //rewrite stmt
LOG_WARN("Failed to transform stmt", K(ret));
} else if (OB_FAIL(generate_stmt_with_reconstruct_sql(stmt,
pc_ctx,
@ -3571,6 +3573,10 @@ int ObSql::generate_stmt_with_reconstruct_sql(ObDMLStmt* &stmt,
session->get_charsets4parser(),
pc_ctx->def_name_ctx_);
stmt->get_query_ctx()->global_dependency_tables_.reuse();
ObStmtNeedPrivs mock_stmt_need_privs;
ObStmtOraNeedPrivs mock_stmt_ora_need_privs;
mock_stmt_need_privs.need_privs_.set_allocator(&pc_ctx->allocator_);
mock_stmt_ora_need_privs.need_privs_.set_allocator(&pc_ctx->allocator_);
if (OB_FAIL(parser.parse(sql, parse_result))) {
LOG_WARN("failed to parser sql", K(ret));
} else if (OB_FAIL(generate_stmt(parse_result,
@ -3591,6 +3597,8 @@ int ObSql::generate_stmt_with_reconstruct_sql(ObDMLStmt* &stmt,
phy_plan,
result.get_exec_context(),
stmt,
mock_stmt_need_privs,
mock_stmt_ora_need_privs,
true))) { //rewrite stmt
LOG_WARN("Failed to transform stmt", K(ret));
}
@ -3719,6 +3727,8 @@ int ObSql::transform_stmt(ObSqlSchemaGuard *sql_schema_guard,
ObPhysicalPlan *phy_plan,
ObExecContext &exec_ctx,
ObDMLStmt *&stmt,
ObStmtNeedPrivs &stmt_need_privs,
ObStmtOraNeedPrivs &stmt_ora_need_privs,
bool ignore_trace_event)
{
int ret = OB_SUCCESS;
@ -3759,6 +3769,8 @@ int ObSql::transform_stmt(ObSqlSchemaGuard *sql_schema_guard,
trans_ctx.opt_stat_mgr_ = opt_stat_mgr;
trans_ctx.sql_schema_guard_ = sql_schema_guard;
trans_ctx.self_addr_ = self_addr;
trans_ctx.stmt_need_privs_ = &stmt_need_privs;
trans_ctx.stmt_ora_need_privs_ = &stmt_ora_need_privs;
// trans_ctx.merged_version_ = merged_version;
trans_ctx.phy_plan_ = phy_plan;