> On May 4, 2018, 8:21 p.m., kalyan kumar kalvagadda wrote:
> > sentry-provider/sentry-provider-db/src/main/resources/011-SENTRY-2154.derby.sql
> > Lines 24-44 (patched)
> > <https://reviews.apache.org/r/66263/diff/4/?file=2016931#file2016931line24>
> >
> >     Lina, Is the the user privileges are implemented for both db model and 
> > generic model?

yes


> On May 4, 2018, 8:21 p.m., kalyan kumar kalvagadda wrote:
> > sentry-provider/sentry-provider-db/src/main/resources/011-SENTRY-2154.mysql.sql
> > Lines 19-21 (patched)
> > <https://reviews.apache.org/r/66263/diff/4/?file=2016932#file2016932line19>
> >
> >     mysql creates indexes for foreign keys. Why should we explcitly add 
> > indexes. It is an duplicate operation, right.

there are two reasons: 1) Keep the index name same across DB types. 2) I found 
MySql does not always create index properly

When there are more than one foreign keys in a table, MySql only automatically 
creates index for the last defined foreign key: KEY 
`SEN_USR_DB_PRV_MAP_SN_DB_PRV_FK` (`DB_PRIVILEGE_ID`)
When adding a key explicitly "CREATE INDEX `SEN_USR_DB_PRV_MAP_USR_FK_IDX` ON 
`SENTRY_USER_DB_PRIVILEGE_MAP` (`USER_ID`)", the index is created. Note MySql 
did not automatically create index for this foreign key.
When adding a key explicitly "CREATE INDEX `SEN_USR_DB_PRV_MAP_PRV_FK_IDX` ON 
`SENTRY_USER_DB_PRIVILEGE_MAP` (`DB_PRIVILEGE_ID`)", the auto-created index 
`SEN_USR_DB_PRV_MAP_SN_DB_PRV_FK` is removed.
. 

MariaDB [testSentry4]> -- Table SENTRY_USER_DB_PRIVILEGE_MAP for join 
relationship
MariaDB [testSentry4]> 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;
Query OK, 0 rows affected (0.01 sec)
 
MariaDB [testSentry4]>
MariaDB [testSentry4]> ALTER TABLE `SENTRY_USER_DB_PRIVILEGE_MAP`
    ->   ADD CONSTRAINT `SENTRY_USER_DB_PRIVILEGE_MAP_PK` PRIMARY KEY 
(`USER_ID`,`DB_PRIVILEGE_ID`);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
MariaDB [testSentry4]>
MariaDB [testSentry4]> 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`);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
MariaDB [testSentry4]>
MariaDB [testSentry4]> ALTER TABLE `SENTRY_USER_DB_PRIVILEGE_MAP`
    ->   ADD CONSTRAINT `SEN_USR_DB_PRV_MAP_SN_DB_PRV_FK`
    ->   FOREIGN KEY (`DB_PRIVILEGE_ID`) REFERENCES 
`SENTRY_DB_PRIVILEGE`(`DB_PRIVILEGE_ID`);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
MariaDB [testSentry4]> show create table SENTRY_USER_DB_PRIVILEGE_MAP;
+------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table                        | Create Table                                   
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                           |
+------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SENTRY_USER_DB_PRIVILEGE_MAP | CREATE TABLE `SENTRY_USER_DB_PRIVILEGE_MAP` (
  `USER_ID` bigint(20) NOT NULL,
  `DB_PRIVILEGE_ID` bigint(20) NOT NULL,
  `GRANTOR_PRINCIPAL` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
NULL,
  PRIMARY KEY (`USER_ID`,`DB_PRIVILEGE_ID`),
  KEY `SEN_USR_DB_PRV_MAP_SN_DB_PRV_FK` (`DB_PRIVILEGE_ID`),
  CONSTRAINT `SEN_USR_DB_PRV_MAP_SN_DB_PRV_FK` FOREIGN KEY (`DB_PRIVILEGE_ID`) 
REFERENCES `SENTRY_DB_PRIVILEGE` (`DB_PRIVILEGE_ID`),
  CONSTRAINT `SEN_USR_DB_PRV_MAP_SN_USR_FK` FOREIGN KEY (`USER_ID`) REFERENCES 
`SENTRY_USER` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
 
MariaDB [testSentry4]> CREATE INDEX `SEN_USR_DB_PRV_MAP_USR_FK_IDX` ON 
`SENTRY_USER_DB_PRIVILEGE_MAP` (`USER_ID`);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
MariaDB [testSentry4]> show create table SENTRY_USER_DB_PRIVILEGE_MAP;
+------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table                        | Create Table                                   
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                              |
+------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SENTRY_USER_DB_PRIVILEGE_MAP | CREATE TABLE `SENTRY_USER_DB_PRIVILEGE_MAP` (
  `USER_ID` bigint(20) NOT NULL,
  `DB_PRIVILEGE_ID` bigint(20) NOT NULL,
  `GRANTOR_PRINCIPAL` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
NULL,
  PRIMARY KEY (`USER_ID`,`DB_PRIVILEGE_ID`),
  KEY `SEN_USR_DB_PRV_MAP_SN_DB_PRV_FK` (`DB_PRIVILEGE_ID`),
  KEY `SEN_USR_DB_PRV_MAP_USR_FK_IDX` (`USER_ID`),
  CONSTRAINT `SEN_USR_DB_PRV_MAP_SN_DB_PRV_FK` FOREIGN KEY (`DB_PRIVILEGE_ID`) 
REFERENCES `SENTRY_DB_PRIVILEGE` (`DB_PRIVILEGE_ID`),
  CONSTRAINT `SEN_USR_DB_PRV_MAP_SN_USR_FK` FOREIGN KEY (`USER_ID`) REFERENCES 
`SENTRY_USER` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
 
MariaDB [testSentry4]> CREATE INDEX `SEN_USR_DB_PRV_MAP_PRV_FK_IDX` ON 
`SENTRY_USER_DB_PRIVILEGE_MAP` (`DB_PRIVILEGE_ID`);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
MariaDB [testSentry4]> show create table SENTRY_USER_DB_PRIVILEGE_MAP;
+------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table                        | Create Table                                   
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                            |
+------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SENTRY_USER_DB_PRIVILEGE_MAP | CREATE TABLE `SENTRY_USER_DB_PRIVILEGE_MAP` (
  `USER_ID` bigint(20) NOT NULL,
  `DB_PRIVILEGE_ID` bigint(20) NOT NULL,
  `GRANTOR_PRINCIPAL` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 
NULL,
  PRIMARY KEY (`USER_ID`,`DB_PRIVILEGE_ID`),
  KEY `SEN_USR_DB_PRV_MAP_USR_FK_IDX` (`USER_ID`),
  KEY `SEN_USR_DB_PRV_MAP_PRV_FK_IDX` (`DB_PRIVILEGE_ID`),
  CONSTRAINT `SEN_USR_DB_PRV_MAP_SN_DB_PRV_FK` FOREIGN KEY (`DB_PRIVILEGE_ID`) 
REFERENCES `SENTRY_DB_PRIVILEGE` (`DB_PRIVILEGE_ID`),
  CONSTRAINT `SEN_USR_DB_PRV_MAP_SN_USR_FK` FOREIGN KEY (`USER_ID`) REFERENCES 
`SENTRY_USER` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |


- Na


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66263/#review202475
-----------------------------------------------------------


On May 4, 2018, 7:25 p.m., Na Li wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/66263/
> -----------------------------------------------------------
> 
> (Updated May 4, 2018, 7:25 p.m.)
> 
> 
> Review request for sentry, Alexander Kolbasov, Arjun Mishra, kalyan kumar 
> kalvagadda, and Sergio Pena.
> 
> 
> Bugs: sentry-2154
>     https://issues.apache.org/jira/browse/sentry-2154
> 
> 
> Repository: sentry
> 
> 
> Description
> -------
> 
> update mysql related scripts to 
> 1) dd new DB table SENTRY_USER_DB_PRIVILEGE_MAP and 
> SENTRY_USER_GM_PRIVILEGE_MAP to support grant user to privileges
> 2)  a flag is added in privilege table to indicate the privilege is created 
> by user, or created by sentry implicitly. I will make change in application 
> code so User can view the implicit privileges, but cannot change it directly
> 
> 
> Diffs
> -----
> 
>   
> sentry-provider/sentry-provider-db/src/main/resources/011-SENTRY-2154.derby.sql
>  PRE-CREATION 
>   
> sentry-provider/sentry-provider-db/src/main/resources/011-SENTRY-2154.mysql.sql
>  PRE-CREATION 
>   
> sentry-provider/sentry-provider-db/src/main/resources/011-SENTRY-2154.oracle.sql
>  PRE-CREATION 
>   
> sentry-provider/sentry-provider-db/src/main/resources/011-SENTRY-2154.postgres.sql
>  PRE-CREATION 
>   sentry-provider/sentry-provider-db/src/main/resources/sentry-db2-2.1.0.sql 
> 5e36ee3 
>   
> sentry-provider/sentry-provider-db/src/main/resources/sentry-derby-2.1.0.sql 
> 374d59e 
>   
> sentry-provider/sentry-provider-db/src/main/resources/sentry-mysql-2.1.0.sql 
> 8876872 
>   
> sentry-provider/sentry-provider-db/src/main/resources/sentry-oracle-2.1.0.sql 
> 46d3fc8 
>   
> sentry-provider/sentry-provider-db/src/main/resources/sentry-postgres-2.1.0.sql
>  c28dd9f 
>   
> sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-db2-2.0.0-to-2.1.0.sql
>  3e0373d 
>   
> sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-derby-2.0.0-to-2.1.0.sql
>  5640b76 
>   
> sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-mysql-2.0.0-to-2.1.0.sql
>  350bc48 
>   
> sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-oracle-2.0.0-to-2.1.0.sql
>  3afd788 
>   
> sentry-provider/sentry-provider-db/src/main/resources/sentry-upgrade-postgres-2.0.0-to-2.1.0.sql
>  13df239 
> 
> 
> Diff: https://reviews.apache.org/r/66263/diff/4/
> 
> 
> Testing
> -------
> 
> Run the script and update script, and the tables are created and updated 
> successfully.
> 
> 
> Thanks,
> 
> Na Li
> 
>

Reply via email to