Repository: sentry Updated Branches: refs/heads/master a43f7dff0 -> 44dc1598e
SENTRY-1313: Database prefix is not honoured when executing grant statement (Sravya Tirukkovalur, Reviewed by: Hao Hao and Alexander Kolbasov) Change-Id: I7c39724cd8b8f89d96499fdaed70fffad75728aa Project: http://git-wip-us.apache.org/repos/asf/sentry/repo Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/44dc1598 Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/44dc1598 Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/44dc1598 Branch: refs/heads/master Commit: 44dc1598e5e6a98137a84b51005cafac36ad3272 Parents: a43f7df Author: Sravya Tirukkovalur <[email protected]> Authored: Thu Oct 27 12:21:37 2016 -0700 Committer: Sravya Tirukkovalur <[email protected]> Committed: Thu Oct 27 12:21:37 2016 -0700 ---------------------------------------------------------------------- .../hive/SentryHiveAuthorizationTaskFactoryImpl.java | 4 ++-- .../hive/TestSentryHiveAuthorizationTaskFactory.java | 11 +++++++++++ .../tests/e2e/dbprovider/TestDatabaseProvider.java | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sentry/blob/44dc1598/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/SentryHiveAuthorizationTaskFactoryImpl.java ---------------------------------------------------------------------- diff --git a/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/SentryHiveAuthorizationTaskFactoryImpl.java b/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/SentryHiveAuthorizationTaskFactoryImpl.java index 013d227..ceb3b17 100644 --- a/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/SentryHiveAuthorizationTaskFactoryImpl.java +++ b/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/SentryHiveAuthorizationTaskFactoryImpl.java @@ -300,8 +300,8 @@ public class SentryHiveAuthorizationTaskFactoryImpl implements HiveAuthorization subject.setServer(true); } else if (astChild.getToken().getType() == HiveParser.TOK_TABLE_TYPE) { subject.setTable(true); - String[] qualified = BaseSemanticAnalyzer.getQualifiedTableName(gchild); - subject.setObject(qualified[1]); + String qualified = BaseSemanticAnalyzer.getUnescapedName(gchild); + subject.setObject(qualified); } for (int i = 1; i < astChild.getChildCount(); i++) { gchild = (ASTNode) astChild.getChild(i); http://git-wip-us.apache.org/repos/asf/sentry/blob/44dc1598/sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestSentryHiveAuthorizationTaskFactory.java ---------------------------------------------------------------------- diff --git a/sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestSentryHiveAuthorizationTaskFactory.java b/sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestSentryHiveAuthorizationTaskFactory.java index 4fcb71c..aed218e 100644 --- a/sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestSentryHiveAuthorizationTaskFactory.java +++ b/sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestSentryHiveAuthorizationTaskFactory.java @@ -465,6 +465,17 @@ public class TestSentryHiveAuthorizationTaskFactory { Assert.assertEquals(SERVER, privilegeDesc.getObject()); } + /* + Db prefix in grant + */ + @Test + public void testDBPrefixInGrant() throws Exception { + DDLWork work = analyze(parse("GRANT " + ALL + " ON TABLE " + "db1." + TABLE + + " TO ROLE " + ROLE)); + GrantDesc grantDesc = work.getGrantDesc(); + Assert.assertEquals("Fully qualified table name in Grant statement is resolved incorrectly", "db1." + TABLE, + grantDesc.getPrivilegeSubjectDesc().getObject()); + } private void expectSemanticException(String command, String msg) throws Exception { try { analyze(parse(command)); http://git-wip-us.apache.org/repos/asf/sentry/blob/44dc1598/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java ---------------------------------------------------------------------- diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java index 438f87e..63b00e2 100644 --- a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java +++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java @@ -2209,7 +2209,7 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration { resultSet = statement.executeQuery("SHOW GRANT ROLE role1"); while ( resultSet.next()) { - assertThat(resultSet.getString(1), equalToIgnoringCase("default"));//the value should be db1 + assertThat(resultSet.getString(1), equalToIgnoringCase("db1"));//the value should be db1 assertThat(resultSet.getString(2), equalToIgnoringCase("tab1")); assertThat(resultSet.getString(3), equalToIgnoringCase(""));//partition assertThat(resultSet.getString(4), equalToIgnoringCase(""));//column
