Vladislav Pyatkov created IGNITE-28957:
------------------------------------------

             Summary: Calcite SELECT FOR UPDATE may cause OOM by materializing 
the entire result set
                 Key: IGNITE-28957
                 URL: https://issues.apache.org/jira/browse/IGNITE-28957
             Project: Ignite
          Issue Type: Bug
          Components: sql
            Reporter: Vladislav Pyatkov


h2. Motivation
`ExecutionServiceImpl#tryExecuteForUpdate` calls 
`ListFieldsQueryCursor#getAll()` for the inner SELECT before acquiring row 
locks:
{code}
ListFieldsQueryCursor<?> innerCursor = mapAndExecutePlan(qry, plan.innerPlan());
List<List<?>> rows = innerCursor.getAll();
{code}
As a result, the complete query result is materialized on the coordinator.
A broad SELECT FOR UPDATE, especially one involving large values or joins, may 
consume an unbounded amount of heap and eventually cause an OutOfMemoryError.

h2. Definition of done
The implementation should avoid keeping the entire result set in memory.



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

Reply via email to