You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Evgeny Stanilovsky (Jira)" <ji...@apache.org> on 2023/03/28 13:29:00 UTC

[jira] [Commented] (IGNITE-18225) Sql. Pushdown MODIFY to data node

    [ https://issues.apache.org/jira/browse/IGNITE-18225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17706004#comment-17706004 ] 

Evgeny Stanilovsky commented on IGNITE-18225:
---------------------------------------------

As i can see, we still use _FragmentMapping#updatingTableAssignments()_ , d owe need to get rid of them ?

> Sql. Pushdown MODIFY to data node
> ---------------------------------
>
>                 Key: IGNITE-18225
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18225
>             Project: Ignite
>          Issue Type: Improvement
>          Components: sql
>            Reporter: Konstantin Orlov
>            Assignee: Maksim Zhuravkov
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>          Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> Currently, ModifyNode can only have distribution "single". This means that this node will be executed on a single node, and the input should be gathered at one place. Assume the following query: UPDATE t SET a = a + 1. Such a query will be executed in 2 steps: first we select the rows to update and then do the update. Having a ModifyNode as "single" will result in sending all rows of table T to the reducer, and then send updated version of rows back to the data nodes.
> We could eliminate this round trip by pushing down the ModifyNode (i.e. allowing this node to have distribution matching the distribution of modifying table).
> Two approaches come to my mind:
>  * as with aggregates, we can introduce 2 physical version of a logical modify: SingleModify (NB: not colocated!) and Map- + ReduceModify (I hope the rest of the necessary changes are clear)
>  * make the ModifyNode to have the same distribution as modifying table. In that case we need to put SUM aggregate on top of ModifyNode to reduce an outcome.
> Personally, I would prefer to stick with the second option, because in that case we can get rid of {{FragmentMapping#updatingTableAssignments()}} which was introduced more like a hack.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)