Paul Rogers created IMPALA-7905:
-----------------------------------

             Summary: ToSqlUtils does not correctly quote lower-case Hive 
keywords
                 Key: IMPALA-7905
                 URL: https://issues.apache.org/jira/browse/IMPALA-7905
             Project: IMPALA
          Issue Type: Bug
          Components: Frontend
    Affects Versions: Impala 3.0
            Reporter: Paul Rogers
            Assignee: Paul Rogers


Not sure yet how to reproduce this error via the shell, but here is the code 
analysis.

The {{ToSqlUtils}} class generates a {{CREATE TABLE}} statement, which uses a 
method {{getIdentSql()}} to possibly quote a table or column name. This same 
method is used in multiple places in the {{toSql()}} logic for various 
statements.

The comment for the method says:

bq. returns an identifier lexable by Impala and Hive, possibly by enclosing the 
original identifier in "`" quotes.

To check for a Hive-compatible identifier, the code uses the Hive lexer:

{code:java}
    HiveLexer hiveLexer = new HiveLexer(new ANTLRStringStream(ident));
{code}

A unit test shows that this logic fails to catch lower case keywords: "select", 
say, while it does catch upper-case keywords: "SELECT".

Checking the Hive source, it appears we're using the lexer wrong:

{code:java}
    HiveLexerX lexer = new HiveLexerX(new ANTLRNoCaseStringStream(command));
{code}

The fix is simple: upper-case the symbol before using he Hive lexer.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to