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

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


The following commit(s) were added to refs/heads/master by this push:
     new b09e5ced97 [fix](priv) fix meta replay bug when upgrading from 1.1.x 
to 1.2.x (#14046)
b09e5ced97 is described below

commit b09e5ced973cffb0ab03b1c37f15fdd40567d718
Author: Mingyu Chen <morning...@163.com>
AuthorDate: Tue Nov 8 10:43:33 2022 +0800

    [fix](priv) fix meta replay bug when upgrading from 1.1.x to 1.2.x (#14046)
---
 .../java/org/apache/doris/mysql/privilege/PrivBitSet.java |  2 +-
 .../org/apache/doris/mysql/privilege/UserPrivTable.java   |  2 +-
 .../org/apache/doris/mysql/privilege/PrivEntryTest.java   | 15 +++++++++++++++
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/PrivBitSet.java 
b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/PrivBitSet.java
index 3f1b844775..a5a46cb294 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/PrivBitSet.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/PrivBitSet.java
@@ -53,7 +53,7 @@ public class PrivBitSet implements Writable {
 
     public void unset(int index) {
         Preconditions.checkState(index < PaloPrivilege.privileges.length, 
index);
-        set ^= 1 << index;
+        set &= ~(1 << index);
     }
 
     public boolean get(int index) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/UserPrivTable.java 
b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/UserPrivTable.java
index 767ee15b8d..b69b1157d5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/UserPrivTable.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/UserPrivTable.java
@@ -209,7 +209,7 @@ public class UserPrivTable extends PrivTable {
                 try {
                     // USAGE_PRIV is no need to degrade.
                     PrivBitSet removeUsagePriv = 
globalPrivEntry.privSet.copy();
-                    
removeUsagePriv.xor(PrivBitSet.of(PaloPrivilege.USAGE_PRIV));
+                    removeUsagePriv.unset(PaloPrivilege.USAGE_PRIV.getIdx());
                     CatalogPrivEntry entry = 
CatalogPrivEntry.create(globalPrivEntry.origUser, globalPrivEntry.origHost,
                             InternalCatalog.INTERNAL_CATALOG_NAME, 
globalPrivEntry.isDomain, removeUsagePriv);
                     entry.setSetByDomainResolver(false);
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/PrivEntryTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/PrivEntryTest.java
index 0a261c0951..16e31f4a68 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/PrivEntryTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/PrivEntryTest.java
@@ -45,4 +45,19 @@ public class PrivEntryTest {
         tablePrivTable.getPrivs(userIdentity, 
InternalCatalog.INTERNAL_CATALOG_NAME, "db_db1", "tbl_tbl1", privs2);
         Assert.assertTrue(PaloPrivilege.satisfy(privs2, PrivPredicate.DROP));
     }
+
+    @Test
+    public void testPrivBitSet() {
+        PrivBitSet privBitSet = PrivBitSet.of(PaloPrivilege.ADMIN_PRIV, 
PaloPrivilege.NODE_PRIV);
+        Assert.assertTrue(privBitSet.containsPrivs(PaloPrivilege.ADMIN_PRIV));
+        Assert.assertTrue(privBitSet.containsPrivs(PaloPrivilege.NODE_PRIV));
+        privBitSet.set(PaloPrivilege.DROP_PRIV.getIdx());
+        Assert.assertTrue(privBitSet.containsPrivs(PaloPrivilege.DROP_PRIV));
+        privBitSet.set(PaloPrivilege.DROP_PRIV.getIdx());
+        Assert.assertTrue(privBitSet.containsPrivs(PaloPrivilege.DROP_PRIV));
+        privBitSet.unset(PaloPrivilege.NODE_PRIV.getIdx());
+        Assert.assertFalse(privBitSet.containsPrivs(PaloPrivilege.NODE_PRIV));
+        privBitSet.unset(PaloPrivilege.NODE_PRIV.getIdx());
+        Assert.assertFalse(privBitSet.containsPrivs(PaloPrivilege.NODE_PRIV));
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to