You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@kyuubi.apache.org by GitBox <gi...@apache.org> on 2022/10/21 15:55:50 UTC
[GitHub] [incubator-kyuubi] zhouyifan279 opened a new pull request, #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
zhouyifan279 opened a new pull request, #3678:
URL: https://github.com/apache/incubator-kyuubi/pull/3678
### _Why are the changes needed?_
Subtask of #3607
### _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
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For additional commands, e-mail: notifications-help@kyuubi.apache.org
[GitHub] [incubator-kyuubi] zhouyifan279 commented on a diff in pull request #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
Posted by GitBox <gi...@apache.org>.
zhouyifan279 commented on code in PR #3678:
URL: https://github.com/apache/incubator-kyuubi/pull/3678#discussion_r1002716465
##########
extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/PrivilegesBuilderSuite.scala:
##########
@@ -123,24 +123,34 @@ abstract class PrivilegesBuilderSuite extends AnyFunSuite
test("AlterTableRenameCommand") {
withTable(s"$reusedDb.efg") { t =>
- sql(s"CREATE TABLE IF NOT EXISTS ${reusedTable}_old" +
- s" (key int, value string) USING parquet")
- // toLowerCase because of: SPARK-38587
- val plan =
- sql(s"ALTER TABLE ${reusedDb.toLowerCase}.${getClass.getSimpleName}_old" +
- s" RENAME TO $t").queryExecution.analyzed
- val operationType = OperationType(plan.nodeName)
- assert(operationType === ALTERTABLE_RENAME)
- val tuple = PrivilegesBuilder.build(plan, spark)
- assert(tuple._1.isEmpty)
- assert(tuple._2.size === 2)
- tuple._2.foreach { po =>
- assert(po.privilegeObjectType === PrivilegeObjectType.TABLE_OR_VIEW)
- assert(po.dbname equalsIgnoreCase reusedDb)
- assert(Set(reusedDb + "_old", "efg").contains(po.objectName))
- assert(po.columns.isEmpty)
- val accessType = ranger.AccessType(po, operationType, isInput = false)
- assert(Set(AccessType.CREATE, AccessType.DROP).contains(accessType))
+ withTable(s"${reusedTable}_old") { oldTable =>
+ val oldTableShort = oldTable.split("\\.").last
+ val create = s"CREATE TABLE IF NOT EXISTS $oldTable" +
+ s" (key int, value string) USING parquet"
+ sql(create)
+ // toLowerCase because of: SPARK-38587
+ val plan =
+ sql(s"ALTER TABLE ${reusedDb.toLowerCase}.$oldTableShort" +
+ s" RENAME TO $t").queryExecution.analyzed
+ // re-create oldTable because we needs to get table owner from table metadata later
+ sql(create)
+
+ val operationType = OperationType(plan.nodeName)
+ assert(operationType === ALTERTABLE_RENAME)
+ val tuple = PrivilegesBuilder.build(plan, spark)
Review Comment:
Quite a lot places need to change. I suggest to import them in a separate PR.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For additional commands, e-mail: notifications-help@kyuubi.apache.org
[GitHub] [incubator-kyuubi] pan3793 closed pull request #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
Posted by GitBox <gi...@apache.org>.
pan3793 closed pull request #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
URL: https://github.com/apache/incubator-kyuubi/pull/3678
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For additional commands, e-mail: notifications-help@kyuubi.apache.org
[GitHub] [incubator-kyuubi] pan3793 commented on a diff in pull request #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
Posted by GitBox <gi...@apache.org>.
pan3793 commented on code in PR #3678:
URL: https://github.com/apache/incubator-kyuubi/pull/3678#discussion_r1002716670
##########
extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/PrivilegesBuilderSuite.scala:
##########
@@ -123,24 +123,34 @@ abstract class PrivilegesBuilderSuite extends AnyFunSuite
test("AlterTableRenameCommand") {
withTable(s"$reusedDb.efg") { t =>
- sql(s"CREATE TABLE IF NOT EXISTS ${reusedTable}_old" +
- s" (key int, value string) USING parquet")
- // toLowerCase because of: SPARK-38587
- val plan =
- sql(s"ALTER TABLE ${reusedDb.toLowerCase}.${getClass.getSimpleName}_old" +
- s" RENAME TO $t").queryExecution.analyzed
- val operationType = OperationType(plan.nodeName)
- assert(operationType === ALTERTABLE_RENAME)
- val tuple = PrivilegesBuilder.build(plan, spark)
- assert(tuple._1.isEmpty)
- assert(tuple._2.size === 2)
- tuple._2.foreach { po =>
- assert(po.privilegeObjectType === PrivilegeObjectType.TABLE_OR_VIEW)
- assert(po.dbname equalsIgnoreCase reusedDb)
- assert(Set(reusedDb + "_old", "efg").contains(po.objectName))
- assert(po.columns.isEmpty)
- val accessType = ranger.AccessType(po, operationType, isInput = false)
- assert(Set(AccessType.CREATE, AccessType.DROP).contains(accessType))
+ withTable(s"${reusedTable}_old") { oldTable =>
+ val oldTableShort = oldTable.split("\\.").last
+ val create = s"CREATE TABLE IF NOT EXISTS $oldTable" +
+ s" (key int, value string) USING parquet"
+ sql(create)
+ // toLowerCase because of: SPARK-38587
+ val plan =
+ sql(s"ALTER TABLE ${reusedDb.toLowerCase}.$oldTableShort" +
+ s" RENAME TO $t").queryExecution.analyzed
+ // re-create oldTable because we needs to get table owner from table metadata later
+ sql(create)
+
+ val operationType = OperationType(plan.nodeName)
+ assert(operationType === ALTERTABLE_RENAME)
+ val tuple = PrivilegesBuilder.build(plan, spark)
Review Comment:
it's fine
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For additional commands, e-mail: notifications-help@kyuubi.apache.org
[GitHub] [incubator-kyuubi] codecov-commenter commented on pull request #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
Posted by GitBox <gi...@apache.org>.
codecov-commenter commented on PR #3678:
URL: https://github.com/apache/incubator-kyuubi/pull/3678#issuecomment-1288004057
# [Codecov](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) Report
> Merging [#3678](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (5921596) into [master](https://codecov.io/gh/apache/incubator-kyuubi/commit/b2210d928c953d87c5fbc9faee78d7c69c8d0d26?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (b2210d9) will **increase** coverage by `0.02%`.
> The diff coverage is `69.49%`.
```diff
@@ Coverage Diff @@
## master #3678 +/- ##
============================================
+ Coverage 52.11% 52.13% +0.02%
Complexity 13 13
============================================
Files 485 485
Lines 27274 27297 +23
Branches 3804 3805 +1
============================================
+ Hits 14213 14232 +19
- Misses 11687 11693 +6
+ Partials 1374 1372 -2
```
| [Impacted Files](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) | Coverage Δ | |
|---|---|---|
| [...he/kyuubi/plugin/spark/authz/util/AuthZUtils.scala](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-ZXh0ZW5zaW9ucy9zcGFyay9reXV1Ymktc3BhcmstYXV0aHovc3JjL21haW4vc2NhbGEvb3JnL2FwYWNoZS9reXV1YmkvcGx1Z2luL3NwYXJrL2F1dGh6L3V0aWwvQXV0aFpVdGlscy5zY2FsYQ==) | `54.71% <33.33%> (-6.99%)` | :arrow_down: |
| [.../kyuubi/plugin/spark/authz/PrivilegesBuilder.scala](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-ZXh0ZW5zaW9ucy9zcGFyay9reXV1Ymktc3BhcmstYXV0aHovc3JjL21haW4vc2NhbGEvb3JnL2FwYWNoZS9reXV1YmkvcGx1Z2luL3NwYXJrL2F1dGh6L1ByaXZpbGVnZXNCdWlsZGVyLnNjYWxh) | `71.07% <76.00%> (-0.32%)` | :arrow_down: |
| [...rg/apache/kyuubi/ctl/cmd/log/LogBatchCommand.scala](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-a3l1dWJpLWN0bC9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2t5dXViaS9jdGwvY21kL2xvZy9Mb2dCYXRjaENvbW1hbmQuc2NhbGE=) | `78.00% <0.00%> (-2.00%)` | :arrow_down: |
| [...n/scala/org/apache/kyuubi/engine/ProcBuilder.scala](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-a3l1dWJpLXNlcnZlci9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2t5dXViaS9lbmdpbmUvUHJvY0J1aWxkZXIuc2NhbGE=) | `80.74% <0.00%> (-0.63%)` | :arrow_down: |
| [...g/apache/kyuubi/operation/BatchJobSubmission.scala](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-a3l1dWJpLXNlcnZlci9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2t5dXViaS9vcGVyYXRpb24vQmF0Y2hKb2JTdWJtaXNzaW9uLnNjYWxh) | `74.64% <0.00%> (ø)` | |
| [...ain/scala/org/apache/kyuubi/engine/EngineRef.scala](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-a3l1dWJpLXNlcnZlci9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2t5dXViaS9lbmdpbmUvRW5naW5lUmVmLnNjYWxh) | `73.10% <0.00%> (+0.84%)` | :arrow_up: |
| [...ache/kyuubi/server/mysql/MySQLGenericPackets.scala](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-a3l1dWJpLXNlcnZlci9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2t5dXViaS9zZXJ2ZXIvbXlzcWwvTXlTUUxHZW5lcmljUGFja2V0cy5zY2FsYQ==) | `78.72% <0.00%> (+2.12%)` | :arrow_up: |
| [...ache/kyuubi/server/mysql/MySQLCommandHandler.scala](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-a3l1dWJpLXNlcnZlci9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2t5dXViaS9zZXJ2ZXIvbXlzcWwvTXlTUUxDb21tYW5kSGFuZGxlci5zY2FsYQ==) | `79.54% <0.00%> (+4.54%)` | :arrow_up: |
| [.../kyuubi/server/mysql/constant/MySQLErrorCode.scala](https://codecov.io/gh/apache/incubator-kyuubi/pull/3678/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-a3l1dWJpLXNlcnZlci9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2t5dXViaS9zZXJ2ZXIvbXlzcWwvY29uc3RhbnQvTXlTUUxFcnJvckNvZGUuc2NhbGE=) | `20.00% <0.00%> (+6.15%)` | :arrow_up: |
:mega: We’re building smart automated test selection to slash your CI/CD build times. [Learn more](https://about.codecov.io/iterative-testing/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For additional commands, e-mail: notifications-help@kyuubi.apache.org
[GitHub] [incubator-kyuubi] zhouyifan279 commented on a diff in pull request #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
Posted by GitBox <gi...@apache.org>.
zhouyifan279 commented on code in PR #3678:
URL: https://github.com/apache/incubator-kyuubi/pull/3678#discussion_r1002716600
##########
extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/PrivilegesBuilderSuite.scala:
##########
@@ -332,8 +348,11 @@ abstract class PrivilegesBuilderSuite extends AnyFunSuite
assert(po0.privilegeObjectType === PrivilegeObjectType.TABLE_OR_VIEW)
assert(po0.dbname equalsIgnoreCase reusedDb)
assert(po0.objectName equalsIgnoreCase reusedPartTableShort)
- // ignore this check as it behaves differently across spark versions
- // assert(po0.columns === Seq("key", "value", "pid"))
+ if (isSparkV32OrGreater) {
+ // ignore this check as it behaves differently across spark versions
Review Comment:
Done
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For additional commands, e-mail: notifications-help@kyuubi.apache.org
[GitHub] [incubator-kyuubi] pan3793 commented on pull request #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
Posted by GitBox <gi...@apache.org>.
pan3793 commented on PR #3678:
URL: https://github.com/apache/incubator-kyuubi/pull/3678#issuecomment-1288122066
Thanks, merging to master
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For additional commands, e-mail: notifications-help@kyuubi.apache.org
[GitHub] [incubator-kyuubi] pan3793 commented on a diff in pull request #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
Posted by GitBox <gi...@apache.org>.
pan3793 commented on code in PR #3678:
URL: https://github.com/apache/incubator-kyuubi/pull/3678#discussion_r1002685236
##########
extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/PrivilegesBuilderSuite.scala:
##########
@@ -332,8 +348,11 @@ abstract class PrivilegesBuilderSuite extends AnyFunSuite
assert(po0.privilegeObjectType === PrivilegeObjectType.TABLE_OR_VIEW)
assert(po0.dbname equalsIgnoreCase reusedDb)
assert(po0.objectName equalsIgnoreCase reusedPartTableShort)
- // ignore this check as it behaves differently across spark versions
- // assert(po0.columns === Seq("key", "value", "pid"))
+ if (isSparkV32OrGreater) {
+ // ignore this check as it behaves differently across spark versions
Review Comment:
it's better to link a JIRA ticket which changes the behavior
##########
extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/PrivilegesBuilderSuite.scala:
##########
@@ -123,24 +123,34 @@ abstract class PrivilegesBuilderSuite extends AnyFunSuite
test("AlterTableRenameCommand") {
withTable(s"$reusedDb.efg") { t =>
- sql(s"CREATE TABLE IF NOT EXISTS ${reusedTable}_old" +
- s" (key int, value string) USING parquet")
- // toLowerCase because of: SPARK-38587
- val plan =
- sql(s"ALTER TABLE ${reusedDb.toLowerCase}.${getClass.getSimpleName}_old" +
- s" RENAME TO $t").queryExecution.analyzed
- val operationType = OperationType(plan.nodeName)
- assert(operationType === ALTERTABLE_RENAME)
- val tuple = PrivilegesBuilder.build(plan, spark)
- assert(tuple._1.isEmpty)
- assert(tuple._2.size === 2)
- tuple._2.foreach { po =>
- assert(po.privilegeObjectType === PrivilegeObjectType.TABLE_OR_VIEW)
- assert(po.dbname equalsIgnoreCase reusedDb)
- assert(Set(reusedDb + "_old", "efg").contains(po.objectName))
- assert(po.columns.isEmpty)
- val accessType = ranger.AccessType(po, operationType, isInput = false)
- assert(Set(AccessType.CREATE, AccessType.DROP).contains(accessType))
+ withTable(s"${reusedTable}_old") { oldTable =>
+ val oldTableShort = oldTable.split("\\.").last
+ val create = s"CREATE TABLE IF NOT EXISTS $oldTable" +
+ s" (key int, value string) USING parquet"
+ sql(create)
+ // toLowerCase because of: SPARK-38587
+ val plan =
+ sql(s"ALTER TABLE ${reusedDb.toLowerCase}.$oldTableShort" +
+ s" RENAME TO $t").queryExecution.analyzed
+ // re-create oldTable because we needs to get table owner from table metadata later
+ sql(create)
+
+ val operationType = OperationType(plan.nodeName)
+ assert(operationType === ALTERTABLE_RENAME)
+ val tuple = PrivilegesBuilder.build(plan, spark)
Review Comment:
nit
```suggestion
val (in, out) = PrivilegesBuilder.build(plan, spark)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For additional commands, e-mail: notifications-help@kyuubi.apache.org
[GitHub] [incubator-kyuubi] zhouyifan279 commented on pull request #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
Posted by GitBox <gi...@apache.org>.
zhouyifan279 commented on PR #3678:
URL: https://github.com/apache/incubator-kyuubi/pull/3678#issuecomment-1288078688
cc @bowenliang123 @pan3793
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For additional commands, e-mail: notifications-help@kyuubi.apache.org
[GitHub] [incubator-kyuubi] bowenliang123 commented on pull request #3678: [KYUUBI #3672][Subtask] Get table owner for DDL/DML v1 commands
Posted by GitBox <gi...@apache.org>.
bowenliang123 commented on PR #3678:
URL: https://github.com/apache/incubator-kyuubi/pull/3678#issuecomment-1288088719
LGTM
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@kyuubi.apache.org
For additional commands, e-mail: notifications-help@kyuubi.apache.org