You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by mj...@apache.org on 2017/05/15 17:40:01 UTC

[4/4] incubator-impala git commit: IMPALA-5318: Generate access events with fully qualified table names

IMPALA-5318: Generate access events with fully qualified table names

This commit fixes an issue where dropping a table that is not loaded
correctly (throws TableLoadingException) generates an access event that doesn't
use a fully qualified table name.

Change-Id: Icd63f7e4accc7fda9719e13059fa8d432981618a
Reviewed-on: http://gerrit.cloudera.org:8080/6879
Reviewed-by: Alex Behm <al...@cloudera.com>
Tested-by: Impala Public Jenkins


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

Branch: refs/heads/master
Commit: a2caacf872ac0881723c865539f5be2d3e79e0e2
Parents: f195b75
Author: Dimitris Tsirogiannis <dt...@cloudera.com>
Authored: Fri May 12 14:11:28 2017 -0700
Committer: Impala Public Jenkins <im...@gerrit.cloudera.org>
Committed: Sat May 13 02:26:56 2017 +0000

----------------------------------------------------------------------
 .../apache/impala/analysis/DropTableOrViewStmt.java   |  3 ++-
 .../java/org/apache/impala/analysis/TableDef.java     |  2 +-
 .../java/org/apache/impala/analysis/AuditingTest.java | 14 +++++++++++++-
 3 files changed, 16 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/a2caacf8/fe/src/main/java/org/apache/impala/analysis/DropTableOrViewStmt.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/org/apache/impala/analysis/DropTableOrViewStmt.java b/fe/src/main/java/org/apache/impala/analysis/DropTableOrViewStmt.java
index d7d429c..fc9db4d 100644
--- a/fe/src/main/java/org/apache/impala/analysis/DropTableOrViewStmt.java
+++ b/fe/src/main/java/org/apache/impala/analysis/DropTableOrViewStmt.java
@@ -105,7 +105,8 @@ public class DropTableOrViewStmt extends StatementBase {
       // we set it as TABLE as VIEW loading is unlikely to fail and even if it does
       // TABLE -> VIEW is a small difference.
       analyzer.addAccessEvent(new TAccessEvent(
-          tableName_.toString(), TCatalogObjectType.TABLE, Privilege.DROP.toString()));
+          analyzer.getFqTableName(tableName_).toString(), TCatalogObjectType.TABLE,
+          Privilege.DROP.toString()));
     } catch (AnalysisException e) {
       if (ifExists_ && analyzer.getMissingTbls().isEmpty()) return;
       throw e;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/a2caacf8/fe/src/main/java/org/apache/impala/analysis/TableDef.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/org/apache/impala/analysis/TableDef.java b/fe/src/main/java/org/apache/impala/analysis/TableDef.java
index 5c8a653..f524595 100644
--- a/fe/src/main/java/org/apache/impala/analysis/TableDef.java
+++ b/fe/src/main/java/org/apache/impala/analysis/TableDef.java
@@ -202,7 +202,7 @@ class TableDef {
       throw new AnalysisException(Analyzer.TBL_ALREADY_EXISTS_ERROR_MSG + getTblName());
     }
 
-    analyzer.addAccessEvent(new TAccessEvent(getTblName().toString(),
+    analyzer.addAccessEvent(new TAccessEvent(fqTableName_.toString(),
         TCatalogObjectType.TABLE, Privilege.CREATE.toString()));
 
     Preconditions.checkNotNull(options_);

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/a2caacf8/fe/src/test/java/org/apache/impala/analysis/AuditingTest.java
----------------------------------------------------------------------
diff --git a/fe/src/test/java/org/apache/impala/analysis/AuditingTest.java b/fe/src/test/java/org/apache/impala/analysis/AuditingTest.java
index 163424f..60d31c8 100644
--- a/fe/src/test/java/org/apache/impala/analysis/AuditingTest.java
+++ b/fe/src/test/java/org/apache/impala/analysis/AuditingTest.java
@@ -229,6 +229,13 @@ public class AuditingTest extends AnalyzerTest {
         "drop table functional.unsupported_partition_types");
     Assert.assertEquals(accessEvents, Sets.newHashSet(new TAccessEvent(
         "functional.unsupported_partition_types", TCatalogObjectType.TABLE, "DROP")));
+
+    // Dropping a table without using a fully qualified path should generate the correct
+    // access event (see IMPALA-5318).
+    accessEvents = AnalyzeAccessEvents(
+        "drop table unsupported_partition_types", "functional");
+    Assert.assertEquals(accessEvents, Sets.newHashSet(new TAccessEvent(
+        "functional.unsupported_partition_types", TCatalogObjectType.TABLE, "DROP")));
   }
 
   @Test
@@ -456,7 +463,12 @@ public class AuditingTest extends AnalyzerTest {
    */
   private Set<TAccessEvent> AnalyzeAccessEvents(String stmt)
       throws AuthorizationException, AnalysisException {
-    Analyzer analyzer = createAnalyzer(Catalog.DEFAULT_DB);
+    return AnalyzeAccessEvents(stmt, Catalog.DEFAULT_DB);
+  }
+
+  private Set<TAccessEvent> AnalyzeAccessEvents(String stmt, String db)
+      throws AuthorizationException, AnalysisException {
+    Analyzer analyzer = createAnalyzer(db);
     AnalyzesOk(stmt, analyzer);
     return analyzer.getAccessEvents();
   }