Repository: sentry Updated Branches: refs/heads/sentry-ha-redesign 13c3305de -> 1024efb4d
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/caf924b5 Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/caf924b5 Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/caf924b5 Branch: refs/heads/sentry-ha-redesign Commit: caf924b5fe7862932443d445bdf46de1bedd2a61 Parents: 13c3305 Author: Sravya Tirukkovalur <[email protected]> Authored: Thu Oct 27 12:21:37 2016 -0700 Committer: Sravya Tirukkovalur <[email protected]> Committed: Thu Oct 27 16:35:49 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/caf924b5/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 25531af..ca6bb17 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 @@ -297,8 +297,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/caf924b5/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/caf924b5/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 ff4eeaf..255e266 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 @@ -2200,7 +2200,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
