Chao created HIVE-10209:
---------------------------

             Summary: FetchTask with VC may fail because of ExecMapper.done is 
true
                 Key: HIVE-10209
                 URL: https://issues.apache.org/jira/browse/HIVE-10209
             Project: Hive
          Issue Type: Bug
          Components: Query Processor
    Affects Versions: 1.1.0
            Reporter: Chao
            Assignee: Chao


ExecMapper.done is a static variable, and may cause issues in the following 
example:

{code}
set hive.fetch.task.conversion=minimal;
select * from src where key < 10 limit 1;
set hive.fetch.task.conversion=more;
select *, BLOCK__OFFSET_INSIDE__FILE from src where key < 10;
{code}

The second select won't return any result.

The issue is, the first select query will be converted to a MapRedTask with 
only a mapper. And, when the task is done, because of the limit operator, 
ExecMapper.done will be set to true.

Then, when the second select query begin to execute, it will call 
{{FetchOperator::getRecordReader()}}, and since here we have virtual column, an 
instance of {{HiveRecordReader}} will be returned. The problem is, 
{{HiveRecordReader::doNext()}} will check ExecMapper.done. In this case, since 
the value is true, it will quit immediately.

In short, I think making ExecMapper.done static is a bad idea. The first query 
should in no way affect the second one.



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

Reply via email to