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();
}