You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sentry.apache.org by ka...@apache.org on 2017/06/23 16:00:49 UTC

sentry git commit: SENTRY-1805 Define a DB schema for HMS generation IDs(Sergio Pena, Reviewed by Alexander Kolbasov, kalyan kumar kalvagadda)

Repository: sentry
Updated Branches:
  refs/heads/sentry-ha-redesign c3e92f2f7 -> efb2a059a


SENTRY-1805 Define a DB schema for HMS generation IDs(Sergio Pena, Reviewed by Alexander Kolbasov, kalyan kumar kalvagadda)


Project: http://git-wip-us.apache.org/repos/asf/sentry/repo
Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/efb2a059
Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/efb2a059
Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/efb2a059

Branch: refs/heads/sentry-ha-redesign
Commit: efb2a059a7647d87dfec8242ff527146a6e8ef35
Parents: c3e92f2
Author: Kalyan Kumar Kalvagadda <kk...@cloudera.com>
Authored: Fri Jun 23 10:54:16 2017 -0500
Committer: Kalyan Kumar Kalvagadda <kk...@cloudera.com>
Committed: Fri Jun 23 10:54:16 2017 -0500

----------------------------------------------------------------------
 .../db/service/model/MAuthzPathsMapping.java    | 14 +++--
 .../db/service/model/MAuthzPathsSnapshotId.java | 63 ++++++++++++++++++++
 .../provider/db/service/model/package.jdo       |  9 +++
 .../db/service/persistent/SentryStore.java      |  9 ++-
 .../main/resources/007-SENTRY-1365.derby.sql    |  3 +-
 .../main/resources/007-SENTRY-1365.mysql.sql    |  2 +-
 .../main/resources/007-SENTRY-1365.oracle.sql   |  3 +-
 .../main/resources/007-SENTRY-1365.postgres.sql |  1 +
 .../main/resources/009-SENTRY-1805.derby.sql    |  8 +++
 .../main/resources/009-SENTRY-1805.mysql.sql    |  6 ++
 .../main/resources/009-SENTRY-1805.oracle.sql   |  8 +++
 .../main/resources/009-SENTRY-1805.postgres.sql |  6 ++
 .../src/main/resources/sentry-db2-1.8.0.sql     | 16 ++++-
 .../src/main/resources/sentry-derby-1.8.0.sql   | 12 +++-
 .../src/main/resources/sentry-mysql-1.8.0.sql   |  8 +++
 .../src/main/resources/sentry-oracle-1.8.0.sql  | 12 +++-
 .../main/resources/sentry-postgres-1.8.0.sql    |  8 +++
 .../sentry-upgrade-db2-1.7.0-to-1.8.0.sql       | 17 +++++-
 .../sentry-upgrade-derby-1.7.0-to-1.8.0.sql     |  1 +
 .../sentry-upgrade-mysql-1.7.0-to-1.8.0.sql     |  1 +
 .../sentry-upgrade-oracle-1.7.0-to-1.8.0.sql    |  1 +
 .../sentry-upgrade-postgres-1.7.0-to-1.8.0.sql  |  1 +
 22 files changed, 195 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MAuthzPathsMapping.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MAuthzPathsMapping.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MAuthzPathsMapping.java
index 5471a02..a38772b 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MAuthzPathsMapping.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MAuthzPathsMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.sentry.provider.db.service.model;
 
+import org.apache.sentry.provider.db.service.persistent.SentryStore;
+
 import javax.jdo.annotations.PersistenceCapable;
 import java.util.Collection;
 import java.util.HashSet;
@@ -30,11 +32,13 @@ import java.util.Set;
 @PersistenceCapable
 public class MAuthzPathsMapping {
 
+  private long authzSnapshotID;
   private String authzObjName;
   private Set<MPath> paths;
   private long createTimeMs;
 
-  public MAuthzPathsMapping(String authzObjName, Collection<String> paths) {
+  public MAuthzPathsMapping(long authzSnapshotID, String authzObjName, Collection<String> paths) {
+    this.authzSnapshotID = authzSnapshotID;
     this.authzObjName = MSentryUtil.safeIntern(authzObjName);
     this.paths = new HashSet<>(paths.size());
     for (String path : paths) {
@@ -105,8 +109,8 @@ public class MAuthzPathsMapping {
 
   @Override
   public String toString() {
-    return "MSentryPathsUpdate [authzObj=" + authzObjName + "], paths=[" + paths.toString()
-        + "], createTimeMs=[" + String.valueOf(createTimeMs) + "]";
+    return "MSentryPathsUpdate authzSnapshotID=[" + authzSnapshotID + "], authzObj=[" + authzObjName
+        + "], paths=[" + paths.toString() + "], createTimeMs=[" + String.valueOf(createTimeMs) + "]";
   }
 
   @Override
@@ -136,7 +140,9 @@ public class MAuthzPathsMapping {
       }
     } else if (!authzObjName.equals(other.authzObjName)) {
       return false;
-    }
+    } else if (authzSnapshotID != other.authzSnapshotID) {
+      return false;
+   }
 
     return true;
   }

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MAuthzPathsSnapshotId.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MAuthzPathsSnapshotId.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MAuthzPathsSnapshotId.java
new file mode 100644
index 0000000..d683c2c
--- /dev/null
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MAuthzPathsSnapshotId.java
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sentry.provider.db.service.model;
+
+import javax.jdo.annotations.PersistenceCapable;
+import javax.jdo.annotations.PrimaryKey;
+
+/**
+ * This class is used to persist new authz paths snapshots IDs. An authz path snapshot ID is required by
+ * the MAuthzPathsMapping to detect new HMS snapshots created by the HMSFollower.
+ */
+@PersistenceCapable
+public class MAuthzPathsSnapshotId {
+  @PrimaryKey
+  private long authzSnapshotID;
+
+  public MAuthzPathsSnapshotId(long authzSnapshotID) {
+    this.authzSnapshotID = authzSnapshotID;
+  }
+
+  @Override
+  public String toString() {
+    return "MAuthzPathsSnapshotId authzSnapshotID=[" + authzSnapshotID + "]";
+  }
+
+  @Override
+  public int hashCode() {
+    return (int)authzSnapshotID;
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (this == obj) {
+      return true;
+    }
+
+    if (obj == null) {
+      return false;
+    }
+
+    if (getClass() != obj.getClass()) {
+      return false;
+    }
+
+    MAuthzPathsSnapshotId other = (MAuthzPathsSnapshotId) obj;
+    return (authzSnapshotID == other.authzSnapshotID);
+  }
+}

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo
index 459939b..e8982f6 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo
@@ -237,6 +237,12 @@
       </field>
      </class>
 
+    <class name="MAuthzPathsSnapshotId" identity-type="application" table="AUTHZ_PATHS_SNAPSHOT_ID" detachable="true">
+       <field name="authzSnapshotID" primary-key="true">
+         <column name="AUTHZ_SNAPSHOT_ID" jdbc-type="BIGINT" allows-null="false"/>
+       </field>
+    </class>
+
     <class name="MAuthzPathsMapping" identity-type="datastore" table="AUTHZ_PATHS_MAPPING" detachable="true">
        <datastore-identity>
          <column name="AUTHZ_OBJ_ID"/>
@@ -259,6 +265,9 @@
              <column name="AUTHZ_OBJ_ID"/>
            </element>
        </field>
+       <field name="authzSnapshotID">
+         <column name="AUTHZ_SNAPSHOT_ID" jdbc-type="BIGINT" allows-null="false"/>
+       </field>
      </class>
 
     <class name="MPath" identity-type="datastore" table="AUTHZ_PATH" detachable="true">

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java
index f088f5c..27999cf 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java
@@ -125,6 +125,9 @@ public class SentryStore {
 
   public static final long EMPTY_NOTIFICATION_ID = 0L;
 
+  // Representation for empty HMS snapshots not found on MAuthzPathsSnapshotId
+  public static final long EMPTY_AUTHZ_SNAPSHOT_ID = 0L;
+
   // For counters, representation of the "unknown value"
   private static final long COUNT_VALUE_UNKNOWN = -1L;
 
@@ -2576,7 +2579,7 @@ public class SentryStore {
 
     if (mAuthzPathsMapping == null) {
       mAuthzPathsMapping =
-          new MAuthzPathsMapping(authzObj, paths);
+          new MAuthzPathsMapping(EMPTY_AUTHZ_SNAPSHOT_ID, authzObj, paths);
       pm.makePersistent(mAuthzPathsMapping);
     } else {
       throw new SentryAlreadyExistsException("AuthzObj: " + authzObj);
@@ -2617,7 +2620,7 @@ public class SentryStore {
         Collection<String> paths) {
     MAuthzPathsMapping mAuthzPathsMapping = getMAuthzPathsMappingCore(pm, authzObj);
     if (mAuthzPathsMapping == null) {
-      mAuthzPathsMapping = new MAuthzPathsMapping(authzObj, paths);
+      mAuthzPathsMapping = new MAuthzPathsMapping(EMPTY_AUTHZ_SNAPSHOT_ID, authzObj, paths);
     } else {
       for (String path : paths) {
         mAuthzPathsMapping.addPath(new MPath(path));
@@ -2861,7 +2864,7 @@ public class SentryStore {
 
     MAuthzPathsMapping mAuthzPathsMapping = getMAuthzPathsMappingCore(pm, authzObj);
     if (mAuthzPathsMapping == null) {
-      mAuthzPathsMapping = new MAuthzPathsMapping(authzObj, Sets.newHashSet(newPath));
+      mAuthzPathsMapping = new MAuthzPathsMapping(EMPTY_AUTHZ_SNAPSHOT_ID, authzObj, Sets.newHashSet(newPath));
     } else {
       MPath mOldPath = mAuthzPathsMapping.getPath(oldPath);
       if (mOldPath == null) {

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.derby.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.derby.sql b/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.derby.sql
index 1935ef0..d738230 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.derby.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.derby.sql
@@ -3,7 +3,8 @@ CREATE TABLE AUTHZ_PATHS_MAPPING
 (
     AUTHZ_OBJ_ID BIGINT NOT NULL generated always as identity (start with 1),
     AUTHZ_OBJ_NAME VARCHAR(384),
-    CREATE_TIME_MS BIGINT NOT NULL
+    CREATE_TIME_MS BIGINT NOT NULL,
+    AUTHZ_SNAPSHOT_ID BIGINT NOT NULL
 );
 
 ALTER TABLE AUTHZ_PATHS_MAPPING ADD CONSTRAINT AUTHZ_PATHS_MAPPING_PK PRIMARY KEY (AUTHZ_OBJ_ID);

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.mysql.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.mysql.sql b/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.mysql.sql
index 1bcbffb..84eac33 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.mysql.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.mysql.sql
@@ -4,6 +4,7 @@ CREATE TABLE `AUTHZ_PATHS_MAPPING`
     `AUTHZ_OBJ_ID` BIGINT NOT NULL AUTO_INCREMENT,
     `AUTHZ_OBJ_NAME` VARCHAR(384) BINARY NOT NULL,
     `CREATE_TIME_MS` BIGINT NOT NULL,
+    `AUTHZ_SNAPSHOT_ID` BIGINT NOT NULL,
     CONSTRAINT `AUTHZ_PATHS_MAPPING_PK` PRIMARY KEY (`AUTHZ_OBJ_ID`)
 ) ENGINE=INNODB;
 
@@ -25,5 +26,4 @@ ALTER TABLE `AUTHZ_PATH`
   ADD CONSTRAINT `AUTHZ_PATH_FK`
   FOREIGN KEY (`AUTHZ_OBJ_ID`) REFERENCES `AUTHZ_PATHS_MAPPING`(`AUTHZ_OBJ_ID`);
 
-------------------------------------------------------------------
 -- Sequences and SequenceTables
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.oracle.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.oracle.sql b/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.oracle.sql
index 081a369..d7d9679 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.oracle.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.oracle.sql
@@ -3,7 +3,8 @@ CREATE TABLE AUTHZ_PATHS_MAPPING
 (
     AUTHZ_OBJ_ID NUMBER NOT NULL,
     AUTHZ_OBJ_NAME VARCHAR2(384) NULL,
-    CREATE_TIME_MS NUMBER NOT NULL
+    CREATE_TIME_MS NUMBER NOT NULL,
+    AUTHZ_SNAPSHOT_ID NUMBER NOT NULL
 );
 
 ALTER TABLE AUTHZ_PATHS_MAPPING ADD CONSTRAINT AUTHZ_PATHS_MAPPING_PK PRIMARY KEY (AUTHZ_OBJ_ID);

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.postgres.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.postgres.sql b/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.postgres.sql
index 9456925..cf961f3 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.postgres.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/007-SENTRY-1365.postgres.sql
@@ -4,6 +4,7 @@ CREATE TABLE "AUTHZ_PATHS_MAPPING"
     "AUTHZ_OBJ_ID" SERIAL,
     "AUTHZ_OBJ_NAME" varchar(384) NULL,
     "CREATE_TIME_MS" int8 NOT NULL,
+    "AUTHZ_SNAPSHOT_ID" bigint NOT NULL,
     CONSTRAINT "AUTHZ_PATHS_MAPPING_PK" PRIMARY KEY ("AUTHZ_OBJ_ID")
 );
 

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.derby.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.derby.sql b/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.derby.sql
new file mode 100644
index 0000000..372d6a6
--- /dev/null
+++ b/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.derby.sql
@@ -0,0 +1,8 @@
+-- Table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+CREATE TABLE AUTHZ_PATHS_SNAPSHOT_ID
+(
+    AUTHZ_SNAPSHOT_ID BIGINT NOT NULL
+);
+
+-- Constraints for table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+ALTER TABLE AUTHZ_PATHS_SNAPSHOT_ID ADD CONSTRAINT AUTHZ_SNAPSHOT_ID_PK PRIMARY KEY (AUTHZ_SNAPSHOT_ID);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.mysql.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.mysql.sql b/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.mysql.sql
new file mode 100644
index 0000000..7f0e911
--- /dev/null
+++ b/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.mysql.sql
@@ -0,0 +1,6 @@
+-- Table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+CREATE TABLE `AUTHZ_PATHS_SNAPSHOT_ID`
+(
+    `AUTHZ_SNAPSHOT_ID` BIGINT NOT NULL,
+    CONSTRAINT `AUTHZ_SNAPSHOT_ID_PK` PRIMARY KEY (`AUTHZ_SNAPSHOT_ID`)
+)ENGINE=INNODB;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.oracle.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.oracle.sql b/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.oracle.sql
new file mode 100644
index 0000000..0f44bcf
--- /dev/null
+++ b/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.oracle.sql
@@ -0,0 +1,8 @@
+-- Table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+CREATE TABLE AUTHZ_PATHS_SNAPSHOT_ID
+(
+    AUTHZ_SNAPSHOT_ID NUMBER NOT NULL
+);
+
+-- Constraints for table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+ALTER TABLE AUTHZ_PATHS_SNAPSHOT_ID ADD CONSTRAINT AUTHZ_SNAPSHOT_ID_PK PRIMARY KEY (AUTHZ_SNAPSHOT_ID);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.postgres.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.postgres.sql b/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.postgres.sql
new file mode 100644
index 0000000..2ace5eb
--- /dev/null
+++ b/sentry-provider/sentry-provider-db/src/main/resources/009-SENTRY-1805.postgres.sql
@@ -0,0 +1,6 @@
+-- Table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+CREATE TABLE "AUTHZ_PATHS_SNAPSHOT_ID"
+(
+    "AUTHZ_SNAPSHOT_ID" bigint NOT NULL,
+    CONSTRAINT "AUTHZ_SNAPSHOT_ID_PK" PRIMARY KEY ("AUTHZ_SNAPSHOT_ID")
+);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-1.8.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-1.8.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-1.8.0.sql
index 83cbfe7..7ade0a4 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-1.8.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-1.8.0.sql
@@ -182,8 +182,22 @@ ALTER TABLE SENTRY_ROLE_USER_MAP ADD CONSTRAINT SENTRY_ROLE_USER_MAP_FK2 FOREIGN
 
 ALTER TABLE SENTRY_ROLE_USER_MAP ADD CONSTRAINT SENTRY_ROLE_USER_MAP_FK1 FOREIGN KEY (USER_ID) REFERENCES SENTRY_USER (USER_ID) ;
 
+-- Table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+CREATE TABLE AUTHZ_PATHS_SNAPSHOT_ID
+(
+    AUTHZ_SNAPSHOT_ID BIGINT NOT NULL
+);
+
+-- Constraints for table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+ALTER TABLE AUTHZ_PATHS_SNAPSHOT_ID ADD CONSTRAINT AUTHZ_SNAPSHOT_ID_PK PRIMARY KEY (AUTHZ_SNAPSHOT_ID);
+
 -- Table AUTHZ_PATHS_MAPPING for classes [org.apache.sentry.provider.db.service.model.MAuthzPathsMapping]
-CREATE TABLE AUTHZ_PATHS_MAPPING(AUTHZ_OBJ_ID BIGINT NOT NULL generated always as identity (start with 1),AUTHZ_OBJ_NAME VARCHAR(384),CREATE_TIME_MS BIGINT NOT NULL);
+CREATE TABLE AUTHZ_PATHS_MAPPING(
+    AUTHZ_OBJ_ID BIGINT NOT NULL generated always as identity (start with 1),
+    AUTHZ_OBJ_NAME VARCHAR(384),
+    CREATE_TIME_MS BIGINT NOT NULL,
+    AUTHZ_SNAPSHOT_ID BIGINT NOT NULL
+);
 
 ALTER TABLE AUTHZ_PATHS_MAPPING ADD CONSTRAINT AUTHZ_PATHSCO7K_PK PRIMARY KEY (AUTHZ_OBJ_ID);
 

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-1.8.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-1.8.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-1.8.0.sql
index 1024e8e..077dbe1 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-1.8.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-1.8.0.sql
@@ -182,11 +182,21 @@ ALTER TABLE SENTRY_ROLE_USER_MAP ADD CONSTRAINT SENTRY_ROLE_USER_MAP_FK2 FOREIGN
 
 ALTER TABLE SENTRY_ROLE_USER_MAP ADD CONSTRAINT SENTRY_ROLE_USER_MAP_FK1 FOREIGN KEY (USER_ID) REFERENCES SENTRY_USER (USER_ID) ;
 
+-- Table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+CREATE TABLE AUTHZ_PATHS_SNAPSHOT_ID
+(
+    AUTHZ_SNAPSHOT_ID BIGINT NOT NULL
+);
+
+-- Constraints for table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+ALTER TABLE AUTHZ_PATHS_SNAPSHOT_ID ADD CONSTRAINT AUTHZ_SNAPSHOT_ID_PK PRIMARY KEY (AUTHZ_SNAPSHOT_ID);
+
 CREATE TABLE AUTHZ_PATHS_MAPPING
 (
     AUTHZ_OBJ_ID BIGINT NOT NULL generated always as identity (start with 1),
     AUTHZ_OBJ_NAME VARCHAR(384),
-    CREATE_TIME_MS BIGINT NOT NULL
+    CREATE_TIME_MS BIGINT NOT NULL,
+    AUTHZ_SNAPSHOT_ID BIGINT NOT NULL
 );
 
 ALTER TABLE AUTHZ_PATHS_MAPPING ADD CONSTRAINT AUTHZ_PATHS_MAPPING_PK PRIMARY KEY (AUTHZ_OBJ_ID);

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-1.8.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-1.8.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-1.8.0.sql
index 2c7c8b6..4066a50 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-1.8.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-1.8.0.sql
@@ -221,12 +221,20 @@ ALTER TABLE `SENTRY_ROLE_USER_MAP`
 	 ADD CONSTRAINT `SEN_ROLE_USER_MAP_SEN_USER_FK`
 	 FOREIGN KEY (`USER_ID`) REFERENCES `SENTRY_USER`(`USER_ID`);
 
+-- Table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+CREATE TABLE `AUTHZ_PATHS_SNAPSHOT_ID`
+(
+    `AUTHZ_SNAPSHOT_ID` BIGINT NOT NULL,
+    CONSTRAINT `AUTHZ_SNAPSHOT_ID_PK` PRIMARY KEY (`AUTHZ_SNAPSHOT_ID`)
+)ENGINE=INNODB;
+
 -- Table `AUTHZ_PATHS_MAPPING` for classes [org.apache.sentry.provider.db.service.model.MAuthzPathsMapping]
 CREATE TABLE `AUTHZ_PATHS_MAPPING`
 (
     `AUTHZ_OBJ_ID` BIGINT NOT NULL AUTO_INCREMENT,
     `AUTHZ_OBJ_NAME` VARCHAR(384) BINARY NULL,
     `CREATE_TIME_MS` BIGINT NOT NULL,
+    `AUTHZ_SNAPSHOT_ID` BIGINT NOT NULL,
     CONSTRAINT `AUTHZ_PATHS_MAPPING_PK` PRIMARY KEY (`AUTHZ_OBJ_ID`)
 ) ENGINE=INNODB;
 

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-1.8.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-1.8.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-1.8.0.sql
index 590d48c..b02294a 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-1.8.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-1.8.0.sql
@@ -196,12 +196,22 @@ ALTER TABLE "SENTRY_ROLE_USER_MAP"
   ADD CONSTRAINT "SEN_ROLE_USER_MAP_SEN_USER_FK"
   FOREIGN KEY ("USER_ID") REFERENCES "SENTRY_USER"("USER_ID") INITIALLY DEFERRED;
 
+-- Table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+CREATE TABLE "AUTHZ_PATHS_SNAPSHOT_ID"
+(
+    "AUTHZ_SNAPSHOT_ID" NUMBER NOT NULL
+);
+
+-- Constraints for table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+ALTER TABLE "AUTHZ_PATHS_SNAPSHOT_ID" ADD CONSTRAINT "AUTHZ_SNAPSHOT_ID_PK" PRIMARY KEY ("AUTHZ_SNAPSHOT_ID");
+
 -- Table AUTHZ_PATHS_MAPPING for classes [org.apache.sentry.provider.db.service.model.MAuthzPathsMapping]
 CREATE TABLE AUTHZ_PATHS_MAPPING
 (
     AUTHZ_OBJ_ID NUMBER NOT NULL,
     AUTHZ_OBJ_NAME VARCHAR2(384) NULL,
-    CREATE_TIME_MS NUMBER NOT NULL
+    CREATE_TIME_MS NUMBER NOT NULL,
+    "AUTHZ_SNAPSHOT_ID" NUMBER NOT NULL
 );
 
 ALTER TABLE AUTHZ_PATHS_MAPPING ADD CONSTRAINT AUTHZ_PATHS_MAPPING_PK PRIMARY KEY (AUTHZ_OBJ_ID);

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-1.8.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-1.8.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-1.8.0.sql
index 125be9e..f325eb6 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-1.8.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-1.8.0.sql
@@ -208,12 +208,20 @@ ALTER TABLE ONLY "SENTRY_ROLE_USER_MAP"
   ADD CONSTRAINT "SEN_ROLE_USER_MAP_SEN_USER_FK"
   FOREIGN KEY ("USER_ID") REFERENCES "SENTRY_USER"("USER_ID") DEFERRABLE;
 
+-- Table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+CREATE TABLE "AUTHZ_PATHS_SNAPSHOT_ID"
+(
+    "AUTHZ_SNAPSHOT_ID" bigint NOT NULL,
+    CONSTRAINT "AUTHZ_SNAPSHOT_ID_PK" PRIMARY KEY ("AUTHZ_SNAPSHOT_ID")
+);
+
 -- Table "AUTHZ_PATHS_MAPPING" for classes [org.apache.sentry.provider.db.service.model.MAuthzPathsMapping]
 CREATE TABLE "AUTHZ_PATHS_MAPPING"
 (
     "AUTHZ_OBJ_ID" SERIAL,
     "AUTHZ_OBJ_NAME" varchar(384) NULL,
     "CREATE_TIME_MS" int8 NOT NULL,
+    "AUTHZ_SNAPSHOT_ID" bigint NOT NULL,
     CONSTRAINT "AUTHZ_PATHS_MAPPING_PK" PRIMARY KEY ("AUTHZ_OBJ_ID")
 );
 

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-1.7.0-to-1.8.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-1.7.0-to-1.8.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-1.7.0-to-1.8.0.sql
index c7d11d3..8cb8eeb 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-1.7.0-to-1.8.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-1.7.0-to-1.8.0.sql
@@ -27,9 +27,24 @@ ALTER TABLE SENTRY_ROLE_USER_MAP ADD CONSTRAINT SENTRY_ROLE_USER_MAP_FK2 FOREIGN
 
 ALTER TABLE SENTRY_ROLE_USER_MAP ADD CONSTRAINT SENTRY_ROLE_USER_MAP_FK1 FOREIGN KEY (USER_ID) REFERENCES SENTRY_USER (USER_ID) ;
 
+-- SENTRY-1805
+-- Table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+CREATE TABLE AUTHZ_PATHS_SNAPSHOT_ID
+(
+    AUTHZ_SNAPSHOT_ID bigint NOT NULL
+);
+
+-- Constraints for table AUTHZ_PATHS_SNAPSHOT_ID for class [org.apache.sentry.provider.db.service.model.MAuthzPathsSnapshotId]
+ALTER TABLE AUTHZ_PATHS_SNAPSHOT_ID ADD CONSTRAINT AUTHZ_SNAPSHOT_ID_PK PRIMARY KEY (AUTHZ_SNAPSHOT_ID);
+
 -- SENTRY-1365
 -- Table AUTHZ_PATHS_MAPPING for classes [org.apache.sentry.provider.db.service.model.MAuthzPathsMapping]
- CREATE TABLE AUTHZ_PATHS_MAPPING(AUTHZ_OBJ_ID BIGINT NOT NULL generated always as identity (start with 1),AUTHZ_OBJ_NAME VARCHAR(384),CREATE_TIME_MS BIGINT NOT NULL);
+ CREATE TABLE AUTHZ_PATHS_MAPPING(
+    AUTHZ_OBJ_ID BIGINT NOT NULL generated always as identity (start with 1),
+    AUTHZ_OBJ_NAME VARCHAR(384),
+    CREATE_TIME_MS BIGINT NOT NULL,
+    AUTHZ_SNAPSHOT_ID BIGINT NOT NULL
+);
 
  ALTER TABLE AUTHZ_PATHS_MAPPING ADD CONSTRAINT AUTHZ_PATHSCO7K_PK PRIMARY KEY (AUTHZ_OBJ_ID);
 

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-derby-1.7.0-to-1.8.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-derby-1.7.0-to-1.8.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-derby-1.7.0-to-1.8.0.sql
index dc3021a..30397f7 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-derby-1.7.0-to-1.8.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-derby-1.7.0-to-1.8.0.sql
@@ -1,6 +1,7 @@
 RUN '006-SENTRY-711.derby.sql';
 RUN '007-SENTRY-1365.derby.sql';
 RUN '008-SENTRY-1569.derby.sql';
+RUN '009-SENTRY-1805.derby.sql';
 
 -- Version update
 UPDATE SENTRY_VERSION SET SCHEMA_VERSION='1.8.0', VERSION_COMMENT='Sentry release version 1.8.0' WHERE VER_ID=1;

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-mysql-1.7.0-to-1.8.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-mysql-1.7.0-to-1.8.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-mysql-1.7.0-to-1.8.0.sql
index ef1c651..0a95571 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-mysql-1.7.0-to-1.8.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-mysql-1.7.0-to-1.8.0.sql
@@ -2,6 +2,7 @@ SELECT 'Upgrading Sentry store schema from 1.7.0 to 1.8.0' AS ' ';
 SOURCE 006-SENTRY-711.mysql.sql;
 SOURCE 007-SENTRY-1365.mysql.sql;
 SOURCE 008-SENTRY-1569.mysql.sql;
+SOURCE 009-SENTRY-1805.mysql.sql;
 
 UPDATE SENTRY_VERSION SET SCHEMA_VERSION='1.8.0', VERSION_COMMENT='Sentry release version 1.8.0' WHERE VER_ID=1;
 

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-oracle-1.7.0-to-1.8.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-oracle-1.7.0-to-1.8.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-oracle-1.7.0-to-1.8.0.sql
index f4a50de..3241ef9 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-oracle-1.7.0-to-1.8.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-oracle-1.7.0-to-1.8.0.sql
@@ -2,6 +2,7 @@ SELECT 'Upgrading Sentry store schema from 1.7.0 to 1.8.0' AS Status from dual;
 @006-SENTRY-711.oracle.sql;
 @007-SENTRY-1365.oracle.sql;
 @008-SENTRY-1569.oracle.sql;
+@009-SENTRY-1805.oracle.sql;
 
 UPDATE SENTRY_VERSION SET SCHEMA_VERSION='1.8.0', VERSION_COMMENT='Sentry release version 1.8.0' WHERE VER_ID=1;
 

http://git-wip-us.apache.org/repos/asf/sentry/blob/efb2a059/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-postgres-1.7.0-to-1.8.0.sql
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-postgres-1.7.0-to-1.8.0.sql b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-postgres-1.7.0-to-1.8.0.sql
index db010bc..af362f6 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-postgres-1.7.0-to-1.8.0.sql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-postgres-1.7.0-to-1.8.0.sql
@@ -2,6 +2,7 @@ SELECT 'Upgrading Sentry store schema from 1.7.0 to 1.8.0';
 \i 006-SENTRY-711.postgres.sql;
 \i 007-SENTRY-1365.postgres.sql;
 \i 008-SENTRY-1569.postgres.sql;
+\i 009-SENTRY-1805.postgres.sql;
 
 UPDATE "SENTRY_VERSION" SET "SCHEMA_VERSION"='1.8.0', "VERSION_COMMENT"='Sentry release version 1.8.0' WHERE "VER_ID"=1;