Fan Yunbo created HIVE-14686:
--------------------------------

             Summary: Get unexpected command type when execute query "CREATE 
TABLE IF NOT EXISTS ... AS"
                 Key: HIVE-14686
                 URL: https://issues.apache.org/jira/browse/HIVE-14686
             Project: Hive
          Issue Type: Bug
    Affects Versions: 1.1.0
            Reporter: Fan Yunbo
            Assignee: Fan Yunbo


See the query: create table if not exists DST as select * from SRC;
if the table DST doesn't exist, SessionState.get().getHiveOperation() will 
return HiveOperation.CREATETABLE_AS_SELECT;
But if the table DST already exists, it will return HiveOperation.CREATETABLE;

It really makes some trouble for those who judge operation type by 
SessionState.get().getHiveOperation().

The reason I find out is that the function analyzeCreateTable in 
SemanticAnalyzer.java will return null and won't set the correct command type 
if the table already exists.

Here is the related code:
// check for existence of table
    if (ifNotExists) {
      try {
        Table table = getTable(qualifiedTabName, false);
        if (table != null) { // table exists
          return null;
        }
      } catch (HiveException e) {
        // should not occur since second parameter to getTableWithQN is false
        throw new IllegalStateException("Unxpected Exception thrown: " + 
e.getMessage(), e);
      }
    }




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to