hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lefty Leverenz (JIRA)" <>
Subject [jira] [Commented] (HIVE-10209) FetchTask with VC may fail because ExecMapper.done is true
Date Fri, 25 Sep 2015 06:27:05 GMT


Lefty Leverenz commented on HIVE-10209:

Version note:  This was also committed to branch-1.0 (for release 1.0.2) on September 24th
with commit 2801d2c4b1a61315ae7f28c0ea825580e30f411b.

> FetchTask with VC may fail because ExecMapper.done is true
> ----------------------------------------------------------
>                 Key: HIVE-10209
>                 URL:
>             Project: Hive
>          Issue Type: Bug
>          Components: Query Processor
>    Affects Versions: 1.1.0
>            Reporter: Chao Sun
>            Assignee: Chao Sun
>             Fix For: 1.2.0
>         Attachments: HIVE-10209.1-spark.patch, HIVE-10209.2-spark.patch
> 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, if running in local mode.
> 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
> 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

View raw message