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)