[
https://issues.apache.org/jira/browse/IGNITE-12449?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17002813#comment-17002813
]
Igor Seliverstov commented on IGNITE-12449:
-------------------------------------------
Current limitations: only limited operation types are implemented: nested loop
join, filter, project, exchange, table scan (sort, index scan are under
development)
what is out of scope: query parsing, planning, validation, etc.
So, let's say you have several query fragments (executing on different nodes),
each of them is an operations tree, each of them executes in any order.
that we need to prove:
* dependency conflicts are solving as expected, so, regardless of initial start
order all, the query parts eventually executes in proper order.
* There is no deadlocks
* There is no OOM, operation buffers are used as expected, except known cases
when an operation requires full dataset (nested loop joins, sort operations,
grouping operations, etc)
> Calcite integration. Execution flow.
> ------------------------------------
>
> Key: IGNITE-12449
> URL: https://issues.apache.org/jira/browse/IGNITE-12449
> Project: Ignite
> Issue Type: Task
> Reporter: Igor Seliverstov
> Assignee: Igor Seliverstov
> Priority: Major
>
> We need to introduce query execution environment.
> Execution should:
> * use streaming approach
> * have suspend/resume ability
> * work in event loop threads
> Rough protocol description:
> The flow is defined as a tree of operations, like filter, project etc.
> Each node provides a sink to consume data from its children and has a target
> sink to push data to upper node.
> Upper node may signal that it's ready to consume data. After a node received
> a signal it starts to push data into a target sink until the sink says there
> is no place for new data, after that the node stops pushing data until a new
> signal.
> Some of nodes (like inbox node, describing remote input) may signal that
> there is some new data, it forces a root node to signal its children top to
> bottom.
> When a signal arrived an inbox node, the inbox starts to push the new data.
> When a node realizes the data is over, it sends "end" signal to a target
> sink, after that an upper node wont signal the node to continue data pushing.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)