[
https://issues.apache.org/jira/browse/IGNITE-7604?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16401954#comment-16401954
]
Vladimir Ozerov commented on IGNITE-7604:
-----------------------------------------
[~skalashnikov],
1) DmlStatementsProcessor.TxDmlReducerIterator - let's move it top-level class
2) DmlStatementsProcessor.executeUpdateStatement - what would happen if
{{!plan.isLocalSubquery() == true}}, but query is neither INSERT, nor MERGE?
3) Please make sure to add {{Query}} word to new classes, so that we can
distinguish them from native cache stuff.
4) GridNearTxEnlistFuture.init - what is the point of these manipulations with
lock timeouts?
5) GridNearTxEnlistFuture - дooks like batches has 1-to-1 relation to
MiniFuture, so it makes sense to merge them for the sake of memory efficiency.
We can do that separately.
6) GridNearTxEnlistFuture - "remap" flag is not used
7) Please make sure to fix all warnings
[~gvvinblade], your input is needed for changes in DHT enlist futures.
> SQL TX: Allow DML operations with reducer
> -----------------------------------------
>
> Key: IGNITE-7604
> URL: https://issues.apache.org/jira/browse/IGNITE-7604
> Project: Ignite
> Issue Type: Task
> Components: sql
> Reporter: Igor Seliverstov
> Assignee: Sergey Kalashnikov
> Priority: Major
>
> The following protocol is proposed for DML request with non-trivial reduce
> step within a transaction.
> 1. The SQL select part is deduced from a DML request and is split to form
> two-step map/reduce request.
> 2. Map query requests are sent to data nodes which execute them locally.
> 3. Resulting data pages are sent to originating node (reducer), which
> accumulates them.
> 4. Originating node performs reduce step on data received from map nodes and
> forms batches of updates to apply to target table.
> 5. Lock requests containing delta updates are mapped and sent to data nodes
> storing the corresponding keys.
> 6. Lock acks are received at originating node and accumulated there,
> producing the total update counter.
> Note that no locks are acquired when map requests are processed.
> This is consistent with what Oracle and PostgreSQL do (but not MySQL!) with
> respect to locks within complex DML statements.
> The Oracle docs
> (https://docs.oracle.com/cd/B28359_01/server.111/b28318/consist.htm#CNCPT1351)
> specifically states:
> The transaction that contains a DML statement does not need to acquire row
> locks on any rows selected by a subquery or an implicit query, such as a
> query in a WHERE clause. A subquery or implicit query in a DML statement is
> guaranteed to be consistent as of the start of the query and does not see the
> effects of the DML statement it is part of.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)