[ https://issues.apache.org/jira/browse/IMPALA-7896?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul Rogers resolved IMPALA-7896. --------------------------------- Resolution: Fixed > Literals should not need explicit analyze step > ---------------------------------------------- > > Key: IMPALA-7896 > URL: https://issues.apache.org/jira/browse/IMPALA-7896 > Project: IMPALA > Issue Type: Improvement > Components: Frontend > Affects Versions: Impala 3.0 > Reporter: Paul Rogers > Assignee: Paul Rogers > Priority: Minor > > The Impala FE has the concept of a _lteral_ (string, boolean, null, number.) > Originally, literals could only be created as part of the AST. Hence, all > literals are subclasses of {{LiteralExpr}} which are {{ExprNodes}}. The > analysis step is used to set the type of the literal numbers, when not known > at create time. If literals were used only in the AST, this would be fine, > they could be analyzed with an analyzer. > In fact, as the code has evolved, {{LiteralExpr}} nodes are created via the > catalog, which has no analyzer. To fudge the issue, the > {{LiteralExpr.create()}} function does analysis with a null analyzer. This, > in turn, means that the {{analyze()}} code needs to special case a null > analyzer. This, in turn, leads to brittle, error prone code. > Since literals are immutable (except, sadly, for type), it is better that > they start analyzed. Since the only attribute which must be set is the type, > and the type can be known at create time, we have the {{analyze()}} be an > optional no-op, leading to cleaner semantics. -- This message was sent by Atlassian JIRA (v7.6.3#76005)