diff --git ql/src/java/org/apache/hadoop/hive/ql/Driver.java ql/src/java/org/apache/hadoop/hive/ql/Driver.java index 9040d9b..912aef1 100644 --- ql/src/java/org/apache/hadoop/hive/ql/Driver.java +++ ql/src/java/org/apache/hadoop/hive/ql/Driver.java @@ -1435,6 +1435,7 @@ public int execute() throws CommandNeedRetryException { if (SessionState.get() != null) { try { + SessionState.get().getLineageState().clear(); SessionState.get().getHiveHistory().logPlanProgress(plan); } catch (Exception e) { // ignore diff --git ql/src/java/org/apache/hadoop/hive/ql/hooks/LineageInfo.java ql/src/java/org/apache/hadoop/hive/ql/hooks/LineageInfo.java index 22a8785..10bc476 100644 --- ql/src/java/org/apache/hadoop/hive/ql/hooks/LineageInfo.java +++ ql/src/java/org/apache/hadoop/hive/ql/hooks/LineageInfo.java @@ -112,6 +112,13 @@ public Table getTable() { public Partition getPartition() { return this.part; } + + @Override + public String toString() { + return isPartition() ? + part.getDbName() + "." + part.getTableName() + part.getValues() : + tab.getDbName() + "." + tab.getTableName(); + } } /** @@ -190,6 +197,11 @@ public boolean equals(Object obj) { } return true; } + + @Override + public String toString() { + return dc + ":" + fld; + } } /** @@ -242,6 +254,11 @@ public FieldSchema getColumn() { public void setColumn(FieldSchema column) { this.column = column; } + + @Override + public String toString() { + return tabAlias + ":" + column; + } } public static class TableAliasInfo implements Serializable { @@ -288,6 +305,11 @@ public Table getTable() { public void setTable(Table table) { this.table = table; } + + @Override + public String toString() { + return table.getDbName() + "." + table.getTableName() + "(" + alias + ")"; + } } /** @@ -356,6 +378,11 @@ public void setExpr(String expr) { public void setBaseCols(List baseCols) { this.baseCols = baseCols; } + + @Override + public String toString() { + return "[" + type + "]" + baseCols; + } } /** @@ -401,4 +428,8 @@ public void putDependency(DataContainer dc, FieldSchema col, Dependency dep) { public Set> entrySet() { return index.entrySet(); } + + public void clear() { + index.clear(); + } } diff --git ql/src/java/org/apache/hadoop/hive/ql/session/LineageState.java ql/src/java/org/apache/hadoop/hive/ql/session/LineageState.java index e706f52..e716ed2 100644 --- ql/src/java/org/apache/hadoop/hive/ql/session/LineageState.java +++ ql/src/java/org/apache/hadoop/hive/ql/session/LineageState.java @@ -116,4 +116,13 @@ public LineageInfo getLineageInfo() { public void setIndex(Index index) { this.index = index; } + + /** + * Clear all lineage states + */ + public void clear() { + dirToFop.clear(); + linfo.clear(); + index.clear(); + } }