You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kyuubi.apache.org by ul...@apache.org on 2022/04/18 02:58:19 UTC

[incubator-kyuubi] branch master updated: [KYUUBI #2390] RuleEliminateMarker stays in analyze phase for data masking

This is an automated email from the ASF dual-hosted git repository.

ulyssesyou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-kyuubi.git


The following commit(s) were added to refs/heads/master by this push:
     new eb7ad512e [KYUUBI #2390] RuleEliminateMarker stays in analyze phase for data masking
eb7ad512e is described below

commit eb7ad512e112a66786f0fedd2a023496cd66c40c
Author: Kent Yao <ya...@apache.org>
AuthorDate: Mon Apr 18 10:58:11 2022 +0800

    [KYUUBI #2390] RuleEliminateMarker stays in analyze phase for data masking
    
    ### _Why are the changes needed?_
    
    Avoid creating duplicate data masking projection to prevent errors in #2390
    
    ### _How was this patch tested?_
    - [x] Add some test cases that check the changes thoroughly including negative and positive cases if possible
    
    - [ ] Add screenshots for manual tests if appropriate
    
    - [x] [Run test](https://kyuubi.apache.org/docs/latest/develop_tools/testing.html#running-tests) locally before make a pull request
    
    Closes #2394 from yaooqinn/2390.
    
    Closes #2390
    
    31c5d071 [Kent Yao] [KYUUBI #2390] RuleEliminateMarker stays in analyze phase for data masking
    ad0138c6 [Kent Yao] [KYUUBI #2390] RuleEliminateMarker stays in analyze phase for data masking
    
    Authored-by: Kent Yao <ya...@apache.org>
    Signed-off-by: ulysses-you <ul...@apache.org>
---
 .../spark/authz/ranger/RangerSparkExtension.scala    |  2 +-
 .../authz/ranger/RangerSparkExtensionSuite.scala     | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/extensions/spark/kyuubi-spark-authz/src/main/scala/org/apache/kyuubi/plugin/spark/authz/ranger/RangerSparkExtension.scala b/extensions/spark/kyuubi-spark-authz/src/main/scala/org/apache/kyuubi/plugin/spark/authz/ranger/RangerSparkExtension.scala
index 979fc550b..3e6d4ef99 100644
--- a/extensions/spark/kyuubi-spark-authz/src/main/scala/org/apache/kyuubi/plugin/spark/authz/ranger/RangerSparkExtension.scala
+++ b/extensions/spark/kyuubi-spark-authz/src/main/scala/org/apache/kyuubi/plugin/spark/authz/ranger/RangerSparkExtension.scala
@@ -40,7 +40,7 @@ class RangerSparkExtension extends (SparkSessionExtensions => Unit) {
 
   override def apply(v1: SparkSessionExtensions): Unit = {
     v1.injectResolutionRule(new RuleApplyRowFilterAndDataMasking(_))
-    v1.injectPostHocResolutionRule(_ => new RuleEliminateMarker())
+    v1.injectOptimizerRule(_ => new RuleEliminateMarker())
     v1.injectOptimizerRule(new RuleAuthorization(_))
   }
 }
diff --git a/extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/ranger/RangerSparkExtensionSuite.scala b/extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/ranger/RangerSparkExtensionSuite.scala
index 631ed6e7d..cb8c63aac 100644
--- a/extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/ranger/RangerSparkExtensionSuite.scala
+++ b/extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/ranger/RangerSparkExtensionSuite.scala
@@ -235,6 +235,26 @@ abstract class RangerSparkExtensionSuite extends KyuubiFunSuite with SparkSessio
       doAs("admin", sql(s"DROP TABLE IF EXISTS $db.$table"))
     }
   }
+
+  test("KYUUBI #2390: RuleEliminateMarker stays in analyze phase for data masking") {
+    val db = "default"
+    val table = "src"
+    val create =
+      s"CREATE TABLE IF NOT EXISTS $db.$table (key int, value1 int) USING $format"
+    try {
+      doAs("admin", sql(create))
+      doAs("admin", sql(s"INSERT INTO $db.$table SELECT 1, 1"))
+      // scalastyle: off
+      doAs(
+        "bob", {
+          assert(sql(s"select * from $db.$table").collect() ===
+            Seq(Row(1, DigestUtils.md5Hex("1"))))
+          assert(Try(sql(s"select * from $db.$table").show(1)).isSuccess)
+        })
+    } finally {
+      doAs("admin", sql(s"DROP TABLE IF EXISTS $db.$table"))
+    }
+  }
 }
 
 class InMemoryCatalogRangerSparkExtensionSuite extends RangerSparkExtensionSuite {