[
https://issues.apache.org/jira/browse/IMPALA-9286?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tim Armstrong updated IMPALA-9286:
----------------------------------
Component/s: Frontend
> Refactor the resolution of local views
> --------------------------------------
>
> Key: IMPALA-9286
> URL: https://issues.apache.org/jira/browse/IMPALA-9286
> Project: IMPALA
> Issue Type: Task
> Components: Frontend
> Reporter: Quanlong Huang
> Priority: Major
>
> Local views (views in WITH-clause) are registered to each Analyzers'
> localViews_ (a map use their aliases as keys) and don't have fully qualified
> paths. This prevents us from resetting them in FromClause#reset(). Because
> the unresolved tableRefs should use fully qualified paths to make sure we get
> the same results in later resolution.
> This may make the FromClause still dirty after reset() since it doesn't come
> back to the state before analyze(). We could introduce fully qualified paths
> for local views to fix this.
> There's already an old TODO for this:
> [https://github.com/apache/impala/blob/1bf9212/fe/src/main/java/org/apache/impala/analysis/FromClause.java#L104-L107]
> {code:java}
> public void reset() {
> for (int i = 0; i < size(); ++i) {
> TableRef origTblRef = get(i);
> if (origTblRef.isResolved() && !(origTblRef instanceof InlineViewRef)) {
> // Replace resolved table refs with unresolved ones.
> TableRef newTblRef = new TableRef(origTblRef);
> // Use the fully qualified raw path to preserve the original
> resolution.
> // Otherwise, non-fully qualified paths might incorrectly match a
> local view.
> // TODO for 2.3: This full qualification preserves analysis state
> which is
> // contrary to the intended semantics of reset(). We could address
> this issue by
> // changing the WITH-clause analysis to register local views that have
> // fully-qualified table refs, and then remove the full qualification
> here.
> newTblRef.rawPath_ =
> origTblRef.getResolvedPath().getFullyQualifiedRawPath();
> set(i, newTblRef);
> }
> get(i).reset();
> }
> this.analyzed_ = false;
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]