From d3686a28016dd6e7d860d49c08ab690750e77df2 Mon Sep 17 00:00:00 2001 From: zhangdong Date: Wed, 19 Mar 2025 10:51:50 +0800 Subject: [PATCH 1/3] 1 --- .../nereids/trees/plans/commands/DeleteFromCommand.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java index 69ddcafaebed7c..6ef15277aacf06 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java @@ -128,7 +128,14 @@ public void run(ConnectContext ctx, StmtExecutor executor) throws Exception { LogicalPlanAdapter logicalPlanAdapter = new LogicalPlanAdapter(logicalQuery, ctx.getStatementContext()); updateSessionVariableForDelete(ctx.getSessionVariable()); NereidsPlanner planner = new NereidsPlanner(ctx.getStatementContext()); - planner.plan(logicalPlanAdapter, ctx.getSessionVariable().toThrift()); + try { + // delete not need select priv + ctx.setSkipAuth(true); + planner.plan(logicalPlanAdapter, ctx.getSessionVariable().toThrift()); + } finally { + ctx.setSkipAuth(false); + } + executor.setPlanner(planner); executor.checkBlockRules(); // if fe could do fold constant to get delete will do nothing for table, just return. From c0e52cfece2825ec9a0e698c74ba1972587eff97 Mon Sep 17 00:00:00 2001 From: zhangdong Date: Wed, 19 Mar 2025 12:22:57 +0800 Subject: [PATCH 2/3] 1 --- .../suites/auth_call/test_dml_delete_table_auth.groovy | 9 --------- 1 file changed, 9 deletions(-) diff --git a/regression-test/suites/auth_call/test_dml_delete_table_auth.groovy b/regression-test/suites/auth_call/test_dml_delete_table_auth.groovy index aec3ee4a9947e5..caac3568c2e263 100644 --- a/regression-test/suites/auth_call/test_dml_delete_table_auth.groovy +++ b/regression-test/suites/auth_call/test_dml_delete_table_auth.groovy @@ -64,15 +64,6 @@ suite("test_dml_delete_table_auth","p0,auth_call") { assertTrue(del_res.size() == 0) } sql """grant load_priv on ${dbName}.${tableName} to ${user}""" - connect(user, "${pwd}", context.config.jdbcUrl) { - test { - sql """DELETE FROM ${dbName}.${tableName} WHERE id = 3;""" - exception "denied" - } - def del_res = sql """show DELETE from ${dbName}""" - assertTrue(del_res.size() == 0) - } - sql """grant select_priv on ${dbName}.${tableName} to ${user}""" connect(user, "${pwd}", context.config.jdbcUrl) { sql """DELETE FROM ${dbName}.${tableName} WHERE id = 3;""" def del_res = sql """show DELETE from ${dbName}""" From 9cf811b724d484e6a2bc5119b28cdd1698fabf63 Mon Sep 17 00:00:00 2001 From: zhangdong Date: Fri, 21 Mar 2025 16:50:08 +0800 Subject: [PATCH 3/3] 1 --- .../nereids/trees/plans/commands/DeleteFromCommand.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java index 6ef15277aacf06..896f7520683e86 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java @@ -128,14 +128,14 @@ public void run(ConnectContext ctx, StmtExecutor executor) throws Exception { LogicalPlanAdapter logicalPlanAdapter = new LogicalPlanAdapter(logicalQuery, ctx.getStatementContext()); updateSessionVariableForDelete(ctx.getSessionVariable()); NereidsPlanner planner = new NereidsPlanner(ctx.getStatementContext()); + boolean originalIsSkipAuth = ctx.isSkipAuth(); + // delete not need select priv + ctx.setSkipAuth(true); try { - // delete not need select priv - ctx.setSkipAuth(true); planner.plan(logicalPlanAdapter, ctx.getSessionVariable().toThrift()); } finally { - ctx.setSkipAuth(false); + ctx.setSkipAuth(originalIsSkipAuth); } - executor.setPlanner(planner); executor.checkBlockRules(); // if fe could do fold constant to get delete will do nothing for table, just return.