Repository: sentry
Updated Branches:
  refs/heads/master 44ada78c3 -> b31210701


SENTRY-2407: SentrySchemaInfo and SQL scripts do not have the new 2.2.0 version 
(Na Li, reviewed by Sergio Pena)


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

Branch: refs/heads/master
Commit: b31210701ab73eda7cd0ac53097f9963c3bc0e64
Parents: 44ada78
Author: lina.li <lina...@cloudera.com>
Authored: Wed Sep 19 22:33:10 2018 -0500
Committer: lina.li <lina...@cloudera.com>
Committed: Wed Sep 19 22:34:43 2018 -0500

----------------------------------------------------------------------
 .../src/main/resources/sentry-db2-2.2.0.sql     | 273 ++++++++++++++++
 .../src/main/resources/sentry-derby-2.2.0.sql   | 276 ++++++++++++++++
 .../src/main/resources/sentry-mysql-2.2.0.sql   | 311 +++++++++++++++++++
 .../src/main/resources/sentry-oracle-2.2.0.sql  | 291 +++++++++++++++++
 .../main/resources/sentry-postgres-2.2.0.sql    | 301 ++++++++++++++++++
 .../sentry-upgrade-db2-2.1.0-to-2.2.0.sql       |   2 +
 .../sentry-upgrade-derby-2.1.0-to-2.2.0.sql     |   2 +
 .../sentry-upgrade-mysql-2.1.0-to-2.2.0.sql     |   5 +
 .../sentry-upgrade-oracle-2.1.0-to-2.2.0.sql    |   6 +
 .../sentry-upgrade-postgres-2.1.0-to-2.2.0.sql  |   6 +
 .../src/main/resources/upgrade.order.db2        |   3 +-
 .../src/main/resources/upgrade.order.derby      |   1 +
 .../src/main/resources/upgrade.order.mysql      |   1 +
 .../src/main/resources/upgrade.order.oracle     |   1 +
 .../src/main/resources/upgrade.order.postgres   |   1 +
 .../persistent/SentryStoreSchemaInfo.java       |   2 +-
 16 files changed, 1480 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-2.2.0.sql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-2.2.0.sql 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-2.2.0.sql
new file mode 100644
index 0000000..86c7c56
--- /dev/null
+++ b/sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-2.2.0.sql
@@ -0,0 +1,273 @@
+--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.
+
+-- Table SENTRY_DB_PRIVILEGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryPrivilege]
+CREATE TABLE SENTRY_DB_PRIVILEGE
+(
+    DB_PRIVILEGE_ID BIGINT NOT NULL generated always as identity (start with 
1),
+    URI VARCHAR(4000),
+    "ACTION" VARCHAR(40),
+    CREATE_TIME BIGINT NOT NULL,
+    DB_NAME VARCHAR(4000),
+    PRIVILEGE_SCOPE VARCHAR(40),
+    "SERVER_NAME" VARCHAR(4000),
+    "TABLE_NAME" VARCHAR(4000),
+    "COLUMN_NAME" VARCHAR(4000),
+    WITH_GRANT_OPTION CHAR(1) NOT NULL
+);
+
+ALTER TABLE SENTRY_DB_PRIVILEGE ADD CONSTRAINT SENTRY_DB_PRIVILEGE_PK PRIMARY 
KEY (DB_PRIVILEGE_ID);
+
+-- Table SENTRY_ROLE for classes 
[org.apache.sentry.provider.db.service.model.MSentryRole]
+CREATE TABLE SENTRY_ROLE
+(
+    ROLE_ID BIGINT NOT NULL generated always as identity (start with 1),
+    CREATE_TIME BIGINT NOT NULL,
+    ROLE_NAME VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_ROLE ADD CONSTRAINT SENTRY_ROLE_PK PRIMARY KEY (ROLE_ID);
+
+-- Table SENTRY_GROUP for classes 
[org.apache.sentry.provider.db.service.model.MSentryGroup]
+CREATE TABLE SENTRY_GROUP
+(
+    GROUP_ID BIGINT NOT NULL generated always as identity (start with 1),
+    CREATE_TIME BIGINT NOT NULL,
+    GROUP_NAME VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_GROUP ADD CONSTRAINT SENTRY_GROUP_PK PRIMARY KEY (GROUP_ID);
+
+-- Table SENTRY_ROLE_GROUP_MAP for join relationship
+CREATE TABLE SENTRY_ROLE_GROUP_MAP
+(
+    GROUP_ID BIGINT NOT NULL,
+    ROLE_ID BIGINT NOT NULL,
+    GRANTOR_PRINCIPAL VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_ROLE_GROUP_MAP ADD CONSTRAINT SENTRY_ROLE_GROUP_MAP_PK 
PRIMARY KEY (GROUP_ID,ROLE_ID);
+
+-- Table SENTRY_ROLE_DB_PRIVILEGE_MAP for join relationship
+CREATE TABLE SENTRY_ROLE_DB_PRIVILEGE_MAP
+(
+    ROLE_ID BIGINT NOT NULL,
+    DB_PRIVILEGE_ID BIGINT NOT NULL,
+    GRANTOR_PRINCIPAL VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_ROLE_DB_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_DB_PRIVILEGE_MAP_PK PRIMARY KEY (ROLE_ID,DB_PRIVILEGE_ID);
+
+CREATE TABLE "SENTRY_VERSION" (
+  VER_ID BIGINT NOT NULL,
+  SCHEMA_VERSION VARCHAR(127),
+  VERSION_COMMENT VARCHAR(255)
+);
+
+ALTER TABLE SENTRY_VERSION ADD CONSTRAINT SENTRY_VERSION_PK PRIMARY KEY 
(VER_ID);
+
+-- Constraints for table SENTRY_DB_PRIVILEGE for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryPrivilege]
+CREATE UNIQUE INDEX SENTRYPRIVILEGENAME ON SENTRY_DB_PRIVILEGE 
("SERVER_NAME",DB_NAME,"TABLE_NAME","COLUMN_NAME",URI,"ACTION",WITH_GRANT_OPTION);
+
+
+-- Constraints for table SENTRY_ROLE for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryRole]
+CREATE UNIQUE INDEX SENTRYROLENAME ON SENTRY_ROLE (ROLE_NAME);
+
+
+-- Constraints for table SENTRY_GROUP for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryGroup]
+CREATE UNIQUE INDEX SENTRYGROUPNAME ON SENTRY_GROUP (GROUP_NAME);
+
+
+-- Constraints for table SENTRY_ROLE_GROUP_MAP
+CREATE INDEX SENTRY_ROLE_GROUP_MAP_N49 ON SENTRY_ROLE_GROUP_MAP (GROUP_ID);
+
+CREATE INDEX SENTRY_ROLE_GROUP_MAP_N50 ON SENTRY_ROLE_GROUP_MAP (ROLE_ID);
+
+ALTER TABLE SENTRY_ROLE_GROUP_MAP ADD CONSTRAINT SENTRY_ROLE_GROUP_MAP_FK2 
FOREIGN KEY (ROLE_ID) REFERENCES SENTRY_ROLE (ROLE_ID) ;
+
+ALTER TABLE SENTRY_ROLE_GROUP_MAP ADD CONSTRAINT SENTRY_ROLE_GROUP_MAP_FK1 
FOREIGN KEY (GROUP_ID) REFERENCES SENTRY_GROUP (GROUP_ID) ;
+
+
+-- Constraints for table SENTRY_ROLE_DB_PRIVILEGE_MAP
+CREATE INDEX SENTRY_ROLE_DB_PRIVILEGE_MAP_N50 ON SENTRY_ROLE_DB_PRIVILEGE_MAP 
(ROLE_ID);
+
+CREATE INDEX SENTRY_ROLE_DB_PRIVILEGE_MAP_N49 ON SENTRY_ROLE_DB_PRIVILEGE_MAP 
(DB_PRIVILEGE_ID);
+
+ALTER TABLE SENTRY_ROLE_DB_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_DB_PRIVILEGE_MAP_FK2 FOREIGN KEY (DB_PRIVILEGE_ID) REFERENCES 
SENTRY_DB_PRIVILEGE (DB_PRIVILEGE_ID) ;
+
+ALTER TABLE SENTRY_ROLE_DB_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_DB_PRIVILEGE_MAP_FK1 FOREIGN KEY (ROLE_ID) REFERENCES SENTRY_ROLE 
(ROLE_ID) ;
+
+INSERT INTO SENTRY_VERSION (VER_ID, SCHEMA_VERSION, VERSION_COMMENT) VALUES 
(1, '2.2.0', 'Sentry release version 2.2.0');
+
+-- Generic model
+-- Table SENTRY_GM_PRIVILEGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryGMPrivilege]
+CREATE TABLE SENTRY_GM_PRIVILEGE
+(
+    GM_PRIVILEGE_ID BIGINT NOT NULL,
+    "ACTION" VARCHAR(40),
+    COMPONENT_NAME VARCHAR(400),
+    CREATE_TIME BIGINT NOT NULL,
+    WITH_GRANT_OPTION CHAR(1),
+    RESOURCE_NAME_0 VARCHAR(400),
+    RESOURCE_NAME_1 VARCHAR(400),
+    RESOURCE_NAME_2 VARCHAR(400),
+    RESOURCE_NAME_3 VARCHAR(400),
+    RESOURCE_TYPE_0 VARCHAR(400),
+    RESOURCE_TYPE_1 VARCHAR(400),
+    RESOURCE_TYPE_2 VARCHAR(400),
+    RESOURCE_TYPE_3 VARCHAR(400),
+    "SCOPE" VARCHAR(40),
+    SERVICE_NAME VARCHAR(400)
+);
+-- Primary key(GM_PRIVILEGE_ID)
+ALTER TABLE SENTRY_GM_PRIVILEGE ADD CONSTRAINT SENTRY_GM_PRIVILEGE_PK PRIMARY 
KEY (GM_PRIVILEGE_ID);
+
+-- Constraints for table SENTRY_GM_PRIVILEGE for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryGMPrivilege]
+CREATE UNIQUE INDEX GM_PRIVILEGE_INDEX ON SENTRY_GM_PRIVILEGE 
(COMPONENT_NAME,SERVICE_NAME,RESOURCE_NAME_0,RESOURCE_TYPE_0,RESOURCE_NAME_1,RESOURCE_TYPE_1,RESOURCE_NAME_2,RESOURCE_TYPE_2,RESOURCE_NAME_3,RESOURCE_TYPE_3,"ACTION",WITH_GRANT_OPTION);
+
+-- Table SENTRY_ROLE_GM_PRIVILEGE_MAP for join relationship
+CREATE TABLE SENTRY_ROLE_GM_PRIVILEGE_MAP
+(
+    ROLE_ID BIGINT NOT NULL,
+    GM_PRIVILEGE_ID BIGINT NOT NULL
+);
+ALTER TABLE SENTRY_ROLE_GM_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_GM_PRIVILEGE_MAP_PK PRIMARY KEY (ROLE_ID,GM_PRIVILEGE_ID);
+
+-- Constraints for table SENTRY_ROLE_GM_PRIVILEGE_MAP
+CREATE INDEX SENTRY_ROLE_GM_PRIVILEGE_MAP_N50 ON SENTRY_ROLE_GM_PRIVILEGE_MAP 
(ROLE_ID);
+
+CREATE INDEX SENTRY_ROLE_GM_PRIVILEGE_MAP_N49 ON SENTRY_ROLE_GM_PRIVILEGE_MAP 
(GM_PRIVILEGE_ID);
+
+ALTER TABLE SENTRY_ROLE_GM_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_GM_PRIVILEGE_MAP_FK2 FOREIGN KEY (GM_PRIVILEGE_ID) REFERENCES 
SENTRY_GM_PRIVILEGE (GM_PRIVILEGE_ID);
+
+ALTER TABLE SENTRY_ROLE_GM_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_GM_PRIVILEGE_MAP_FK1 FOREIGN KEY (ROLE_ID) REFERENCES SENTRY_ROLE 
(ROLE_ID);
+
+CREATE TABLE SENTRY_USER
+(
+    USER_ID BIGINT NOT NULL generated always as identity (start with 1),
+    CREATE_TIME BIGINT NOT NULL,
+    USER_NAME VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_USER ADD CONSTRAINT SENTRY_USER_PK PRIMARY KEY (USER_ID);
+
+CREATE UNIQUE INDEX SENTRYUSERNAME ON SENTRY_USER (USER_NAME);
+
+CREATE TABLE SENTRY_ROLE_USER_MAP
+(
+    USER_ID BIGINT NOT NULL,
+    ROLE_ID BIGINT NOT NULL,
+    GRANTOR_PRINCIPAL VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_ROLE_USER_MAP ADD CONSTRAINT SENTRY_ROLE_USER_MAP_PK 
PRIMARY KEY (USER_ID,ROLE_ID);
+
+CREATE INDEX SENTRY_ROLE_USER_MAP_N49 ON SENTRY_ROLE_USER_MAP (USER_ID);
+
+CREATE INDEX SENTRY_ROLE_USER_MAP_N50 ON SENTRY_ROLE_USER_MAP (ROLE_ID);
+
+ALTER TABLE SENTRY_ROLE_USER_MAP ADD CONSTRAINT SENTRY_ROLE_USER_MAP_FK2 
FOREIGN KEY (ROLE_ID) REFERENCES SENTRY_ROLE (ROLE_ID) ;
+
+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) NOT NULL,
+    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);
+
+-- Constraints for table AUTHZ_PATHS_MAPPING for class(es) 
[org.apache.sentry.provider.db.service.model.MAuthzPathsMapping]
+CREATE INDEX AUTHZ_SNAPSHOT_ID_INDEX ON AUTHZ_PATHS_MAPPING 
(AUTHZ_SNAPSHOT_ID);
+
+-- Table `AUTHZ_PATH` for classes 
[org.apache.sentry.provider.db.service.model.MPath]
+CREATE TABLE AUTHZ_PATH
+ (
+    PATH_ID BIGINT NOT NULL,
+    PATH_NAME VARCHAR(4000),
+    AUTHZ_OBJ_ID BIGINT
+);
+
+-- Constraints for table `AUTHZ_PATH`
+ALTER TABLE AUTHZ_PATH
+  ADD CONSTRAINT AUTHZ_PATH_PK PRIMARY KEY (PATH_ID);
+
+ALTER TABLE AUTHZ_PATH
+  ADD CONSTRAINT AUTHZ_PATH_FK
+  FOREIGN KEY (AUTHZ_OBJ_ID) REFERENCES AUTHZ_PATHS_MAPPING (AUTHZ_OBJ_ID);
+
+CREATE INDEX AUTHZ_PATH_FK_IDX ON AUTHZ_PATH (AUTHZ_OBJ_ID);
+
+-- Table SENTRY_PERM_CHANGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryPermChange]
+CREATE TABLE SENTRY_PERM_CHANGE
+(
+    CHANGE_ID bigint NOT NULL,
+    CREATE_TIME_MS bigint NOT NULL,
+    PERM_CHANGE VARCHAR(4000) NOT NULL
+);
+
+ALTER TABLE SENTRY_PERM_CHANGE ADD CONSTRAINT SENTRY_PERM_CHANGE_PK PRIMARY 
KEY (CHANGE_ID);
+
+-- Table SENTRY_PATH_CHANGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryPathChange]
+CREATE TABLE SENTRY_PATH_CHANGE
+(
+    CHANGE_ID bigint NOT NULL,
+    NOTIFICATION_HASH char(40) NOT NULL,
+    CREATE_TIME_MS bigint NOT NULL,
+    PATH_CHANGE CLOB NOT NULL
+);
+
+-- Constraints for table SENTRY_PATH_CHANGE for class 
[org.apache.sentry.provider.db.service.model.MSentryPathChange]
+ALTER TABLE SENTRY_PATH_CHANGE ADD CONSTRAINT SENTRY_PATH_CHANGE_PK PRIMARY 
KEY (CHANGE_ID);
+CREATE UNIQUE INDEX NOTIFICATION_HASH_INDEX ON SENTRY_PATH_CHANGE 
(NOTIFICATION_HASH);
+
+-- Table SENTRY_HMS_NOTIFICATION_ID for classes 
[org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
+CREATE TABLE SENTRY_HMS_NOTIFICATION_ID
+(
+    NOTIFICATION_ID bigint NOT NULL
+);
+
+CREATE INDEX SENTRY_HMS_NOTIF_ID_INDEX ON SENTRY_HMS_NOTIFICATION_ID 
(NOTIFICATION_ID);
+
+-- Table SENTRY_USER_DB_PRIVILEGE_MAP for join relationship
+CREATE TABLE SENTRY_USER_DB_PRIVILEGE_MAP
+(
+    USER_ID BIGINT NOT NULL,
+    DB_PRIVILEGE_ID BIGINT NOT NULL,
+    GRANTOR_PRINCIPAL VARCHAR(128)
+);
+
+-- Constraints for table SENTRY_USER_DB_PRIVILEGE_MAP
+ALTER TABLE SENTRY_USER_DB_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_USR_DB_PRV_MAP_PK PRIMARY KEY (USER_ID,DB_PRIVILEGE_ID);
+
+CREATE INDEX SENTRY_USER_DB_PRIVILEGE_MAP_N50 ON SENTRY_USER_DB_PRIVILEGE_MAP 
(USER_ID);
+
+CREATE INDEX SENTRY_USER_DB_PRIVILEGE_MAP_N49 ON SENTRY_USER_DB_PRIVILEGE_MAP 
(DB_PRIVILEGE_ID);
+
+ALTER TABLE SENTRY_USER_DB_PRIVILEGE_MAP ADD CONSTRAINT 
SEN_USR_DB_PRV_MAP_DB_PRV_FK FOREIGN KEY (DB_PRIVILEGE_ID) REFERENCES 
SENTRY_DB_PRIVILEGE (DB_PRIVILEGE_ID) ;
+
+ALTER TABLE SENTRY_USER_DB_PRIVILEGE_MAP ADD CONSTRAINT 
SEN_USR_DB_PRV_MAP_SN_USR_FK FOREIGN KEY (USER_ID) REFERENCES SENTRY_USER 
(USER_ID) ;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-2.2.0.sql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-2.2.0.sql 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-2.2.0.sql
new file mode 100644
index 0000000..e49c04a
--- /dev/null
+++ 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-2.2.0.sql
@@ -0,0 +1,276 @@
+--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.
+
+-- Table SENTRY_DB_PRIVILEGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryPrivilege]
+CREATE TABLE SENTRY_DB_PRIVILEGE
+(
+    DB_PRIVILEGE_ID BIGINT NOT NULL generated always as identity (start with 
1),
+    URI VARCHAR(4000) DEFAULT '__NULL__',
+    "ACTION" VARCHAR(40),
+    CREATE_TIME BIGINT NOT NULL,
+    DB_NAME VARCHAR(4000) DEFAULT '__NULL__',
+    PRIVILEGE_SCOPE VARCHAR(40),
+    "SERVER_NAME" VARCHAR(4000),
+    "TABLE_NAME" VARCHAR(4000) DEFAULT '__NULL__',
+    "COLUMN_NAME" VARCHAR(4000) DEFAULT '__NULL__',
+    WITH_GRANT_OPTION CHAR(1) NOT NULL
+);
+
+ALTER TABLE SENTRY_DB_PRIVILEGE ADD CONSTRAINT SENTRY_DB_PRIVILEGE_PK PRIMARY 
KEY (DB_PRIVILEGE_ID);
+
+-- Table SENTRY_ROLE for classes 
[org.apache.sentry.provider.db.service.model.MSentryRole]
+CREATE TABLE SENTRY_ROLE
+(
+    ROLE_ID BIGINT NOT NULL generated always as identity (start with 1),
+    CREATE_TIME BIGINT NOT NULL,
+    ROLE_NAME VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_ROLE ADD CONSTRAINT SENTRY_ROLE_PK PRIMARY KEY (ROLE_ID);
+
+-- Table SENTRY_GROUP for classes 
[org.apache.sentry.provider.db.service.model.MSentryGroup]
+CREATE TABLE SENTRY_GROUP
+(
+    GROUP_ID BIGINT NOT NULL generated always as identity (start with 1),
+    CREATE_TIME BIGINT NOT NULL,
+    GROUP_NAME VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_GROUP ADD CONSTRAINT SENTRY_GROUP_PK PRIMARY KEY (GROUP_ID);
+
+-- Table SENTRY_ROLE_GROUP_MAP for join relationship
+CREATE TABLE SENTRY_ROLE_GROUP_MAP
+(
+    GROUP_ID BIGINT NOT NULL,
+    ROLE_ID BIGINT NOT NULL,
+    GRANTOR_PRINCIPAL VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_ROLE_GROUP_MAP ADD CONSTRAINT SENTRY_ROLE_GROUP_MAP_PK 
PRIMARY KEY (GROUP_ID,ROLE_ID);
+
+-- Table SENTRY_ROLE_DB_PRIVILEGE_MAP for join relationship
+CREATE TABLE SENTRY_ROLE_DB_PRIVILEGE_MAP
+(
+    ROLE_ID BIGINT NOT NULL,
+    DB_PRIVILEGE_ID BIGINT NOT NULL,
+    GRANTOR_PRINCIPAL VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_ROLE_DB_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_DB_PRIVILEGE_MAP_PK PRIMARY KEY (ROLE_ID,DB_PRIVILEGE_ID);
+
+CREATE TABLE "SENTRY_VERSION" (
+  VER_ID BIGINT NOT NULL,
+  SCHEMA_VERSION VARCHAR(127),
+  VERSION_COMMENT VARCHAR(255)
+);
+
+ALTER TABLE SENTRY_VERSION ADD CONSTRAINT SENTRY_VERSION_PK PRIMARY KEY 
(VER_ID);
+
+-- Constraints for table SENTRY_DB_PRIVILEGE for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryPrivilege]
+CREATE UNIQUE INDEX SENTRYPRIVILEGENAME ON SENTRY_DB_PRIVILEGE 
("SERVER_NAME",DB_NAME,"TABLE_NAME","COLUMN_NAME",URI,"ACTION",WITH_GRANT_OPTION);
+
+
+-- Constraints for table SENTRY_ROLE for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryRole]
+CREATE UNIQUE INDEX SENTRYROLENAME ON SENTRY_ROLE (ROLE_NAME);
+
+
+-- Constraints for table SENTRY_GROUP for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryGroup]
+CREATE UNIQUE INDEX SENTRYGROUPNAME ON SENTRY_GROUP (GROUP_NAME);
+
+
+-- Constraints for table SENTRY_ROLE_GROUP_MAP
+CREATE INDEX SENTRY_ROLE_GROUP_MAP_N49 ON SENTRY_ROLE_GROUP_MAP (GROUP_ID);
+
+CREATE INDEX SENTRY_ROLE_GROUP_MAP_N50 ON SENTRY_ROLE_GROUP_MAP (ROLE_ID);
+
+ALTER TABLE SENTRY_ROLE_GROUP_MAP ADD CONSTRAINT SENTRY_ROLE_GROUP_MAP_FK2 
FOREIGN KEY (ROLE_ID) REFERENCES SENTRY_ROLE (ROLE_ID) ;
+
+ALTER TABLE SENTRY_ROLE_GROUP_MAP ADD CONSTRAINT SENTRY_ROLE_GROUP_MAP_FK1 
FOREIGN KEY (GROUP_ID) REFERENCES SENTRY_GROUP (GROUP_ID) ;
+
+
+-- Constraints for table SENTRY_ROLE_DB_PRIVILEGE_MAP
+CREATE INDEX SENTRY_ROLE_DB_PRIVILEGE_MAP_N50 ON SENTRY_ROLE_DB_PRIVILEGE_MAP 
(ROLE_ID);
+
+CREATE INDEX SENTRY_ROLE_DB_PRIVILEGE_MAP_N49 ON SENTRY_ROLE_DB_PRIVILEGE_MAP 
(DB_PRIVILEGE_ID);
+
+ALTER TABLE SENTRY_ROLE_DB_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_DB_PRIVILEGE_MAP_FK2 FOREIGN KEY (DB_PRIVILEGE_ID) REFERENCES 
SENTRY_DB_PRIVILEGE (DB_PRIVILEGE_ID) ;
+
+ALTER TABLE SENTRY_ROLE_DB_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_DB_PRIVILEGE_MAP_FK1 FOREIGN KEY (ROLE_ID) REFERENCES SENTRY_ROLE 
(ROLE_ID) ;
+
+INSERT INTO SENTRY_VERSION (VER_ID, SCHEMA_VERSION, VERSION_COMMENT) VALUES 
(1, '2.2.0', 'Sentry release version 2.2.0');
+
+-- Generic Model
+-- Table SENTRY_GM_PRIVILEGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryGMPrivilege]
+CREATE TABLE SENTRY_GM_PRIVILEGE
+(
+    GM_PRIVILEGE_ID BIGINT NOT NULL,
+    "ACTION" VARCHAR(40),
+    COMPONENT_NAME VARCHAR(400),
+    CREATE_TIME BIGINT NOT NULL,
+    WITH_GRANT_OPTION CHAR(1),
+    RESOURCE_NAME_0 VARCHAR(400) DEFAULT '__NULL__',
+    RESOURCE_NAME_1 VARCHAR(400) DEFAULT '__NULL__',
+    RESOURCE_NAME_2 VARCHAR(400) DEFAULT '__NULL__',
+    RESOURCE_NAME_3 VARCHAR(400) DEFAULT '__NULL__',
+    RESOURCE_TYPE_0 VARCHAR(400) DEFAULT '__NULL__',
+    RESOURCE_TYPE_1 VARCHAR(400) DEFAULT '__NULL__',
+    RESOURCE_TYPE_2 VARCHAR(400) DEFAULT '__NULL__',
+    RESOURCE_TYPE_3 VARCHAR(400) DEFAULT '__NULL__',
+    "SCOPE" VARCHAR(40),
+    SERVICE_NAME VARCHAR(400)
+);
+-- Primary key(GM_PRIVILEGE_ID)
+ALTER TABLE SENTRY_GM_PRIVILEGE ADD CONSTRAINT SENTRY_GM_PRIVILEGE_PK PRIMARY 
KEY (GM_PRIVILEGE_ID);
+
+-- Constraints for table SENTRY_GM_PRIVILEGE for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryGMPrivilege]
+CREATE UNIQUE INDEX GM_PRIVILEGE_INDEX ON SENTRY_GM_PRIVILEGE 
(COMPONENT_NAME,SERVICE_NAME,RESOURCE_NAME_0,RESOURCE_TYPE_0,RESOURCE_NAME_1,RESOURCE_TYPE_1,RESOURCE_NAME_2,RESOURCE_TYPE_2,RESOURCE_NAME_3,RESOURCE_TYPE_3,"ACTION",WITH_GRANT_OPTION);
+
+-- Table SENTRY_ROLE_GM_PRIVILEGE_MAP for join relationship
+CREATE TABLE SENTRY_ROLE_GM_PRIVILEGE_MAP
+(
+    ROLE_ID BIGINT NOT NULL,
+    GM_PRIVILEGE_ID BIGINT NOT NULL
+);
+ALTER TABLE SENTRY_ROLE_GM_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_GM_PRIVILEGE_MAP_PK PRIMARY KEY (ROLE_ID,GM_PRIVILEGE_ID);
+
+-- Constraints for table SENTRY_ROLE_GM_PRIVILEGE_MAP
+CREATE INDEX SENTRY_ROLE_GM_PRIVILEGE_MAP_N50 ON SENTRY_ROLE_GM_PRIVILEGE_MAP 
(ROLE_ID);
+
+CREATE INDEX SENTRY_ROLE_GM_PRIVILEGE_MAP_N49 ON SENTRY_ROLE_GM_PRIVILEGE_MAP 
(GM_PRIVILEGE_ID);
+
+ALTER TABLE SENTRY_ROLE_GM_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_GM_PRIVILEGE_MAP_FK2 FOREIGN KEY (GM_PRIVILEGE_ID) REFERENCES 
SENTRY_GM_PRIVILEGE (GM_PRIVILEGE_ID);
+
+ALTER TABLE SENTRY_ROLE_GM_PRIVILEGE_MAP ADD CONSTRAINT 
SENTRY_ROLE_GM_PRIVILEGE_MAP_FK1 FOREIGN KEY (ROLE_ID) REFERENCES SENTRY_ROLE 
(ROLE_ID);
+
+CREATE TABLE SENTRY_USER
+(
+    USER_ID BIGINT NOT NULL generated always as identity (start with 1),
+    CREATE_TIME BIGINT NOT NULL,
+    USER_NAME VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_USER ADD CONSTRAINT SENTRY_USER_PK PRIMARY KEY (USER_ID);
+
+CREATE UNIQUE INDEX SENTRYUSERNAME ON SENTRY_USER (USER_NAME);
+
+CREATE TABLE SENTRY_ROLE_USER_MAP
+(
+    USER_ID BIGINT NOT NULL,
+    ROLE_ID BIGINT NOT NULL,
+    GRANTOR_PRINCIPAL VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_ROLE_USER_MAP ADD CONSTRAINT SENTRY_ROLE_USER_MAP_PK 
PRIMARY KEY (USER_ID,ROLE_ID);
+
+CREATE INDEX SENTRY_ROLE_USER_MAP_N49 ON SENTRY_ROLE_USER_MAP (USER_ID);
+
+CREATE INDEX SENTRY_ROLE_USER_MAP_N50 ON SENTRY_ROLE_USER_MAP (ROLE_ID);
+
+ALTER TABLE SENTRY_ROLE_USER_MAP ADD CONSTRAINT SENTRY_ROLE_USER_MAP_FK2 
FOREIGN KEY (ROLE_ID) REFERENCES SENTRY_ROLE (ROLE_ID) ;
+
+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) 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);
+
+-- Constraints for table AUTHZ_PATHS_MAPPING for class(es) 
[org.apache.sentry.provider.db.service.model.MAuthzPathsMapping]
+CREATE INDEX AUTHZ_SNAPSHOT_ID_INDEX ON AUTHZ_PATHS_MAPPING 
(AUTHZ_SNAPSHOT_ID);
+
+-- Table `AUTHZ_PATH` for classes 
[org.apache.sentry.provider.db.service.model.MPath]
+CREATE TABLE AUTHZ_PATH
+ (
+    PATH_ID BIGINT NOT NULL,
+    PATH_NAME VARCHAR(4000),
+    AUTHZ_OBJ_ID BIGINT
+);
+
+-- Constraints for table `AUTHZ_PATH`
+ALTER TABLE AUTHZ_PATH
+  ADD CONSTRAINT AUTHZ_PATH_PK PRIMARY KEY (PATH_ID);
+
+ALTER TABLE AUTHZ_PATH
+  ADD CONSTRAINT AUTHZ_PATH_FK
+  FOREIGN KEY (AUTHZ_OBJ_ID) REFERENCES AUTHZ_PATHS_MAPPING (AUTHZ_OBJ_ID);
+
+CREATE INDEX AUTHZ_PATH_FK_IDX ON AUTHZ_PATH (AUTHZ_OBJ_ID);
+
+-- Table SENTRY_PERM_CHANGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryPermChange]
+CREATE TABLE SENTRY_PERM_CHANGE
+(
+    CHANGE_ID BIGINT NOT NULL,
+    CREATE_TIME_MS BIGINT NOT NULL,
+    PERM_CHANGE VARCHAR(4000) NOT NULL
+);
+
+ALTER TABLE SENTRY_PERM_CHANGE ADD CONSTRAINT SENTRY_PERM_CHANGE_PK PRIMARY 
KEY (CHANGE_ID);
+
+-- Table SENTRY_PATH_CHANGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryPathChange]
+CREATE TABLE SENTRY_PATH_CHANGE
+(
+    CHANGE_ID BIGINT NOT NULL,
+    NOTIFICATION_HASH CHAR(40) NOT NULL,
+    CREATE_TIME_MS BIGINT NOT NULL,
+    PATH_CHANGE CLOB NOT NULL
+);
+
+-- Constraints for table SENTRY_PATH_CHANGE for class 
[org.apache.sentry.provider.db.service.model.MSentryPathChange]
+ALTER TABLE SENTRY_PATH_CHANGE ADD CONSTRAINT SENTRY_PATH_CHANGE_PK PRIMARY 
KEY (CHANGE_ID);
+CREATE UNIQUE INDEX NOTIFICATION_HASH_INDEX ON SENTRY_PATH_CHANGE 
(NOTIFICATION_HASH);
+
+-- Table SENTRY_HMS_NOTIFICATION_ID for classes 
[org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
+CREATE TABLE SENTRY_HMS_NOTIFICATION_ID
+(
+    NOTIFICATION_ID BIGINT NOT NULL
+);
+
+CREATE INDEX SENTRY_HMS_NOTIF_ID_INDEX ON SENTRY_HMS_NOTIFICATION_ID 
(NOTIFICATION_ID);
+
+-- Table SENTRY_USER_DB_PRIVILEGE_MAP for join relationship
+CREATE TABLE SENTRY_USER_DB_PRIVILEGE_MAP (
+  USER_ID BIGINT NOT NULL,
+  DB_PRIVILEGE_ID BIGINT NOT NULL,
+  GRANTOR_PRINCIPAL VARCHAR(128)
+);
+
+ALTER TABLE SENTRY_USER_DB_PRIVILEGE_MAP
+  ADD CONSTRAINT SENTRY_USR_DB_PRV_MAP_PK PRIMARY KEY 
(USER_ID,DB_PRIVILEGE_ID);
+
+ALTER TABLE SENTRY_USER_DB_PRIVILEGE_MAP
+  ADD CONSTRAINT SEN_USR_DB_PRV_MAP_SN_USR_FK
+  FOREIGN KEY (USER_ID) REFERENCES SENTRY_USER(USER_ID);
+
+ALTER TABLE SENTRY_USER_DB_PRIVILEGE_MAP
+  ADD CONSTRAINT SEN_USR_DB_PRV_MAP_DB_PRV_FK
+  FOREIGN KEY (DB_PRIVILEGE_ID) REFERENCES 
SENTRY_DB_PRIVILEGE(DB_PRIVILEGE_ID);
+
+CREATE INDEX SEN_USR_DB_PRV_MAP_USR_FK_IDX ON SENTRY_USER_DB_PRIVILEGE_MAP 
(USER_ID);
+
+CREATE INDEX SEN_USR_DB_PRV_MAP_PRV_FK_IDX ON SENTRY_USER_DB_PRIVILEGE_MAP 
(DB_PRIVILEGE_ID);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-2.2.0.sql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-2.2.0.sql 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-2.2.0.sql
new file mode 100644
index 0000000..f1d2a5b
--- /dev/null
+++ 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-2.2.0.sql
@@ -0,0 +1,311 @@
+-- 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.
+
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, 
FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+CREATE TABLE `SENTRY_DB_PRIVILEGE` (
+  `DB_PRIVILEGE_ID` BIGINT NOT NULL,
+  `PRIVILEGE_SCOPE` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+  `SERVER_NAME` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+  `DB_NAME` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+  `TABLE_NAME` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+  `COLUMN_NAME` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+  `URI` VARCHAR(4000) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '__NULL__',
+  `ACTION` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+  `CREATE_TIME` BIGINT NOT NULL,
+  `WITH_GRANT_OPTION` CHAR(1) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `SENTRY_ROLE` (
+  `ROLE_ID` BIGINT  NOT NULL,
+  `ROLE_NAME` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+  `CREATE_TIME` BIGINT NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `SENTRY_GROUP` (
+  `GROUP_ID` BIGINT  NOT NULL,
+  `GROUP_NAME` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+  `CREATE_TIME` BIGINT NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `SENTRY_ROLE_DB_PRIVILEGE_MAP` (
+  `ROLE_ID` BIGINT NOT NULL,
+  `DB_PRIVILEGE_ID` BIGINT NOT NULL,
+  `GRANTOR_PRINCIPAL` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `SENTRY_ROLE_GROUP_MAP` (
+  `ROLE_ID` BIGINT NOT NULL,
+  `GROUP_ID` BIGINT NOT NULL,
+  `GRANTOR_PRINCIPAL` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `SENTRY_VERSION` (
+  `VER_ID` BIGINT NOT NULL,
+  `SCHEMA_VERSION` VARCHAR(127) NOT NULL,
+  `VERSION_COMMENT` VARCHAR(255) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+ALTER TABLE `SENTRY_DB_PRIVILEGE`
+  ADD CONSTRAINT `SENTRY_DB_PRIV_PK` PRIMARY KEY (`DB_PRIVILEGE_ID`);
+
+ALTER TABLE `SENTRY_ROLE`
+  ADD CONSTRAINT `SENTRY_ROLE_PK` PRIMARY KEY (`ROLE_ID`);
+
+ALTER TABLE `SENTRY_GROUP`
+  ADD CONSTRAINT `SENTRY_GROUP_PK` PRIMARY KEY (`GROUP_ID`);
+
+ALTER TABLE `SENTRY_VERSION`
+  ADD CONSTRAINT `SENTRY_VERSION` PRIMARY KEY (`VER_ID`);
+
+ALTER TABLE `SENTRY_DB_PRIVILEGE`
+  ADD UNIQUE `SENTRY_DB_PRIV_PRIV_NAME_UNIQ` 
(`SERVER_NAME`,`DB_NAME`,`TABLE_NAME`,`COLUMN_NAME`,`URI`(250),`ACTION`,`WITH_GRANT_OPTION`);
+
+ALTER TABLE `SENTRY_DB_PRIVILEGE`
+  ADD INDEX `SENTRY_PRIV_SERV_IDX` (`SERVER_NAME`);
+
+ALTER TABLE `SENTRY_DB_PRIVILEGE`
+  ADD INDEX `SENTRY_PRIV_DB_IDX` (`DB_NAME`);
+
+ALTER TABLE `SENTRY_DB_PRIVILEGE`
+  ADD INDEX `SENTRY_PRIV_TBL_IDX` (`TABLE_NAME`);
+
+ALTER TABLE `SENTRY_DB_PRIVILEGE`
+  ADD INDEX `SENTRY_PRIV_COL_IDX` (`COLUMN_NAME`);
+
+ALTER TABLE `SENTRY_DB_PRIVILEGE`
+  ADD INDEX `SENTRY_PRIV_URI_IDX` (`URI`);
+
+ALTER TABLE `SENTRY_ROLE`
+  ADD CONSTRAINT `SENTRY_ROLE_ROLE_NAME_UNIQUE` UNIQUE (`ROLE_NAME`);
+
+ALTER TABLE `SENTRY_GROUP`
+  ADD CONSTRAINT `SENTRY_GRP_GRP_NAME_UNIQUE` UNIQUE (`GROUP_NAME`);
+
+ALTER TABLE `SENTRY_ROLE_DB_PRIVILEGE_MAP`
+  ADD CONSTRAINT `SENTRY_ROLE_DB_PRIVILEGE_MAP_PK` PRIMARY KEY 
(`ROLE_ID`,`DB_PRIVILEGE_ID`);
+
+ALTER TABLE `SENTRY_ROLE_GROUP_MAP`
+  ADD CONSTRAINT `SENTRY_ROLE_GROUP_MAP_PK` PRIMARY KEY (`ROLE_ID`,`GROUP_ID`);
+
+ALTER TABLE `SENTRY_ROLE_DB_PRIVILEGE_MAP`
+  ADD CONSTRAINT `SEN_RLE_DB_PRV_MAP_SN_RLE_FK`
+  FOREIGN KEY (`ROLE_ID`) REFERENCES `SENTRY_ROLE`(`ROLE_ID`);
+
+ALTER TABLE `SENTRY_ROLE_DB_PRIVILEGE_MAP`
+  ADD CONSTRAINT `SEN_RL_DB_PRV_MAP_SN_DB_PRV_FK`
+  FOREIGN KEY (`DB_PRIVILEGE_ID`) REFERENCES 
`SENTRY_DB_PRIVILEGE`(`DB_PRIVILEGE_ID`);
+
+ALTER TABLE `SENTRY_ROLE_GROUP_MAP`
+  ADD CONSTRAINT `SEN_ROLE_GROUP_MAP_SEN_ROLE_FK`
+  FOREIGN KEY (`ROLE_ID`) REFERENCES `SENTRY_ROLE`(`ROLE_ID`);
+
+ALTER TABLE `SENTRY_ROLE_GROUP_MAP`
+  ADD CONSTRAINT `SEN_ROLE_GROUP_MAP_SEN_GRP_FK`
+  FOREIGN KEY (`GROUP_ID`) REFERENCES `SENTRY_GROUP`(`GROUP_ID`);
+
+INSERT INTO SENTRY_VERSION (VER_ID, SCHEMA_VERSION, VERSION_COMMENT) VALUES 
(1, '2.2.0', 'Sentry release version 2.2.0');
+
+-- Generic Model
+-- Table SENTRY_GM_PRIVILEGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryGMPrivilege]
+CREATE TABLE `SENTRY_GM_PRIVILEGE`
+(
+    `GM_PRIVILEGE_ID` BIGINT NOT NULL,
+    `ACTION` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+    `COMPONENT_NAME` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+    `CREATE_TIME` BIGINT NOT NULL,
+    `WITH_GRANT_OPTION` CHAR(1) NOT NULL,
+    `RESOURCE_NAME_0` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+    `RESOURCE_NAME_1` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+    `RESOURCE_NAME_2` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+    `RESOURCE_NAME_3` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+    `RESOURCE_TYPE_0` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+    `RESOURCE_TYPE_1` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+    `RESOURCE_TYPE_2` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+    `RESOURCE_TYPE_3` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
'__NULL__',
+    `SCOPE` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+    `SERVICE_NAME` VARCHAR(64) BINARY CHARACTER SET utf8 COLLATE utf8_bin NOT 
NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+ALTER TABLE `SENTRY_GM_PRIVILEGE`
+  ADD CONSTRAINT `SENTRY_GM_PRIVILEGE_PK` PRIMARY KEY (`GM_PRIVILEGE_ID`);
+-- Constraints for table SENTRY_GM_PRIVILEGE for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryGMPrivilege]
+ALTER TABLE `SENTRY_GM_PRIVILEGE`
+  ADD UNIQUE `GM_PRIVILEGE_UNIQUE` 
(`COMPONENT_NAME`,`SERVICE_NAME`,`RESOURCE_NAME_0`,`RESOURCE_TYPE_0`,`RESOURCE_NAME_1`,`RESOURCE_TYPE_1`,`RESOURCE_NAME_2`,`RESOURCE_TYPE_2`,`RESOURCE_NAME_3`,`RESOURCE_TYPE_3`,`ACTION`,`WITH_GRANT_OPTION`);
+
+ALTER TABLE `SENTRY_GM_PRIVILEGE`
+  ADD INDEX `SENTRY_GM_PRIV_COMP_IDX` (`COMPONENT_NAME`);
+
+ALTER TABLE `SENTRY_GM_PRIVILEGE`
+  ADD INDEX `SENTRY_GM_PRIV_SERV_IDX` (`SERVICE_NAME`);
+
+ALTER TABLE `SENTRY_GM_PRIVILEGE`
+  ADD INDEX `SENTRY_GM_PRIV_RES0_IDX` (`RESOURCE_NAME_0`,`RESOURCE_TYPE_0`);
+
+ALTER TABLE `SENTRY_GM_PRIVILEGE`
+  ADD INDEX `SENTRY_GM_PRIV_RES1_IDX` (`RESOURCE_NAME_1`,`RESOURCE_TYPE_1`);
+
+ALTER TABLE `SENTRY_GM_PRIVILEGE`
+  ADD INDEX `SENTRY_GM_PRIV_RES2_IDX` (`RESOURCE_NAME_2`,`RESOURCE_TYPE_2`);
+
+ALTER TABLE `SENTRY_GM_PRIVILEGE`
+  ADD INDEX `SENTRY_GM_PRIV_RES3_IDX` (`RESOURCE_NAME_3`,`RESOURCE_TYPE_3`);
+
+-- Table SENTRY_ROLE_GM_PRIVILEGE_MAP for join relationship
+CREATE TABLE `SENTRY_ROLE_GM_PRIVILEGE_MAP`
+(
+    `ROLE_ID` BIGINT NOT NULL,
+    `GM_PRIVILEGE_ID` BIGINT NOT NULL
+) ENGINE=INNODB DEFAULT CHARSET=utf8;
+
+ALTER TABLE `SENTRY_ROLE_GM_PRIVILEGE_MAP`
+  ADD CONSTRAINT `SENTRY_ROLE_GM_PRIVILEGE_MAP_PK` PRIMARY KEY 
(`ROLE_ID`,`GM_PRIVILEGE_ID`);
+
+-- Constraints for table SENTRY_ROLE_GM_PRIVILEGE_MAP
+ALTER TABLE `SENTRY_ROLE_GM_PRIVILEGE_MAP`
+  ADD CONSTRAINT `SEN_RLE_GM_PRV_MAP_SN_RLE_FK`
+  FOREIGN KEY (`ROLE_ID`) REFERENCES `SENTRY_ROLE`(`ROLE_ID`);
+
+ALTER TABLE `SENTRY_ROLE_GM_PRIVILEGE_MAP`
+  ADD CONSTRAINT `SEN_RL_GM_PRV_MAP_SN_DB_PRV_FK`
+  FOREIGN KEY (`GM_PRIVILEGE_ID`) REFERENCES 
`SENTRY_GM_PRIVILEGE`(`GM_PRIVILEGE_ID`);
+
+CREATE TABLE `SENTRY_USER` (
+         `USER_ID` BIGINT  NOT NULL,
+         `USER_NAME` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+         `CREATE_TIME` BIGINT NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+ALTER TABLE `SENTRY_USER`
+        ADD CONSTRAINT `SENTRY_USER_PK` PRIMARY KEY (`USER_ID`);
+
+ALTER TABLE `SENTRY_USER`
+        ADD CONSTRAINT `SENTRY_USER_USER_NAME_UNIQUE` UNIQUE (`USER_NAME`);
+
+CREATE TABLE `SENTRY_ROLE_USER_MAP` (
+         `ROLE_ID` BIGINT NOT NULL,
+         `USER_ID` BIGINT NOT NULL,
+         `GRANTOR_PRINCIPAL` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+ALTER TABLE `SENTRY_ROLE_USER_MAP`
+       ADD CONSTRAINT `SENTRY_ROLE_USER_MAP_PK` PRIMARY KEY 
(`ROLE_ID`,`USER_ID`);
+
+ALTER TABLE `SENTRY_ROLE_USER_MAP`
+       ADD CONSTRAINT `SEN_ROLE_USER_MAP_SEN_ROLE_FK`
+       FOREIGN KEY (`ROLE_ID`) REFERENCES `SENTRY_ROLE`(`ROLE_ID`);
+
+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 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;
+
+-- Constraints for table `AUTHZ_PATHS_MAPPING` for class(es) 
[org.apache.sentry.provider.db.service.model.MAuthzPathsMapping]
+CREATE INDEX `AUTHZ_SNAPSHOT_ID_INDEX` ON `AUTHZ_PATHS_MAPPING` 
(`AUTHZ_SNAPSHOT_ID`);
+
+-- Table `AUTHZ_PATH` for classes 
[org.apache.sentry.provider.db.service.model.MPath]
+CREATE TABLE `AUTHZ_PATH` (
+    `PATH_ID` BIGINT NOT NULL,
+    `PATH_NAME` VARCHAR(4000) CHARACTER SET utf8 COLLATE utf8_bin,
+    `AUTHZ_OBJ_ID` BIGINT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- Constraints for table `AUTHZ_PATH`
+ALTER TABLE `AUTHZ_PATH`
+  ADD CONSTRAINT `AUTHZ_PATH_PK` PRIMARY KEY (`PATH_ID`);
+
+ALTER TABLE `AUTHZ_PATH`
+  ADD CONSTRAINT `AUTHZ_PATH_FK`
+  FOREIGN KEY (`AUTHZ_OBJ_ID`) REFERENCES 
`AUTHZ_PATHS_MAPPING`(`AUTHZ_OBJ_ID`);
+
+CREATE INDEX `AUTHZ_PATH_FK_IDX` ON `AUTHZ_PATH` (`AUTHZ_OBJ_ID`);
+
+-- Table `SENTRY_PERM_CHANGE` for classes 
[org.apache.sentry.provider.db.service.model.MSentryPermChange]
+CREATE TABLE `SENTRY_PERM_CHANGE`
+(
+    `CHANGE_ID` BIGINT NOT NULL,
+    `CREATE_TIME_MS` BIGINT NOT NULL,
+    `PERM_CHANGE` VARCHAR(4000) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+    CONSTRAINT `SENTRY_PERM_CHANGE_PK` PRIMARY KEY (`CHANGE_ID`)
+) ENGINE=INNODB;
+
+-- Table `SENTRY_PATH_CHANGE` for classes 
[org.apache.sentry.provider.db.service.model.MSentryPathChange]
+CREATE TABLE `SENTRY_PATH_CHANGE`
+(
+    `CHANGE_ID` BIGINT NOT NULL,
+    `NOTIFICATION_HASH` CHAR(40) NOT NULL,
+    `CREATE_TIME_MS` BIGINT NOT NULL,
+    `PATH_CHANGE` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+    CONSTRAINT `SENTRY_PATH_CHANGE_PK` PRIMARY KEY (`CHANGE_ID`)
+) ENGINE=INNODB;
+
+-- Constraints for table SENTRY_PATH_CHANGE for class 
[org.apache.sentry.provider.db.service.model.MSentryPathChange]
+CREATE UNIQUE INDEX `NOTIFICATION_HASH_INDEX` ON `SENTRY_PATH_CHANGE` 
(`NOTIFICATION_HASH`);
+
+-- Table SENTRY_HMS_NOTIFICATION_ID for classes 
[org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
+CREATE TABLE `SENTRY_HMS_NOTIFICATION_ID`
+(
+    `NOTIFICATION_ID` BIGINT NOT NULL
+)ENGINE=INNODB;
+
+CREATE INDEX `SENTRY_HMS_NOTIF_ID_INDEX` ON `SENTRY_HMS_NOTIFICATION_ID` 
(`NOTIFICATION_ID`);
+
+-- Table SENTRY_USER_DB_PRIVILEGE_MAP for join relationship
+CREATE TABLE `SENTRY_USER_DB_PRIVILEGE_MAP` (
+  `USER_ID` BIGINT NOT NULL,
+  `DB_PRIVILEGE_ID` BIGINT NOT NULL,
+  `GRANTOR_PRINCIPAL` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+ALTER TABLE `SENTRY_USER_DB_PRIVILEGE_MAP`
+  ADD CONSTRAINT `SENTRY_USR_DB_PRV_MAP_PK` PRIMARY KEY 
(`USER_ID`,`DB_PRIVILEGE_ID`);
+
+ALTER TABLE `SENTRY_USER_DB_PRIVILEGE_MAP`
+  ADD CONSTRAINT `SEN_USR_DB_PRV_MAP_SN_USR_FK`
+  FOREIGN KEY (`USER_ID`) REFERENCES `SENTRY_USER`(`USER_ID`);
+
+ALTER TABLE `SENTRY_USER_DB_PRIVILEGE_MAP`
+  ADD CONSTRAINT `SEN_USR_DB_PRV_MAP_DB_PRV_FK`
+  FOREIGN KEY (`DB_PRIVILEGE_ID`) REFERENCES 
`SENTRY_DB_PRIVILEGE`(`DB_PRIVILEGE_ID`);
+
+CREATE INDEX `SEN_USR_DB_PRV_MAP_USR_FK_IDX` ON `SENTRY_USER_DB_PRIVILEGE_MAP` 
(`USER_ID`);
+
+CREATE INDEX `SEN_USR_DB_PRV_MAP_PRV_FK_IDX` ON `SENTRY_USER_DB_PRIVILEGE_MAP` 
(`DB_PRIVILEGE_ID`);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-2.2.0.sql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-2.2.0.sql 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-2.2.0.sql
new file mode 100644
index 0000000..0f420b5
--- /dev/null
+++ 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-2.2.0.sql
@@ -0,0 +1,291 @@
+--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.
+
+CREATE TABLE "SENTRY_DB_PRIVILEGE" (
+  "DB_PRIVILEGE_ID" NUMBER NOT NULL,
+  "PRIVILEGE_SCOPE" VARCHAR2(32) NOT NULL,
+  "SERVER_NAME" VARCHAR2(128) NOT NULL,
+  "DB_NAME" VARCHAR2(128) DEFAULT '__NULL__',
+  "TABLE_NAME" VARCHAR2(128) DEFAULT '__NULL__',
+  "COLUMN_NAME" VARCHAR2(128) DEFAULT '__NULL__',
+  "URI" VARCHAR2(4000) DEFAULT '__NULL__',
+  "ACTION" VARCHAR2(128) NOT NULL,
+  "CREATE_TIME" NUMBER NOT NULL,
+  "WITH_GRANT_OPTION" CHAR(1) DEFAULT 'N' NOT NULL
+);
+
+CREATE TABLE "SENTRY_ROLE" (
+  "ROLE_ID" NUMBER  NOT NULL,
+  "ROLE_NAME" VARCHAR2(128) NOT NULL,
+  "CREATE_TIME" NUMBER NOT NULL
+);
+
+CREATE TABLE "SENTRY_GROUP" (
+  "GROUP_ID" NUMBER  NOT NULL,
+  "GROUP_NAME" VARCHAR2(128) NOT NULL,
+  "CREATE_TIME" NUMBER NOT NULL
+);
+
+CREATE TABLE "SENTRY_ROLE_DB_PRIVILEGE_MAP" (
+  "ROLE_ID" NUMBER NOT NULL,
+  "DB_PRIVILEGE_ID" NUMBER NOT NULL,
+  "GRANTOR_PRINCIPAL" VARCHAR2(128)
+);
+
+CREATE TABLE "SENTRY_ROLE_GROUP_MAP" (
+  "ROLE_ID" NUMBER NOT NULL,
+  "GROUP_ID" NUMBER NOT NULL,
+  "GRANTOR_PRINCIPAL" VARCHAR2(128)
+);
+
+CREATE TABLE "SENTRY_VERSION" (
+  "VER_ID" NUMBER NOT NULL,
+  "SCHEMA_VERSION" VARCHAR(127) NOT NULL,
+  "VERSION_COMMENT" VARCHAR(255) NOT NULL
+);
+
+ALTER TABLE "SENTRY_DB_PRIVILEGE"
+  ADD CONSTRAINT "SENTRY_DB_PRIV_PK" PRIMARY KEY ("DB_PRIVILEGE_ID");
+
+ALTER TABLE "SENTRY_ROLE"
+  ADD CONSTRAINT "SENTRY_ROLE_PK" PRIMARY KEY ("ROLE_ID");
+
+ALTER TABLE "SENTRY_GROUP"
+  ADD CONSTRAINT "SENTRY_GROUP_PK" PRIMARY KEY ("GROUP_ID");
+
+ALTER TABLE "SENTRY_VERSION" ADD CONSTRAINT "SENTRY_VERSION_PK" PRIMARY KEY 
("VER_ID");
+
+ALTER TABLE "SENTRY_DB_PRIVILEGE"
+  ADD CONSTRAINT "SENTRY_DB_PRIV_PRIV_NAME_UNIQ" UNIQUE 
("SERVER_NAME","DB_NAME","TABLE_NAME","COLUMN_NAME","URI","ACTION","WITH_GRANT_OPTION");
+
+CREATE INDEX "SENTRY_SERV_PRIV_IDX" ON "SENTRY_DB_PRIVILEGE" ("SERVER_NAME");
+
+CREATE INDEX "SENTRY_DB_PRIV_IDX" ON "SENTRY_DB_PRIVILEGE" ("DB_NAME");
+
+CREATE INDEX "SENTRY_TBL_PRIV_IDX" ON "SENTRY_DB_PRIVILEGE" ("TABLE_NAME");
+
+CREATE INDEX "SENTRY_COL_PRIV_IDX" ON "SENTRY_DB_PRIVILEGE" ("COLUMN_NAME");
+
+CREATE INDEX "SENTRY_URI_PRIV_IDX" ON "SENTRY_DB_PRIVILEGE" ("URI");
+
+ALTER TABLE "SENTRY_ROLE"
+  ADD CONSTRAINT "SENTRY_ROLE_ROLE_NAME_UNIQUE" UNIQUE ("ROLE_NAME");
+
+ALTER TABLE "SENTRY_GROUP"
+  ADD CONSTRAINT "SENTRY_GRP_GRP_NAME_UNIQUE" UNIQUE ("GROUP_NAME");
+
+ALTER TABLE "SENTRY_ROLE_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_RLE_PRIV_MAP_PK" PRIMARY KEY 
("ROLE_ID","DB_PRIVILEGE_ID");
+
+ALTER TABLE "SENTRY_ROLE_GROUP_MAP"
+  ADD CONSTRAINT "SENTRY_ROLE_GROUP_MAP_PK" PRIMARY KEY ("ROLE_ID","GROUP_ID");
+
+ALTER TABLE "SENTRY_ROLE_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_RLE_DB_PRV_MAP_SN_RLE_FK"
+  FOREIGN KEY ("ROLE_ID") REFERENCES "SENTRY_ROLE"("ROLE_ID") INITIALLY 
DEFERRED;
+
+ALTER TABLE "SENTRY_ROLE_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_RL_DB_PRV_MAP_SN_DB_PRV_FK"
+  FOREIGN KEY ("DB_PRIVILEGE_ID") REFERENCES 
"SENTRY_DB_PRIVILEGE"("DB_PRIVILEGE_ID") INITIALLY DEFERRED;
+
+ALTER TABLE "SENTRY_ROLE_GROUP_MAP"
+  ADD CONSTRAINT "SEN_ROLE_GROUP_MAP_SEN_ROLE_FK"
+  FOREIGN KEY ("ROLE_ID") REFERENCES "SENTRY_ROLE"("ROLE_ID") INITIALLY 
DEFERRED;
+
+ALTER TABLE "SENTRY_ROLE_GROUP_MAP"
+  ADD CONSTRAINT "SEN_ROLE_GROUP_MAP_SEN_GRP_FK"
+  FOREIGN KEY ("GROUP_ID") REFERENCES "SENTRY_GROUP"("GROUP_ID") INITIALLY 
DEFERRED;
+
+INSERT INTO SENTRY_VERSION (VER_ID, SCHEMA_VERSION, VERSION_COMMENT) VALUES 
(1, '2.2.0', 'Sentry release version 2.2.0');
+
+-- Generic Model
+-- Table SENTRY_GM_PRIVILEGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryGMPrivilege]
+CREATE TABLE "SENTRY_GM_PRIVILEGE" (
+  "GM_PRIVILEGE_ID" NUMBER NOT NULL,
+  "COMPONENT_NAME" VARCHAR2(32) NOT NULL,
+  "SERVICE_NAME" VARCHAR2(64) NOT NULL,
+  "RESOURCE_NAME_0" VARCHAR2(64) DEFAULT '__NULL__',
+  "RESOURCE_NAME_1" VARCHAR2(64) DEFAULT '__NULL__',
+  "RESOURCE_NAME_2" VARCHAR2(64) DEFAULT '__NULL__',
+  "RESOURCE_NAME_3" VARCHAR2(64) DEFAULT '__NULL__',
+  "RESOURCE_TYPE_0" VARCHAR2(64) DEFAULT '__NULL__',
+  "RESOURCE_TYPE_1" VARCHAR2(64) DEFAULT '__NULL__',
+  "RESOURCE_TYPE_2" VARCHAR2(64) DEFAULT '__NULL__',
+  "RESOURCE_TYPE_3" VARCHAR2(64) DEFAULT '__NULL__',
+  "ACTION" VARCHAR2(32) NOT NULL,
+  "SCOPE" VARCHAR2(128) NOT NULL,
+  "CREATE_TIME" NUMBER NOT NULL,
+  "WITH_GRANT_OPTION" CHAR(1) DEFAULT 'N' NOT NULL
+);
+
+ALTER TABLE "SENTRY_GM_PRIVILEGE"
+  ADD CONSTRAINT "SENTRY_GM_PRIV_PK" PRIMARY KEY ("GM_PRIVILEGE_ID");
+-- Constraints for table SENTRY_GM_PRIVILEGE for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryGMPrivilege]
+ALTER TABLE "SENTRY_GM_PRIVILEGE"
+  ADD CONSTRAINT "SENTRY_GM_PRIV_PRIV_NAME_UNIQ" UNIQUE 
("COMPONENT_NAME","SERVICE_NAME","RESOURCE_NAME_0","RESOURCE_NAME_1","RESOURCE_NAME_2",
+  
"RESOURCE_NAME_3","RESOURCE_TYPE_0","RESOURCE_TYPE_1","RESOURCE_TYPE_2","RESOURCE_TYPE_3","ACTION","WITH_GRANT_OPTION");
+
+CREATE INDEX "SENTRY_GM_PRIV_COMP_IDX" ON "SENTRY_GM_PRIVILEGE" 
("COMPONENT_NAME");
+
+CREATE INDEX "SENTRY_GM_PRIV_SERV_IDX" ON "SENTRY_GM_PRIVILEGE" 
("SERVICE_NAME");
+
+CREATE INDEX "SENTRY_GM_PRIV_RES0_IDX" ON "SENTRY_GM_PRIVILEGE" 
("RESOURCE_NAME_0","RESOURCE_TYPE_0");
+
+CREATE INDEX "SENTRY_GM_PRIV_RES1_IDX" ON "SENTRY_GM_PRIVILEGE" 
("RESOURCE_NAME_1","RESOURCE_TYPE_1");
+
+CREATE INDEX "SENTRY_GM_PRIV_RES2_IDX" ON "SENTRY_GM_PRIVILEGE" 
("RESOURCE_NAME_2","RESOURCE_TYPE_2");
+
+CREATE INDEX "SENTRY_GM_PRIV_RES3_IDX" ON "SENTRY_GM_PRIVILEGE" 
("RESOURCE_NAME_3","RESOURCE_TYPE_3");
+
+-- Table SENTRY_ROLE_GM_PRIVILEGE_MAP for join relationship
+CREATE TABLE "SENTRY_ROLE_GM_PRIVILEGE_MAP" (
+  "ROLE_ID" NUMBER NOT NULL,
+  "GM_PRIVILEGE_ID" NUMBER NOT NULL
+);
+
+ALTER TABLE "SENTRY_ROLE_GM_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_RLE_GM_PRIV_MAP_PK" PRIMARY KEY 
("ROLE_ID","GM_PRIVILEGE_ID");
+
+-- Constraints for table SENTRY_ROLE_GM_PRIVILEGE_MAP
+ALTER TABLE "SENTRY_ROLE_GM_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_RLE_GM_PRV_MAP_SN_RLE_FK"
+  FOREIGN KEY ("ROLE_ID") REFERENCES "SENTRY_ROLE"("ROLE_ID") INITIALLY 
DEFERRED;
+
+ALTER TABLE "SENTRY_ROLE_GM_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_RL_GM_PRV_MAP_SN_DB_PRV_FK"
+  FOREIGN KEY ("GM_PRIVILEGE_ID") REFERENCES 
"SENTRY_GM_PRIVILEGE"("GM_PRIVILEGE_ID") INITIALLY DEFERRED;
+
+CREATE TABLE "SENTRY_USER" (
+  "USER_ID" NUMBER  NOT NULL,
+  "USER_NAME" VARCHAR2(128) NOT NULL,
+  "CREATE_TIME" NUMBER NOT NULL
+);
+
+ALTER TABLE "SENTRY_USER"
+  ADD CONSTRAINT "SENTRY_USER_PK" PRIMARY KEY ("USER_ID");
+
+ALTER TABLE "SENTRY_USER"
+  ADD CONSTRAINT "SENTRY_USER_USER_NAME_UNIQUE" UNIQUE ("USER_NAME");
+
+CREATE TABLE "SENTRY_ROLE_USER_MAP" (
+  "ROLE_ID" NUMBER NOT NULL,
+  "USER_ID" NUMBER NOT NULL,
+  "GRANTOR_PRINCIPAL" VARCHAR2(128)
+);
+
+ALTER TABLE "SENTRY_ROLE_USER_MAP"
+  ADD CONSTRAINT "SENTRY_ROLE_USER_MAP_PK" PRIMARY KEY ("ROLE_ID","USER_ID");
+
+ALTER TABLE "SENTRY_ROLE_USER_MAP"
+  ADD CONSTRAINT "SEN_ROLE_USER_MAP_SEN_ROLE_FK"
+  FOREIGN KEY ("ROLE_ID") REFERENCES "SENTRY_ROLE"("ROLE_ID") INITIALLY 
DEFERRED;
+
+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) 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);
+
+-- Constraints for table AUTHZ_PATHS_MAPPING for class(es) 
[org.apache.sentry.provider.db.service.model.MAuthzPathsMapping]
+CREATE INDEX AUTHZ_SNAPSHOT_ID_INDEX ON AUTHZ_PATHS_MAPPING 
(AUTHZ_SNAPSHOT_ID);
+
+-- Table `AUTHZ_PATH` for classes 
[org.apache.sentry.provider.db.service.model.MPath]
+CREATE TABLE AUTHZ_PATH
+ (
+    PATH_ID NUMBER NOT NULL,
+    PATH_NAME VARCHAR(4000),
+    AUTHZ_OBJ_ID NUMBER
+);
+
+-- Constraints for table `AUTHZ_PATH`
+ALTER TABLE AUTHZ_PATH
+  ADD CONSTRAINT AUTHZ_PATH_PK PRIMARY KEY (PATH_ID);
+
+ALTER TABLE AUTHZ_PATH
+  ADD CONSTRAINT AUTHZ_PATH_FK
+  FOREIGN KEY (AUTHZ_OBJ_ID) REFERENCES AUTHZ_PATHS_MAPPING (AUTHZ_OBJ_ID);
+
+CREATE INDEX "AUTHZ_PATH_FK_IDX" ON "AUTHZ_PATH" ("AUTHZ_OBJ_ID");
+
+-- Table "SENTRY_PERM_CHANGE" for classes 
[org.apache.sentry.provider.db.service.model.MSentryPermChange]
+CREATE TABLE "SENTRY_PERM_CHANGE"
+(
+    "CHANGE_ID" NUMBER NOT NULL,
+    "CREATE_TIME_MS" NUMBER NOT NULL,
+    "PERM_CHANGE" VARCHAR2(4000) NOT NULL
+);
+
+ALTER TABLE "SENTRY_PERM_CHANGE" ADD CONSTRAINT "SENTRY_PERM_CHANGE_PK" 
PRIMARY KEY ("CHANGE_ID");
+
+-- Table "SENTRY_PATH_CHANGE" for classes 
[org.apache.sentry.provider.db.service.model.MSentryPathChange]
+CREATE TABLE "SENTRY_PATH_CHANGE"
+(
+    "CHANGE_ID" NUMBER NOT NULL,
+    "NOTIFICATION_HASH" CHAR(40) NOT NULL,
+    "CREATE_TIME_MS" NUMBER NOT NULL,
+    "PATH_CHANGE" CLOB NOT NULL
+);
+
+-- Constraints for table SENTRY_PATH_CHANGE for class 
[org.apache.sentry.provider.db.service.model.MSentryPathChange]
+CREATE UNIQUE INDEX "NOTIFICATION_HASH_INDEX" ON "SENTRY_PATH_CHANGE" 
("NOTIFICATION_HASH");
+ALTER TABLE "SENTRY_PATH_CHANGE" ADD CONSTRAINT SENTRY_PATH_CHANGE_PK PRIMARY 
KEY ("CHANGE_ID");
+
+-- Table SENTRY_HMS_NOTIFICATION_ID for classes 
[org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
+CREATE TABLE "SENTRY_HMS_NOTIFICATION_ID"
+(
+    "NOTIFICATION_ID" NUMBER NOT NULL
+);
+
+CREATE INDEX "SENTRY_HMS_NOTIF_ID_INDEX" ON "SENTRY_HMS_NOTIFICATION_ID" 
("NOTIFICATION_ID");
+
+-- Table SENTRY_USER_DB_PRIVILEGE_MAP for join relationship
+CREATE TABLE "SENTRY_USER_DB_PRIVILEGE_MAP" (
+  "USER_ID" NUMBER NOT NULL,
+  "DB_PRIVILEGE_ID" NUMBER NOT NULL,
+  "GRANTOR_PRINCIPAL" VARCHAR2(128)
+);
+
+ALTER TABLE "SENTRY_USER_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SENTRY_USR_DB_PRV_MAP_PK" PRIMARY KEY 
("USER_ID","DB_PRIVILEGE_ID");
+
+ALTER TABLE "SENTRY_USER_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_USR_DB_PRV_MAP_SN_USR_FK"
+  FOREIGN KEY ("USER_ID") REFERENCES "SENTRY_USER"("USER_ID") INITIALLY 
DEFERRED;
+
+ALTER TABLE "SENTRY_USER_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_USR_DB_PRV_MAP_DB_PRV_FK"
+  FOREIGN KEY ("DB_PRIVILEGE_ID") REFERENCES 
"SENTRY_DB_PRIVILEGE"("DB_PRIVILEGE_ID") INITIALLY DEFERRED;
+
+CREATE INDEX "SEN_USR_DB_PRV_MAP_USR_FK_IDX" ON "SENTRY_USER_DB_PRIVILEGE_MAP" 
("USER_ID");
+
+CREATE INDEX "SEN_USR_DB_PRV_MAP_PRV_FK_IDX" ON "SENTRY_USER_DB_PRIVILEGE_MAP" 
("DB_PRIVILEGE_ID");
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-2.2.0.sql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-2.2.0.sql
 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-2.2.0.sql
new file mode 100644
index 0000000..3b1a4ad
--- /dev/null
+++ 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-2.2.0.sql
@@ -0,0 +1,301 @@
+--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.
+
+START TRANSACTION;
+
+SET statement_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = off;
+SET check_function_bodies = false;
+SET client_min_messages = warning;
+SET escape_string_warning = off;
+SET search_path = public, pg_catalog;
+SET default_tablespace = '';
+SET default_with_oids = false;
+
+CREATE TABLE "SENTRY_DB_PRIVILEGE" (
+  "DB_PRIVILEGE_ID" BIGINT NOT NULL,
+  "PRIVILEGE_SCOPE" character varying(32) NOT NULL,
+  "SERVER_NAME" character varying(128) NOT NULL,
+  "DB_NAME" character varying(128) DEFAULT '__NULL__',
+  "TABLE_NAME" character varying(128) DEFAULT '__NULL__',
+  "COLUMN_NAME" character varying(128) DEFAULT '__NULL__',
+  "URI" character varying(4000) DEFAULT '__NULL__',
+  "ACTION" character varying(128) NOT NULL,
+  "CREATE_TIME" BIGINT NOT NULL,
+  "WITH_GRANT_OPTION" CHAR(1) NOT NULL
+);
+
+CREATE TABLE "SENTRY_ROLE" (
+  "ROLE_ID" BIGINT  NOT NULL,
+  "ROLE_NAME" character varying(128) NOT NULL,
+  "CREATE_TIME" BIGINT NOT NULL
+);
+
+CREATE TABLE "SENTRY_GROUP" (
+  "GROUP_ID" BIGINT  NOT NULL,
+  "GROUP_NAME" character varying(128) NOT NULL,
+  "CREATE_TIME" BIGINT NOT NULL
+);
+
+CREATE TABLE "SENTRY_ROLE_DB_PRIVILEGE_MAP" (
+  "ROLE_ID" BIGINT NOT NULL,
+  "DB_PRIVILEGE_ID" BIGINT NOT NULL,
+  "GRANTOR_PRINCIPAL" character varying(128)
+);
+
+CREATE TABLE "SENTRY_ROLE_GROUP_MAP" (
+  "ROLE_ID" BIGINT NOT NULL,
+  "GROUP_ID" BIGINT NOT NULL,
+  "GRANTOR_PRINCIPAL" character varying(128)
+);
+
+CREATE TABLE "SENTRY_VERSION" (
+  "VER_ID" bigint,
+  "SCHEMA_VERSION" character varying(127) NOT NULL,
+  "VERSION_COMMENT" character varying(255) NOT NULL
+);
+
+
+ALTER TABLE ONLY "SENTRY_DB_PRIVILEGE"
+  ADD CONSTRAINT "SENTRY_DB_PRIV_PK" PRIMARY KEY ("DB_PRIVILEGE_ID");
+
+ALTER TABLE ONLY "SENTRY_ROLE"
+  ADD CONSTRAINT "SENTRY_ROLE_PK" PRIMARY KEY ("ROLE_ID");
+
+ALTER TABLE ONLY "SENTRY_GROUP"
+  ADD CONSTRAINT "SENTRY_GROUP_PK" PRIMARY KEY ("GROUP_ID");
+
+ALTER TABLE ONLY "SENTRY_VERSION" ADD CONSTRAINT "SENTRY_VERSION_PK" PRIMARY 
KEY ("VER_ID");
+
+ALTER TABLE ONLY "SENTRY_DB_PRIVILEGE"
+  ADD CONSTRAINT "SENTRY_DB_PRIV_PRIV_NAME_UNIQ" UNIQUE 
("SERVER_NAME","DB_NAME","TABLE_NAME","COLUMN_NAME","URI", 
"ACTION","WITH_GRANT_OPTION");
+
+CREATE INDEX "SENTRY_PRIV_SERV_IDX" ON "SENTRY_DB_PRIVILEGE" USING btree 
("SERVER_NAME");
+
+CREATE INDEX "SENTRY_PRIV_DB_IDX" ON "SENTRY_DB_PRIVILEGE" USING btree 
("DB_NAME");
+
+CREATE INDEX "SENTRY_PRIV_TBL_IDX" ON "SENTRY_DB_PRIVILEGE" USING btree 
("TABLE_NAME");
+
+CREATE INDEX "SENTRY_PRIV_COL_IDX" ON "SENTRY_DB_PRIVILEGE" USING btree 
("COLUMN_NAME");
+
+CREATE INDEX "SENTRY_PRIV_URI_IDX" ON "SENTRY_DB_PRIVILEGE" USING btree 
("URI");
+
+ALTER TABLE ONLY "SENTRY_ROLE"
+  ADD CONSTRAINT "SENTRY_ROLE_ROLE_NAME_UNIQUE" UNIQUE ("ROLE_NAME");
+
+ALTER TABLE ONLY "SENTRY_GROUP"
+  ADD CONSTRAINT "SENTRY_GRP_GRP_NAME_UNIQUE" UNIQUE ("GROUP_NAME");
+
+ALTER TABLE "SENTRY_ROLE_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SENTRY_ROLE_DB_PRIVILEGE_MAP_PK" PRIMARY KEY 
("ROLE_ID","DB_PRIVILEGE_ID");
+
+ALTER TABLE "SENTRY_ROLE_GROUP_MAP"
+  ADD CONSTRAINT "SENTRY_ROLE_GROUP_MAP_PK" PRIMARY KEY ("ROLE_ID","GROUP_ID");
+
+ALTER TABLE ONLY "SENTRY_ROLE_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_RLE_DB_PRV_MAP_SN_RLE_FK"
+  FOREIGN KEY ("ROLE_ID") REFERENCES "SENTRY_ROLE"("ROLE_ID") DEFERRABLE;
+
+ALTER TABLE ONLY "SENTRY_ROLE_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_RL_DB_PRV_MAP_SN_DB_PRV_FK"
+  FOREIGN KEY ("DB_PRIVILEGE_ID") REFERENCES 
"SENTRY_DB_PRIVILEGE"("DB_PRIVILEGE_ID") DEFERRABLE;
+
+ALTER TABLE ONLY "SENTRY_ROLE_GROUP_MAP"
+  ADD CONSTRAINT "SEN_ROLE_GROUP_MAP_SEN_ROLE_FK"
+  FOREIGN KEY ("ROLE_ID") REFERENCES "SENTRY_ROLE"("ROLE_ID") DEFERRABLE;
+
+ALTER TABLE ONLY "SENTRY_ROLE_GROUP_MAP"
+  ADD CONSTRAINT "SEN_ROLE_GROUP_MAP_SEN_GRP_FK"
+  FOREIGN KEY ("GROUP_ID") REFERENCES "SENTRY_GROUP"("GROUP_ID") DEFERRABLE;
+
+INSERT INTO "SENTRY_VERSION" ("VER_ID", "SCHEMA_VERSION", "VERSION_COMMENT") 
VALUES (1, '2.2.0', 'Sentry release version 2.2.0');
+
+-- Generic Model
+-- Table SENTRY_GM_PRIVILEGE for classes 
[org.apache.sentry.provider.db.service.model.MSentryGMPrivilege]
+CREATE TABLE "SENTRY_GM_PRIVILEGE" (
+  "GM_PRIVILEGE_ID" BIGINT NOT NULL,
+  "COMPONENT_NAME" character varying(32) NOT NULL,
+  "SERVICE_NAME" character varying(64) NOT NULL,
+  "RESOURCE_NAME_0" character varying(64) DEFAULT '__NULL__',
+  "RESOURCE_NAME_1" character varying(64) DEFAULT '__NULL__',
+  "RESOURCE_NAME_2" character varying(64) DEFAULT '__NULL__',
+  "RESOURCE_NAME_3" character varying(64) DEFAULT '__NULL__',
+  "RESOURCE_TYPE_0" character varying(64) DEFAULT '__NULL__',
+  "RESOURCE_TYPE_1" character varying(64) DEFAULT '__NULL__',
+  "RESOURCE_TYPE_2" character varying(64) DEFAULT '__NULL__',
+  "RESOURCE_TYPE_3" character varying(64) DEFAULT '__NULL__',
+  "ACTION" character varying(32) NOT NULL,
+  "SCOPE" character varying(128) NOT NULL,
+  "CREATE_TIME" BIGINT NOT NULL,
+  "WITH_GRANT_OPTION" CHAR(1) NOT NULL
+);
+ALTER TABLE ONLY "SENTRY_GM_PRIVILEGE"
+  ADD CONSTRAINT "SENTRY_GM_PRIV_PK" PRIMARY KEY ("GM_PRIVILEGE_ID");
+-- Constraints for table SENTRY_GM_PRIVILEGE for class(es) 
[org.apache.sentry.provider.db.service.model.MSentryGMPrivilege]
+ALTER TABLE ONLY "SENTRY_GM_PRIVILEGE"
+  ADD CONSTRAINT "SENTRY_GM_PRIV_PRIV_NAME_UNIQ" UNIQUE 
("COMPONENT_NAME","SERVICE_NAME","RESOURCE_NAME_0","RESOURCE_NAME_1","RESOURCE_NAME_2",
+  
"RESOURCE_NAME_3","RESOURCE_TYPE_0","RESOURCE_TYPE_1","RESOURCE_TYPE_2","RESOURCE_TYPE_3","ACTION","WITH_GRANT_OPTION");
+
+CREATE INDEX "SENTRY_GM_PRIV_COMP_IDX" ON "SENTRY_GM_PRIVILEGE" USING btree 
("COMPONENT_NAME");
+
+CREATE INDEX "SENTRY_GM_PRIV_SERV_IDX" ON "SENTRY_GM_PRIVILEGE" USING btree 
("SERVICE_NAME");
+
+CREATE INDEX "SENTRY_GM_PRIV_RES0_IDX" ON "SENTRY_GM_PRIVILEGE" USING btree 
("RESOURCE_NAME_0","RESOURCE_TYPE_0");
+
+CREATE INDEX "SENTRY_GM_PRIV_RES1_IDX" ON "SENTRY_GM_PRIVILEGE" USING btree 
("RESOURCE_NAME_1","RESOURCE_TYPE_1");
+
+CREATE INDEX "SENTRY_GM_PRIV_RES2_IDX" ON "SENTRY_GM_PRIVILEGE" USING btree 
("RESOURCE_NAME_2","RESOURCE_TYPE_2");
+
+CREATE INDEX "SENTRY_GM_PRIV_RES3_IDX" ON "SENTRY_GM_PRIVILEGE" USING btree 
("RESOURCE_NAME_3","RESOURCE_TYPE_3");
+
+-- Table SENTRY_ROLE_GM_PRIVILEGE_MAP for join relationship
+CREATE TABLE "SENTRY_ROLE_GM_PRIVILEGE_MAP" (
+  "ROLE_ID" BIGINT NOT NULL,
+  "GM_PRIVILEGE_ID" BIGINT NOT NULL
+);
+
+ALTER TABLE "SENTRY_ROLE_GM_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SENTRY_ROLE_GM_PRIVILEGE_MAP_PK" PRIMARY KEY 
("ROLE_ID","GM_PRIVILEGE_ID");
+
+-- Constraints for table SENTRY_ROLE_GM_PRIVILEGE_MAP
+ALTER TABLE ONLY "SENTRY_ROLE_GM_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_RLE_GM_PRV_MAP_SN_RLE_FK"
+  FOREIGN KEY ("ROLE_ID") REFERENCES "SENTRY_ROLE"("ROLE_ID") DEFERRABLE;
+
+ALTER TABLE ONLY "SENTRY_ROLE_GM_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SEN_RL_GM_PRV_MAP_SN_DB_PRV_FK"
+  FOREIGN KEY ("GM_PRIVILEGE_ID") REFERENCES 
"SENTRY_GM_PRIVILEGE"("GM_PRIVILEGE_ID") DEFERRABLE;
+
+CREATE TABLE "SENTRY_USER" (
+  "USER_ID" BIGINT  NOT NULL,
+  "USER_NAME" character varying(128) NOT NULL,
+  "CREATE_TIME" BIGINT NOT NULL
+);
+
+ALTER TABLE ONLY "SENTRY_USER"
+  ADD CONSTRAINT "SENTRY_USER_PK" PRIMARY KEY ("USER_ID");
+
+ALTER TABLE ONLY "SENTRY_USER"
+  ADD CONSTRAINT "SENTRY_USER_USER_NAME_UNIQUE" UNIQUE ("USER_NAME");
+
+CREATE TABLE "SENTRY_ROLE_USER_MAP" (
+  "ROLE_ID" BIGINT NOT NULL,
+  "USER_ID" BIGINT NOT NULL,
+  "GRANTOR_PRINCIPAL" character varying(128)
+);
+
+ALTER TABLE "SENTRY_ROLE_USER_MAP"
+  ADD CONSTRAINT "SENTRY_ROLE_USER_MAP_PK" PRIMARY KEY ("ROLE_ID","USER_ID");
+
+ALTER TABLE ONLY "SENTRY_ROLE_USER_MAP"
+  ADD CONSTRAINT "SEN_ROLE_USER_MAP_SEN_ROLE_FK"
+  FOREIGN KEY ("ROLE_ID") REFERENCES "SENTRY_ROLE"("ROLE_ID") DEFERRABLE;
+
+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) NOT NULL,
+    "CREATE_TIME_MS" int8 NOT NULL,
+    "AUTHZ_SNAPSHOT_ID" bigint NOT NULL,
+    CONSTRAINT "AUTHZ_PATHS_MAPPING_PK" PRIMARY KEY ("AUTHZ_OBJ_ID")
+);
+
+-- Constraints for table "AUTHZ_PATHS_MAPPING" for class(es) 
[org.apache.sentry.provider.db.service.model.MAuthzPathsMapping]
+CREATE INDEX "AUTHZ_SNAPSHOT_ID_INDEX" ON "AUTHZ_PATHS_MAPPING" 
("AUTHZ_SNAPSHOT_ID");
+
+-- Table `AUTHZ_PATH` for classes 
[org.apache.sentry.provider.db.service.model.MPath]
+CREATE TABLE "AUTHZ_PATH"
+ (
+    "PATH_ID" BIGINT NOT NULL,
+    "PATH_NAME" varchar(4000),
+    "AUTHZ_OBJ_ID" BIGINT
+);
+
+-- Constraints for table `AUTHZ_PATH`
+ALTER TABLE "AUTHZ_PATH"
+  ADD CONSTRAINT "AUTHZ_PATH_PK" PRIMARY KEY ("PATH_ID");
+
+ALTER TABLE "AUTHZ_PATH"
+  ADD CONSTRAINT "AUTHZ_PATH_FK"
+  FOREIGN KEY ("AUTHZ_OBJ_ID") REFERENCES "AUTHZ_PATHS_MAPPING" 
("AUTHZ_OBJ_ID") DEFERRABLE;
+
+CREATE INDEX "AUTHZ_PATH_FK_IDX" ON "AUTHZ_PATH" USING btree ("AUTHZ_OBJ_ID");
+
+-- Table `SENTRY_PERM_CHANGE` for classes 
[org.apache.sentry.provider.db.service.model.MSentryPermChange]
+CREATE TABLE "SENTRY_PERM_CHANGE"
+(
+    "CHANGE_ID" bigint NOT NULL,
+    "CREATE_TIME_MS" bigint NOT NULL,
+    "PERM_CHANGE" VARCHAR(4000) NOT NULL,
+    CONSTRAINT "SENTRY_PERM_CHANGE_PK" PRIMARY KEY ("CHANGE_ID")
+);
+
+-- Table `SENTRY_PATH_CHANGE` for classes 
[org.apache.sentry.provider.db.service.model.MSentryPathChange]
+CREATE TABLE "SENTRY_PATH_CHANGE"
+(
+    "CHANGE_ID" bigint NOT NULL,
+    "NOTIFICATION_HASH" CHAR(40) NOT NULL,
+    "CREATE_TIME_MS" bigint NOT NULL,
+    "PATH_CHANGE" text NOT NULL,
+    CONSTRAINT "SENTRY_PATH_CHANGE_PK" PRIMARY KEY ("CHANGE_ID")
+);
+
+-- Constraints for table SENTRY_PATH_CHANGE for class 
[org.apache.sentry.provider.db.service.model.MSentryPathChange]
+CREATE UNIQUE INDEX "NOTIFICATION_HASH_INDEX" ON "SENTRY_PATH_CHANGE" 
("NOTIFICATION_HASH");
+
+-- Table SENTRY_HMS_NOTIFICATION_ID for classes 
[org.apache.sentry.provider.db.service.model.MSentryHmsNotification]
+CREATE TABLE "SENTRY_HMS_NOTIFICATION_ID"
+(
+    "NOTIFICATION_ID" bigint NOT NULL
+);
+
+CREATE INDEX "SENTRY_HMS_NOTIF_ID_INDEX" ON "SENTRY_HMS_NOTIFICATION_ID" 
("NOTIFICATION_ID");
+
+-- Table SENTRY_USER_DB_PRIVILEGE_MAP for join relationship
+CREATE TABLE "SENTRY_USER_DB_PRIVILEGE_MAP" (
+  "USER_ID" BIGINT NOT NULL,
+  "DB_PRIVILEGE_ID" BIGINT NOT NULL,
+  "GRANTOR_PRINCIPAL" character varying(128)
+);
+
+ALTER TABLE "SENTRY_USER_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SENTRY_USR_DB_PRV_MAP_PK" PRIMARY KEY 
("USER_ID","DB_PRIVILEGE_ID");
+
+ALTER TABLE ONLY "SENTRY_USER_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SN_USR_DB_PRV_MAP_SN_USER_FK"
+  FOREIGN KEY ("USER_ID") REFERENCES "SENTRY_USER"("USER_ID") DEFERRABLE;
+
+ALTER TABLE ONLY "SENTRY_USER_DB_PRIVILEGE_MAP"
+  ADD CONSTRAINT "SN_USR_DB_PRV_MAP_SN_DB_PRV_FK"
+  FOREIGN KEY ("DB_PRIVILEGE_ID") REFERENCES 
"SENTRY_DB_PRIVILEGE"("DB_PRIVILEGE_ID") DEFERRABLE;
+
+CREATE INDEX "SEN_USR_DB_PRV_MAP_USR_FK_IDX" ON "SENTRY_USER_DB_PRIVILEGE_MAP" 
("USER_ID");
+
+CREATE INDEX "SEN_USR_DB_PRV_MAP_PRV_FK_IDX" ON "SENTRY_USER_DB_PRIVILEGE_MAP" 
("DB_PRIVILEGE_ID");
+
+COMMIT;

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-2.1.0-to-2.2.0.sql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-2.1.0-to-2.2.0.sql
 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-2.1.0-to-2.2.0.sql
new file mode 100644
index 0000000..96ee7cb
--- /dev/null
+++ 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-2.1.0-to-2.2.0.sql
@@ -0,0 +1,2 @@
+-- Version update
+UPDATE SENTRY_VERSION SET SCHEMA_VERSION='2.2.0', VERSION_COMMENT='Sentry 
release version 2.2.0' WHERE VER_ID=1;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-derby-2.1.0-to-2.2.0.sql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-derby-2.1.0-to-2.2.0.sql
 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-derby-2.1.0-to-2.2.0.sql
new file mode 100644
index 0000000..96ee7cb
--- /dev/null
+++ 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-derby-2.1.0-to-2.2.0.sql
@@ -0,0 +1,2 @@
+-- Version update
+UPDATE SENTRY_VERSION SET SCHEMA_VERSION='2.2.0', VERSION_COMMENT='Sentry 
release version 2.2.0' WHERE VER_ID=1;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-mysql-2.1.0-to-2.2.0.sql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-mysql-2.1.0-to-2.2.0.sql
 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-mysql-2.1.0-to-2.2.0.sql
new file mode 100644
index 0000000..b0775e8
--- /dev/null
+++ 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-mysql-2.1.0-to-2.2.0.sql
@@ -0,0 +1,5 @@
+SELECT 'Upgrading Sentry store schema from 2.1.0 to 2.2.0' AS ' ';
+
+UPDATE SENTRY_VERSION SET SCHEMA_VERSION='2.2.0', VERSION_COMMENT='Sentry 
release version 2.2.0' WHERE VER_ID=1;
+
+SELECT 'Finish upgrading Sentry store schema from 2.1.0 to 2.2.0' AS ' ';
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-oracle-2.1.0-to-2.2.0.sql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-oracle-2.1.0-to-2.2.0.sql
 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-oracle-2.1.0-to-2.2.0.sql
new file mode 100644
index 0000000..d695fe4
--- /dev/null
+++ 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-oracle-2.1.0-to-2.2.0.sql
@@ -0,0 +1,6 @@
+SELECT 'Upgrading Sentry store schema from 2.1.0 to 2.2.0' AS Status from dual;
+
+
+UPDATE SENTRY_VERSION SET SCHEMA_VERSION='2.2.0', VERSION_COMMENT='Sentry 
release version 2.2.0' WHERE VER_ID=1;
+
+SELECT 'Finished upgrading Sentry store schema from 2.010 to 2.2.0' AS Status 
from dual;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-postgres-2.1.0-to-2.2.0.sql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-postgres-2.1.0-to-2.2.0.sql
 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-postgres-2.1.0-to-2.2.0.sql
new file mode 100644
index 0000000..38dab64
--- /dev/null
+++ 
b/sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-postgres-2.1.0-to-2.2.0.sql
@@ -0,0 +1,6 @@
+SELECT 'Upgrading Sentry store schema from 2.1.0 to 2.2.0';
+
+
+UPDATE "SENTRY_VERSION" SET "SCHEMA_VERSION"='2.2.0', 
"VERSION_COMMENT"='Sentry release version 2.2.0' WHERE "VER_ID"=1;
+
+SELECT 'Finished upgrading Sentry store schema from 2.1.0 to 2.2.0';
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.db2
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.db2 
b/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.db2
index 081f575..6e08822 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.db2
+++ b/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.db2
@@ -3,4 +3,5 @@
 1.6.0-to-1.7.0
 1.7.0-to-1.8.0
 1.8.0-to-2.0.0
-2.0.0-to-2.1.0
\ No newline at end of file
+2.0.0-to-2.1.0
+2.1.0-to-2.2.0
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.derby
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.derby 
b/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.derby
index a2cc2b6..c0e3771 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.derby
+++ b/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.derby
@@ -4,3 +4,4 @@
 1.7.0-to-1.8.0
 1.8.0-to-2.0.0
 2.0.0-to-2.1.0
+2.1.0-to-2.2.0

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.mysql
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.mysql 
b/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.mysql
index a2cc2b6..c0e3771 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.mysql
+++ b/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.mysql
@@ -4,3 +4,4 @@
 1.7.0-to-1.8.0
 1.8.0-to-2.0.0
 2.0.0-to-2.1.0
+2.1.0-to-2.2.0

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.oracle
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.oracle 
b/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.oracle
index a2cc2b6..c0e3771 100644
--- a/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.oracle
+++ b/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.oracle
@@ -4,3 +4,4 @@
 1.7.0-to-1.8.0
 1.8.0-to-2.0.0
 2.0.0-to-2.1.0
+2.1.0-to-2.2.0

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.postgres
----------------------------------------------------------------------
diff --git 
a/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.postgres 
b/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.postgres
index a2cc2b6..c0e3771 100644
--- 
a/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.postgres
+++ 
b/sentry-provider/sentry-provider-db/src/main/resources/upgrade.order.postgres
@@ -4,3 +4,4 @@
 1.7.0-to-1.8.0
 1.8.0-to-2.0.0
 2.0.0-to-2.1.0
+2.1.0-to-2.2.0

http://git-wip-us.apache.org/repos/asf/sentry/blob/b3121070/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStoreSchemaInfo.java
----------------------------------------------------------------------
diff --git 
a/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStoreSchemaInfo.java
 
b/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStoreSchemaInfo.java
index f710253..0bb695a 100644
--- 
a/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStoreSchemaInfo.java
+++ 
b/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStoreSchemaInfo.java
@@ -38,7 +38,7 @@ public class SentryStoreSchemaInfo {
   private final Map<String, List<String>> sentrySchemaVersions;
   private final String sentryScriptDir;
 
-  private static final String SENTRY_VERSION = "2.1.0";
+  private static final String SENTRY_VERSION = "2.2.0";
 
   public SentryStoreSchemaInfo(String sentryScriptDir, String dbType)
       throws SentryUserException {

Reply via email to