Hello,

Any guidance or thoughts on the thread below?

Thanks,
Gerald

On Fri, May 18, 2018 at 11:39 AM, Gerald Sangudi <gsang...@23andme.com>
wrote:

> Maryann,
>
> Can Phoenix provide hash aggregation on the client side? Are there design
> / implementation reasons not to, or should I file a ticket for this?
>
> Thanks,
> Gerald
>
> On Fri, May 18, 2018 at 11:29 AM, Maryann Xue <maryann....@gmail.com>
> wrote:
>
>> Hi Gerald,
>>
>> Phoenix does have hash aggregation. The reason why sort-based aggregation
>> is used in your query plan is that the aggregation happens on the client
>> side. And that is because sort-merge join is used (as hinted) which is a
>> client driven join, and after that join stage all operations can only be on
>> the client-side.
>>
>>
>> Thanks,
>> Marynn
>>
>> On Fri, May 18, 2018 at 10:57 AM, Gerald Sangudi <gsang...@23andme.com>
>> wrote:
>>
>>> Hello,
>>>
>>> Does Phoenix provide hash aggregation? If not, is it on the roadmap, or
>>> should I file a ticket? We have aggregation queries that do not require
>>> sorted results.
>>>
>>> For example, this EXPLAIN plan shows a CLIENT SORT.
>>>
>>> *CREATE TABLE unsalted (       keyA BIGINT NOT NULL,       keyB BIGINT
>>> NOT NULL,       val SMALLINT,       CONSTRAINT pk PRIMARY KEY (keyA,
>>> keyB));*
>>>
>>>
>>> *EXPLAINSELECT /*+ USE_SORT_MERGE_JOIN */ t1.val v1, t2.val v2, COUNT(*)
>>> c FROM unsalted t1 JOIN unsalted t2 ON (t1.keyA = t2.keyA) GROUP BY t1.val,
>>> t2.val;+------------------------------------------------------------+-----------------+----------------+--+|
>>>                            PLAN   | EST_BYTES_READ | EST_ROWS_READ  |
>>> |+------------------------------------------------------------+-----------------+----------------+--+|
>>> SORT-MERGE-JOIN (INNER) TABLES                             | null | null |
>>> ||     CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER UNSALTED  | null | null
>>> | || AND                                                        | null |
>>> null | ||     CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER UNSALTED  | null
>>> | null | || CLIENT SORTED BY [TO_DECIMAL(T1.VAL), T2.VAL]              |
>>> null | null | || CLIENT AGGREGATE INTO DISTINCT ROWS BY [T1.VAL, T2.VAL]
>>>    | null | null |
>>> |+------------------------------------------------------------+-----------------+----------------+--+*
>>> Thanks,
>>> Gerald
>>>
>>
>>
>

Reply via email to