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

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


The following commit(s) were added to refs/heads/master by this push:
     new 810a41c54 [KYUUBI #4871] [AUTHZ] Adapt plan changes for 
CreateNamespace and SetCatalogAndNamespace in Spark 3.4
810a41c54 is described below

commit 810a41c54e4012d259302289d6da1fa5ecccf603
Author: liangbowen <[email protected]>
AuthorDate: Fri May 26 09:26:10 2023 +0800

    [KYUUBI #4871] [AUTHZ] Adapt plan changes for CreateNamespace and 
SetCatalogAndNamespace in Spark 3.4
    
    ### _Why are the changes needed?_
    
    - namespace changed from `Seq[String]` to `ResolvedNamespace` in Spark 3.4
    - fixing uts in the name of `CreateNamespace` and `Extracting database info 
with ResolvedDBObjectNameDatabaseExtractor` w/ Spark 3.4 for  CreateNamespace 
and SetCatalogAndNamespace commands
    
    Testing by running `build/mvn clean install -pl :kyuubi-spark-authz_2.12 
-Pspark-3.4 
-Dmaven.plugin.scalatest.exclude.tags=org.apache.kyuubi.tags.IcebergTest`.
    
    Before:
    ```
    - CreateNamespace *** FAILED ***
      0 did not equal 1 (V2CommandsPrivilegesSuite.scala:707)
    ...
    - Extracting database info with ResolvedDBObjectNameDatabaseExtractor *** 
FAILED ***
      java.lang.NullPointerException:
      at 
org.apache.kyuubi.plugin.spark.authz.V2JdbcTableCatalogPrivilegesBuilderSuite.$anonfun$new$24(V2JdbcTableCatalogPrivilegesBuilderSuite.scala:151)
      at org.scalatest.Assertions.withClue(Assertions.scala:1065)
      at org.scalatest.Assertions.withClue$(Assertions.scala:1052)
      at org.scalatest.funsuite.AnyFunSuite.withClue(AnyFunSuite.scala:1564)
      at 
org.apache.kyuubi.plugin.spark.authz.V2JdbcTableCatalogPrivilegesBuilderSuite.$anonfun$new$21(V2JdbcTableCatalogPrivilegesBuilderSuite.scala:150)
      at scala.collection.immutable.List.foreach(List.scala:431)
      at 
org.apache.kyuubi.plugin.spark.authz.V2JdbcTableCatalogPrivilegesBuilderSuite.$anonfun$new$20(V2JdbcTableCatalogPrivilegesBuilderSuite.scala:143)
      at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
      at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
      at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
    ```
    
    After:
    ```
    - CreateNamespace
    - Extracting database info with ResolvedDBObjectNameDatabaseExtractor
    ```
    
    ### _How was this patch tested?_
    - [ ] 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.readthedocs.io/en/master/develop_tools/testing.html#running-tests)
 locally before make a pull request
    
    Closes #4871 from bowenliang123/create-ns.
    
    Closes #4871
    
    fa141fb5a [liangbowen] update spec json
    2cd18f829 [liangbowen] use meaningful desc names
    142224d1e [liangbowen] Adapt changes for CreateNamespace and 
SetCatalogAndNamespace
    
    Authored-by: liangbowen <[email protected]>
    Signed-off-by: liangbowen <[email protected]>
---
 .../src/main/resources/database_command_spec.json       | 10 ++++++++++
 .../plugin/spark/authz/gen/DatabaseCommands.scala       | 17 +++++++++++++----
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git 
a/extensions/spark/kyuubi-spark-authz/src/main/resources/database_command_spec.json
 
b/extensions/spark/kyuubi-spark-authz/src/main/resources/database_command_spec.json
index 4eb4b3ef8..c640ed89b 100644
--- 
a/extensions/spark/kyuubi-spark-authz/src/main/resources/database_command_spec.json
+++ 
b/extensions/spark/kyuubi-spark-authz/src/main/resources/database_command_spec.json
@@ -22,6 +22,11 @@
       "fieldExtractor" : "CatalogPluginCatalogExtractor"
     },
     "isInput" : false
+  }, {
+    "fieldName" : "name",
+    "fieldExtractor" : "ResolvedNamespaceDatabaseExtractor",
+    "catalogDesc" : null,
+    "isInput" : false
   } ],
   "opType" : "CREATEDATABASE"
 }, {
@@ -45,6 +50,11 @@
 }, {
   "classname" : 
"org.apache.spark.sql.catalyst.plans.logical.SetCatalogAndNamespace",
   "databaseDescs" : [ {
+    "fieldName" : "child",
+    "fieldExtractor" : "ResolvedNamespaceDatabaseExtractor",
+    "catalogDesc" : null,
+    "isInput" : true
+  }, {
     "fieldName" : "child",
     "fieldExtractor" : "ResolvedDBObjectNameDatabaseExtractor",
     "catalogDesc" : null,
diff --git 
a/extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/gen/DatabaseCommands.scala
 
b/extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/gen/DatabaseCommands.scala
index e947579e9..a61c142ed 100644
--- 
a/extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/gen/DatabaseCommands.scala
+++ 
b/extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/gen/DatabaseCommands.scala
@@ -58,9 +58,10 @@ object DatabaseCommands {
         "namespace",
         classOf[StringSeqDatabaseExtractor],
         catalogDesc = Some(CatalogDesc()))
+    val databaseDesc3 = DatabaseDesc("name", 
classOf[ResolvedNamespaceDatabaseExtractor])
     DatabaseCommandSpec(
       "org.apache.spark.sql.catalyst.plans.logical.CreateNamespace",
-      Seq(databaseDesc1, databaseDesc2),
+      Seq(databaseDesc1, databaseDesc2, databaseDesc3),
       CREATEDATABASE)
   }
 
@@ -97,12 +98,12 @@ object DatabaseCommands {
 
   val SetCatalogAndNamespace = {
     val cmd = 
"org.apache.spark.sql.catalyst.plans.logical.SetCatalogAndNamespace"
-    val databaseDesc1 =
+    val resolvedDbObjectDatabaseDesc =
       DatabaseDesc(
         "child",
         classOf[ResolvedDBObjectNameDatabaseExtractor],
         isInput = true)
-    val databaseDesc2 =
+    val stringSeqOptionDatabaseDesc =
       DatabaseDesc(
         "namespace",
         classOf[StringSeqOptionDatabaseExtractor],
@@ -110,7 +111,15 @@ object DatabaseCommands {
           fieldName = "catalogName",
           fieldExtractor = classOf[StringOptionCatalogExtractor])),
         isInput = true)
-    DatabaseCommandSpec(cmd, Seq(databaseDesc1, databaseDesc2), SWITCHDATABASE)
+    val resolvedNamespaceDatabaseDesc =
+      DatabaseDesc(
+        "child",
+        classOf[ResolvedNamespaceDatabaseExtractor],
+        isInput = true)
+    DatabaseCommandSpec(
+      cmd,
+      Seq(resolvedNamespaceDatabaseDesc, resolvedDbObjectDatabaseDesc, 
stringSeqOptionDatabaseDesc),
+      SWITCHDATABASE)
   }
 
   val SetNamespace = {

Reply via email to