[
https://issues.apache.org/jira/browse/IGNITE-18225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maksim Zhuravkov reassigned IGNITE-18225:
-----------------------------------------
Assignee: Maksim Zhuravkov
> 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
>
> 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)