phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Samarth Jain (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (PHOENIX-4287) Incorrect aggregate query results when stats are disable for parallelization
Date Tue, 31 Oct 2017 06:30:02 GMT

     [ https://issues.apache.org/jira/browse/PHOENIX-4287?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Samarth Jain updated PHOENIX-4287:
----------------------------------
    Attachment: PHOENIX-4287_v3.patch

I think I figured out what was going on. When we are not using stats for parallelization,
we need to reset the start key of the scan to either the original scan's start key (if we
are looking at the first region) or to the end key of the previous region.

[~jamestaylor] - your keen eyes would be much appreciated. It is tricky to get this stuff
right.

> Incorrect aggregate query results when stats are disable for parallelization
> ----------------------------------------------------------------------------
>
>                 Key: PHOENIX-4287
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4287
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.12.0
>         Environment: HBase 1.3.1
>            Reporter: Mujtaba Chohan
>            Assignee: Samarth Jain
>              Labels: localIndex
>             Fix For: 4.12.1
>
>         Attachments: PHOENIX-4287.patch, PHOENIX-4287_v2.patch, PHOENIX-4287_v3.patch,
PHOENIX-4287_v3_wip.patch
>
>
> With {{phoenix.use.stats.parallelization}} set to {{false}}, aggregate query returns
incorrect results when stats are available.
> With local index and stats disabled for parallelization:
> {noformat}
> explain select count(*) from TABLE_T;
> +-------------------------------------------------------------------------------------------------------+-----------------+----------------+-----------+
> |                                                 PLAN                              
                   | EST_BYTES_READ  | EST_ROWS_READ  |  EST_INFO |
> +-------------------------------------------------------------------------------------------------------+-----------------+----------------+-----------+
> | CLIENT 0-CHUNK 332170 ROWS 625043899 BYTES PARALLEL 0-WAY RANGE SCAN OVER TABLE_T [1]
 | 625043899       | 332170         | 150792825 |
> |     SERVER FILTER BY FIRST KEY ONLY                                               
                   | 625043899       | 332170         | 150792825 |
> |     SERVER AGGREGATE INTO SINGLE ROW                                              
                   | 625043899       | 332170         | 150792825 |
> +-------------------------------------------------------------------------------------------------------+-----------------+----------------+-----------+
> select count(*) from TABLE_T;
> +-----------+
> | COUNT(1)  |
> +-----------+
> | 0         |
> +-----------+
> {noformat}
> Using data table
> {noformat}
> explain select /*+NO_INDEX*/ count(*) from TABLE_T;
> +--------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> |                                               PLAN                                
              | EST_BYTES_READ  | EST_ROWS_READ  |  EST_INFO_TS   |
> +--------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> | CLIENT 2-CHUNK 332151 ROWS 438492470 BYTES PARALLEL 1-WAY FULL SCAN OVER TABLE_T  |
438492470       | 332151         | 1507928257617  |
> |     SERVER FILTER BY FIRST KEY ONLY                                               
              | 438492470       | 332151         | 1507928257617  |
> |     SERVER AGGREGATE INTO SINGLE ROW                                              
              | 438492470       | 332151         | 1507928257617  |
> +--------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> select /*+NO_INDEX*/ count(*) from TABLE_T;
> +-----------+
> | COUNT(1)  |
> +-----------+
> | 14        |
> +-----------+
> {noformat}
> Without stats available, results are correct:
> {noformat}
> explain select /*+NO_INDEX*/ count(*) from TABLE_T;
> +----------------------------------------------------------------------+-----------------+----------------+--------------+
> |                                 PLAN                                 | EST_BYTES_READ
 | EST_ROWS_READ  | EST_INFO_TS  |
> +----------------------------------------------------------------------+-----------------+----------------+--------------+
> | CLIENT 2-CHUNK PARALLEL 1-WAY FULL SCAN OVER TABLE_T  | null            | null    
      | null         |
> |     SERVER FILTER BY FIRST KEY ONLY                                  | null       
    | null           | null         |
> |     SERVER AGGREGATE INTO SINGLE ROW                                 | null       
    | null           | null         |
> +----------------------------------------------------------------------+-----------------+----------------+--------------+
> select /*+NO_INDEX*/ count(*) from TABLE_T;
> +-----------+
> | COUNT(1)  |
> +-----------+
> | 333327    |
> +-----------+
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message