Repository: modin-project/modin
Pull request: DOCS-#3752: improve documentation of `OmnisciOnNative` execution
Signed-off-by: Dmitry Chigarev <dmitry.chigarev@intel.com>

<!--
Thank you for your contribution!
Please review the contributing docs: https://modin.readthedocs.io/en/latest/CONTRIBUTING.html
if you have questions about contributing.
-->

## What do these changes do?

This PR adds diagrams & descriptions of the query flow for `OmnisciOnNative` execution (most of the text was moved from the `omnisci_on_native/omnisci_engine.rst` to the `omnisci_on_native/index.rst`)

- [x] commit message follows format outlined [here](https://modin.readthedocs.io/en/latest/contributing.html)
- [x] passes `flake8 modin/ asv_bench/benchmarks scripts/doc_checker.py`
- [x] passes `black --check modin/ asv_bench/benchmarks scripts/doc_checker.py`
- [x] signed commit with `git commit -s` <!-- you can amend your commit with a signature via `git commit -amend -s` -->
- [x] Resolves #3752 <!-- issue must be created for each patch -->
- [x] tests passing
- [x] module layout described at `docs/developer/architecture.rst` is up-to-date <!-- if you have added, renamed or removed files or directories please update the documentation accordingly -->

Built docs: https://modin--3753.org.readthedocs.build/en/3753/
Affected section: https://modin--3753.org.readthedocs.build/en/3753/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/index.html


TODO:
- [x] General diagram of the query flow & its description
- [x] Data ingress diagram
- [x] Data ingress description
- [x] Diagram with the example of forming lazy computation tree
- [x] Diagram of calcite query building flow
- [x] Maybe simplify query flow diagram

Problem statement:
Improve documentation of `OmnisciOnNative` execution
The improved documentation should contain:
1. Description & diagram of the query flow.
2. Description & diagram of the data ingress.

P.S. description of the data egress is questionable since there's no implementation for this in Omnisci backend and so it just uses pandas.

Hints from issue discussion:

Commit message: Remove separate 'omnisci_engine' page

Signed-off-by: Dmitry Chigarev <dmitry.chigarev@intel.com>

Patch to review:
diff --git a/docs/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/index.rst b/docs/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/index.rst
index 8b9d77c7413..c4c00fc62e9 100644
--- a/docs/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/index.rst
+++ b/docs/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/index.rst
@@ -1,7 +1,237 @@
 :orphan:
 
+OmniSciOnNative execution
+=========================
+
+OmniSciDB is an open-source SQL-based relational database designed for the
+massive parallelism of modern CPU and GPU hardware. Its execution engine
+is built on LLVM JIT compiler.
+
+OmniSciDB can be embedded into an application as a dynamic library that
+provides both C++ and Python APIs. A specialized in-memory storage layer
+provides an efficient way to import data in Arrow table format.
+
+`OmniSciOnNative` execution uses OmniSciDB for both as a storage format and for
+actual data transformation.
+
+Relational engine limitations
+-----------------------------
+
+Using a relational database engine implies a set of restrictions on
+operations we can execute on a dataframe.
+
+1. We cannot handle frames that use data types not supported by OmniSciDB.
+Currently, we allow only integer, float, string, and categorical data types.
+
+2. Column data should be homogeneous.
+
+3. Can only support operations that map to relational algebra. This means
+most operations are supported over a single axis (axis=0) only. Non-relational
+operations like transposition and pivot are not supported.
+
+When the unsupported data type is detected or unsupported operations is requested
+we use the original pandas framework.
+
+Partitions
+----------
+
+Partitioning is used to achieve high parallelism. In the case of OmniSciDB
+based execution parallelism is provided by OmniSciDB execution engine
+and we don't need to manage multiple partitions.
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe`
+always has a single partition.
+
+A partition holds data in either ``pandas.DataFrame`` or ``pyarrow.Table``
+format. ``pandas.DataFrame`` is preferred only when we detect unsupported
+data type and therefore have to use ``pandas`` framework for processing.
+In other cases ``pyarrow.Table`` format is preferred. Arrow tables can be
+zero-copy imported into OmniSciDB. A query execution result is also
+returned as an Arrow table.
+
+Data Ingress
+------------
+
+When a user imports data in Modin DataFrame (from a file or from some python
+object like array or dictionary) they invoke one of the ``modin.pandas.io`` 
+functions (to read data from a file) or use :py:class:`~modin.pandas.dataframe.DataFrame` constructor
+(to create a Frame from an iterable object). Both of the paths lead to the
+:py:class:`~modin.core.execution.dispatching.factories.dispatcher.FactoryDispatcher`
+that defines a factory that will handle the import query. For `OmnisciOnNative`
+execution, the factory is accordingly 
+:py:class:`~modin.core.execution.dispatching.factories.factories.ExperimentalOmnisciOnNativeFactory`.
+The factory then dispatches the import query: if the data is needed to be read from a file
+- the query is routed to the 
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.io.OmnisciOnNativeIO`
+class, that uses Arrow Framework to read the file into a PyArrow Table, the resulted
+table is then passed to the 
+:py:class:`~modin.experimental.core.storage_formats.omnisci.query_compiler.DFAlgQueryCompiler`.
+If the factory deals with importing a Python's iterable object, the query goes straight
+into the 
+:py:class:`~modin.experimental.core.storage_formats.omnisci.query_compiler.DFAlgQueryCompiler`
+bypassing
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.io.OmnisciOnNativeIO`.
+The Query Compiler then sanitizes an input object and passes it to one of the
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe` 
+factory methods (``.from_*``). The Frame's build method stores the passed object into a new Frame's partition
+and returns the resulted Dataframe, which is then wrapped into a Query Compiler, which is
+then wrapped into a high-level Modin DataFrame, which is then returned to the user.
+
+.. figure:: /img/omnisci/omnisci_ingress.svg
+   :align: center
+
+Note, that during this ingress flow, no data was imported to the OmniSciDB. The need for
+importing to OmniSci is decided at the execution stage by the Modin Core Dataframe layer.
+If the query requires for the data to be placed in OmniSciDB then the import is triggered.
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe` 
+passes partition to import to the
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.partitioning.partition_manager.OmnisciOnNativeDataframePartitionManager`
+that extracts a partition's underlying object and sends a request to import it to the OmniSci
+Server. The response for the request is a unique identifier for the just imported table
+at OmniSciDB, this identifier is placed in the partition. After that, the partition has
+a link to the concrete table in OmniSciDB to query, and the data is considered to be
+fully imported.
+
+.. figure:: /img/omnisci/omnisci_import.svg
+   :align: center
+
+Data transformation flow
+------------------------
+
+.. figure:: /img/omnisci/omnisci_query_flow.svg
+   :align: center
+
+When a user calls any :py:class:`~modin.pandas.dataframe.DataFrame` API, a query
+starts forming at the `API` layer to be executed at the `Execution` layer. The `API`
+layer is responsible for processing the query appropriately, for example, determining
+whether the final result should be a ``DataFrame`` or ``Series`` object, and
+sanitizing the input to the
+:py:class:`~modin.experimental.core.storage_formats.omnisci.query_compiler.DFAlgQueryCompiler`,
+e.g. validating a parameter from the query and defining specific intermediate values
+to provide more context to the query compiler.
+
+The :py:class:`~modin.experimental.core.storage_formats.omnisci.query_compiler.DFAlgQueryCompiler`
+is responsible for reducing the recieved query to the pre-defined Dataframe algebra operators
+and pass their execution to the
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe`.
+
+When :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe`
+recieves a query it determines, whether the operation is require data materialization
+or can be performed lazily. Depending on that the operation is either appended to a
+lazy computation tree or executed.
+
+Lazy execution
+""""""""""""""
+
+OmniSciDB has a powerful query optimizer and an execution engine that
+combines multiple operations into a single execution module. E.g. join,
+filter and aggregation can be executed in a single data scan.
+
+To utilize this feature and reduce data transformation and transfer
+overheads, all of the operations that doesn't require data materialization
+are performed lazily.
+
+Lazy operations on a frame build a tree which is later translated into
+a query executed by OmniSci. Each of the tree nodes has its input node(s)
+- a frame argument(s) of the operation. When a new node is appended to the
+tree, it becomes its root. The leaves of the tree are always a special node
+type, whose input is an actual materialized frame to execute operations 
+from the tree on.
+
+.. figure:: /img/omnisci/omnisci_lazy_tree_example.svg
+   :align: center
+
+There are two types of trees. The first one describes operations on frames that
+map to relational operations like projection, union, etc. Nodes in this tree are
+derived from
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.df_algebra.DFAlgNode`
+class. Leaf nodes are instances of the
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.df_algebra.FrameNode`
+class. The second type of tree is used to describe operations on columns, including
+arithmetic operations, type casts, datetime operations, etc. Nodes of this tree are derived from
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.expr.BaseExpr`
+class. Leaf nodes are instances of the
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.expr.InputRefExpr`
+class.
+
+Visit the corresponding sections to go through all of the types of nodes:
+
+* :doc:`Frame nodes <df_algebra>`
+* :doc:`Expression nodes <expr>`
+
+Execution of a computation tree
+"""""""""""""""""""""""""""""""
+
+Frames are materialized (executed) when their data is accessed. E.g. it
+happens when we try to access the frame's index or shape. There are two ways
+to execute required operations: through Arrow or through OmniSciDB.
+
+Arrow execution
+'''''''''''''''
+
+For simple operations which don't include actual computations, execution can use
+Arrow API. We can use it to rename columns, drop columns and concatenate
+frames. Arrow execution is preferable since it doesn't require actual data import/export
+to the OmniSciDB.
+
+OmniSciDB execution
+'''''''''''''''''''
+
+To execute query in OmniSciDB engine we need to import data first. We should
+find all leaves of an operation tree and import their Arrow tables. Partitions
+with imported tables hold corresponding table names used to refer to them in
+queries.
+
+OmniSciDB is SQL-based. SQL parsing is done in a separate process using
+the Apache Calcite framework. A parsed query is serialized into JSON format
+and is transferred back to OmniSciDB. In Modin, we don't generate SQL queries
+for OmniSciDB but use this JSON format instead. Such queries can be directly
+executed by OmniSciDB and also they can be transferred to Calcite server for
+optimizations.
+
+Operations used by Calcite in its intermediate representation are implemented
+in classes derived from
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_algebra.CalciteBaseNode`.
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_builder.CalciteBuilder` is used to
+translate :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.df_algebra.DFAlgNode`-based
+trees into :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_algebra.CalciteBaseNode`-based sequences.
+It also translates :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.expr.BaseExpr`-based
+trees by replacing :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.expr.InputRefExpr`
+nodes with either :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_algebra.CalciteInputRefExpr`
+or :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_algebra.CalciteInputIdxExpr`
+depending on context.
+
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_serializer.CalciteSerializer`
+is used to serialize the resulting sequence into
+JSON format. This JSON becomes a query by simply adding 'execute relalg'
+or 'execute calcite' prefix (the latter is used if we want to use Calcite
+for additional query optimization).
+
+.. figure:: /img/omnisci/omnisci_calcite_serialization_flow.svg
+   :align: center
+
+The building of Calcite query (starting from the conversion to the Calcite Algebra and up to
+the forming JSON query) is orchestrated by 
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.partitioning.partition_manager.OmnisciOnNativeDataframePartitionManager`.
+
+An execution result is a new Arrow table which is used to form a new
+partition. This partition is assigned to the executed frame. The frame's
+operation tree is replaced with
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.df_algebra.FrameNode` operation.
+
+Rowid column and sub-queries
+''''''''''''''''''''''''''''
+
+A special case of an index is the default index - 0-based numeric sequence.
+In our representation, such an index is represented by the absence of index columns.
+If we need to access the index value we can use the virtual ``rowid`` column provided
+by OmniSciDB. Unfortunately, this special column is available for physical
+tables only. That means we cannot access it for a node that is not a tree leaf.
+That makes us execute trees with such nodes in several steps. First, we
+materialize all frames that require ``rowid`` column and only after that we can
+materialize the root of the tree.
+
 OmnisciOnNative Dataframe Implementation
-========================================
+----------------------------------------
 
 Modin implements ``Dataframe``, ``PartitionManager`` and ``Partition`` classes
 specific for ``OmnisciOnNative`` execution:
@@ -10,15 +240,11 @@ specific for ``OmnisciOnNative`` execution:
 * :doc:`OmnisciOnNativeDataframePartition <partitioning/partition>`
 * :doc:`OmnisciOnNativeDataframePartitionManager <partitioning/partition_manager>`
 
-Overview of OmniSci embedded engine usage can be accessed in the related section:
-
-* :doc:`OmniSci Engine <omnisci_engine>`
-
 To support lazy execution Modin uses two types of trees. Operations on frames are described
 by ``DFAlgNode`` based trees. Scalar computations are described by ``BaseExpr`` based tree.
 
-* :doc:`DFAlgNode <df_algebra>`
-* :doc:`BaseExpr <expr>`
+* :doc:`Frame nodes <df_algebra>`
+* :doc:`Expression nodes <expr>`
 
 Interactions with OmniSci engine are done using ``OmnisciServer`` class. Queries use serialized
 Calcite relational algebra format. Calcite algebra nodes are based on ``CalciteBaseNode`` class.
@@ -36,10 +262,19 @@ class.
     dataframe
     partitioning/partition
     partitioning/partition_manager
-    omnisci_engine
     df_algebra
     expr
     calcite_algebra
     calcite_builder
     calcite_serializer
     omnisci_worker
+
+Column name mangling
+''''''''''''''''''''
+
+In ``pandas.DataFrame`` columns might have names not allowed in SQL (e. g.
+an empty string). To handle this we simply add '`F_`' prefix to
+column names. Index labels are more tricky because they might be non-unique.
+Indexes are represented as regular columns, and we have to perform a special
+mangling to get valid and unique column names. Demangling is done when we
+transform our frame (i.e. its Arrow table) into ``pandas.DataFrame`` format.
diff --git a/docs/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/omnisci_engine.rst b/docs/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/omnisci_engine.rst
deleted file mode 100644
index 66c4af9d8a7..00000000000
--- a/docs/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/omnisci_engine.rst
+++ /dev/null
@@ -1,146 +0,0 @@
-:orphan:
-
-OmniSciDB Execution Engine (experimental)
-=========================================
-
-OmniSciDB is an open-source SQL-based relational database designed for the
-massive parallelism of modern CPU and GPU hardware. Its execution engine
-is built on LLVM JIT compiler.
-
-OmniSciDB can be embedded into an application as a dynamic library that
-provides both C++ and Python APIs. A specialized in-memory storage layer
-provides an efficient way to import data in Arrow table format.
-
-Relational engine limitations
------------------------------
-
-Using a relational database engine implies a set of restrictions on
-operations we can execute on a dataframe.
-
-1. We cannot handle frames that use data types not supported by OmniSciDB.
-Currently, we allow only integer, float, string, and categorical data types.
-
-2. Column data should be homogeneous.
-
-3. Can only support operations that map to relational algebra. This means
-most operations are supported over a single axis (axis=0) only. Non-relational
-operations like transposition and pivot are not supported.
-
-When the unsupported data type is detected or unsupported operations is requested
-we use the original pandas framework.
-
-Lazy execution
---------------
-
-OmniSciDB has a powerful query optimizer and an execution engine that
-combines multiple operations into a single execution module. E.g. join,
-filter and aggregation can be executed in a single data scan.
-
-To utilize this feature and reduce data transformation and transfer
-overheads, we need to implement lazy operations on a dataframe. The
-dataframe with lazy computation is implemented in
-:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe`
-class.
-
-Lazy operations on a frame build a tree which is later translated into
-a query executed by OmniSci. We use two types of trees. The first one
-describes operations on frames that map to relational operations like
-projection, union, etc. Nodes in this tree are derived from
-:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.df_algebra.DFAlgNode`
-class. Some of the nodes (e.g.
-:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.df_algebra.TransformNode` mapped to a projection)
-need a description of how individual columns are computed. The second
-type of tree is used to describe operations on columns, including
-arithmetic operations, type casts, datetime operations, etc. Nodes
-of this tree are derived from
-:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.expr.BaseExpr` class.
-
-Partitions
-----------
-
-Partitioning is used to achieve high parallelism. In the case of OmniSciDB
-based execution parallelism is provided by OmniSciDB execution engine
-and we don't need to manage multiple partitions.
-:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe`
-always has a single partition.
-
-A partition holds data in either ``pandas.DataFrame`` or ``pyarrow.Table``
-format. ``pandas.DataFrame`` is preferred only when we detect unsupported
-data type and therefore have to use ``pandas`` framework for processing.
-In other cases ``pyarrow.Table`` format is preferred. Arrow tables can be
-zero-copy imported into OmniSciDB. A query execution result is also
-returned as an Arrow table.
-
-Query execution
----------------
-
-Frames are materialized (executed) when their data is accessed. E.g. it
-happens when we try to access the frame's index or shape. We have two ways
-to execute required operations.
-
-Arrow execution
-"""""""""""""""
-
-For simple operations which don't include actual computations, we can use
-Arrow API. We can use it to rename columns, drop columns and concatenate
-frames.
-
-OmniSciDB execution
-"""""""""""""""""""
-
-To execute query in OmniSciDB engine we need to import data first. We should
-find all leaves of an operation tree and import their Arrow tables. Partitions
-with imported tables hold corresponding table names used to refer to them in
-queries.
-
-OmniSciDB is SQL-based. SQL parsing is done in a separate process using
-the Apache Calcite framework. A parsed query is serialized into JSON format
-and is transferred back to OmniSciDB. In Modin, we don't generate SQL queries
-for OmniSciDB but use this JSON format instead. Such queries can be directly
-executed by OmniSciDB and also they can be transferred to Calcite server for
-optimizations.
-
-Operations used by Calcite in its intermediate representation are implemented
-in classes derived from
-:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_algebra.CalciteBaseNode`.
-:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_builder.CalciteBuilder` is used to
-translate :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.df_algebra.DFAlgNode`-based
-trees into :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_algebra.CalciteBaseNode`-based sequences.
-It also translates :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.expr.BaseExpr`-based
-trees by replacing :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.expr.InputRefExpr`
-nodes with either :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_algebra.CalciteInputRefExpr`
-or :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_algebra.CalciteInputIdxExpr`
-depending on context.
-
-:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.calcite_serializer.CalciteSerializer`
-is used to serialize the resulting sequence into
-JSON format. This JSON becomes a query by simply adding 'execute relalg'
-or 'execute calcite' prefix (the latter is used if we want to use Calcite
-for additional query optimization).
-
-An execution result is a new Arrow table which is used to form a new
-partition. This partition is assigned to the executed frame. The frame's
-operation tree is replaced with
-:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.df_algebra.FrameNode` operation.
-
-Column name mangling
-''''''''''''''''''''
-
-In ``pandas.DataFrame`` columns might have names not allowed in SQL (e. g.
-an empty string). To handle this we simply add '`F_`' prefix to
-column names. Index labels are more tricky because they might be non-unique.
-Indexes are represented as regular columns, and we have to perform a special
-mangling to get valid and unique column names. Demangling is done when we
-transform our frame (i.e. its Arrow table) into ``pandas.DataFrame`` format.
-
-Rowid column and sub-queries
-''''''''''''''''''''''''''''
-
-A special case of an index is the default index - 0-based numeric sequence.
-In our representation, such an index is represented by the absence of index columns.
-If we need to access the index value we can use the virtual ``rowid`` column provided
-by OmniSciDB. Unfortunately, this special column is available for physical
-tables only. That means we cannot access it for a node that is not a tree leaf.
-That makes us execute trees with such nodes in several steps. First, we
-materialize all frames that require ``rowid`` column and only after that we can
-materialize the root of the tree.
diff --git a/docs/img/omnisci/omnisci_calcite_serialization_flow.svg b/docs/img/omnisci/omnisci_calcite_serialization_flow.svg
new file mode 100644
index 00000000000..c1d6ad2f982
--- /dev/null
+++ b/docs/img/omnisci/omnisci_calcite_serialization_flow.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="591px" height="371px" viewBox="-0.5 -0.5 591 371" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-12-03T15:01:17.612Z&quot; agent=&quot;5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36&quot; etag=&quot;CWLIHT3jPfBygPM1uMV-&quot; version=&quot;15.7.3&quot; type=&quot;google&quot;&gt;&lt;diagram id=&quot;gOcMMbkDX22Sx66GSq_y&quot; name=&quot;Page-1&quot;&gt;7VrRcto4FP0aZroPYWQJ2/AYIG1nt02yS2e2+9RRbAHaGouV5Qby9SvZso2RCNDBhpY2M411Lcn2OfceHSvuoNFi9Y7j5fwjC0nUgSBcddC4A6HjeUj+UpF1HnFVSwVmnIa6UxWY0Beig0BHUxqSpNZRMBYJuqwHAxbHJBC1GOacPde7TVlUv+oSz4gRmAQ4MqN/01DM82jfBVX8PaGzeXFlB+gzC1x01oFkjkP2vBFCdx004oyJ/GixGpFIgVfgko97u+NseWOcxOKQATdz76/k3Qi8T/4EXx8/ff7wxzS+0bN8w1GqH1jfrFgXCHCWxiFRk4AOGj7PqSCTJQ7U2WfJuYzNxSKSLUceTmkUjVjEeDYWvYXqR8b1ZQgXZLXz/p0SFZlOhC2I4GvZRQ+4GWggdSY5BQfPFS9F1sw3KEFIB7FOhVk5dYWWPNCAHQEeNMB7WMQ0CehDfI8F/UbGWOApxwtigCphEHXkcERnsTwOJBxEwjdUYFGZiLf6xIKGoRo+5CShL/gpm0pRsmQ0FtmzucOOO1ZzpYIleSmpqRPB2VdS0BKzmGwxpUOnIMlxtlhCFpY8C02wMZYGBvoklDWum4yLOZuxGEd3VXRYT/qqzwfGlhrVf4kQay1YCvA6nWRFxWc9XB3/sxEfrzZOjNdFI5ZPq4Y4XVg01SjQHXiDIlANzVq1sY+EUwmZSp4smD+2etbXyZTQsJQH5BUMtYgLzGdE7JMTMzk4ibJ6qKuzhehs6C3neL3RQed3NfOjClQ5h9xaxvV8sJUz+YRVBpV39v1JhX4c3Sx1sqhI/0DdBE1VpLsfPBKHt2r1VoIY4SShQR2vOrhFsTldBzobBQe6wPVfLzrZaLBudjCzgbxrQb6IHVc2Rl3ALeKRv0Vofvt61KZz2JrIyCBvUJ8o1wVjolMVm2fkyyOWa6OgLP6IY+nAeLcDvUgtqE9cHs1ExqKHF6rK4qdkmbXBASGexl/IigSpmvzLMsLxm9+OWLwjMhU/6tJdrtTlyu2aOtGzCkVDOuHv5j17DZD//ZcSdaGRyX/AFstU4KIzJ1dkwraZtCm+XfIbYtKxKPyFezDQc+ouDHr+mV1Y/0AXhs7hwqBbt2HQdZq3Yf1mbdjYveuPe0bxdpQ3Uv9OU65oe3kdHGbQvKaqdWCgOsJRIIEbpjQK5Wr7pH5fzcJo8ONZFkbU5ittkQ0ndNCF8IGa6O0RvMO1ba9m9e0UtOOUyw2J7Qo81inDXn2ist2SU3bM/bzR9fogCA4QVpuyNle45r6BllYZvGdqpxuCCZGuNg6uhydna2cX2nZ2beXf3J4hMMC/dL/q+H5Nurue0z+zX3V6B4r/RRhWpNuNGtYCkpM51gb8DRxY/E2b/tMxNwi1Sk5kskrNeznhjo8llBRXuVqLC617xK3uGJibfqYkX5DFvRTrWhbvsdZ1pwq0ZV3Nd/lf1si0RjZtbtcama8Yv08e7jvlXiyYSgwgGA+vhiQI7E6iRhJslSTfFMsL96/A79d0uTtw4R5tbtq/wkP/7H0R/rXXhn+FDf/h2xn1/EG/GVODzu1roWn+1QdDk4BmSxuXT3uEZv5MfhP5NmpaVczTf5RwFX4TncpvGhM17Deh+YLxy8e4dkrO52PMl4K8AiH4lIF4NdRA+2K/SU2/TWaKF3/7xxkjdRssCmk8M/dpJM5pJKROQnCdZN7s+GJxb519x26LbFafmOfaWX2oj+7+Bw==&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="20" y="20" width="10" height="330" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><rect x="0" y="0" width="160" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 80px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">OmnisciOnNativeDataframe</div></div></div></foreignObject><text x="80" y="14" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">OmnisciOnNativeDataframe</text></switch></g><path d="M 260 340 L 145 340 L 38.37 339.78" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 33.12 339.77 L 40.13 336.29 L 38.37 339.78 L 40.11 343.29 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="260" y="40" width="10" height="300" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><path d="M 31.21 38.81 L 253.63 38.99" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 258.88 39 L 251.88 42.49 L 253.63 38.99 L 251.88 35.49 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="240" y="5" width="140" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 20px; margin-left: 242px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">PartitionManager.<br />     run_execution_plan()</div></div></div></foreignObject><text x="242" y="24" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">PartitionManager....</text></switch></g><rect x="80" y="40" width="110" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 55px; margin-left: 135px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Partition to query,<br />computation tree</div></div></div></foreignObject><text x="135" y="59" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Partition to query...</text></switch></g><path d="M 460 120 L 365 120 L 276.78 120.09" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 271.53 120.1 L 278.52 116.59 L 276.78 120.09 L 278.53 123.59 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="460" y="60" width="10" height="60" fill="#d5e8d4" stroke="#000000" pointer-events="all"/><rect x="460" y="35" width="130" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 45px; margin-left: 462px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">CalciteBuilder.build()</div></div></div></foreignObject><text x="462" y="49" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">CalciteBuilder.build()</text></switch></g><path d="M 270 60 L 453.63 60" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 458.88 60 L 451.88 63.5 L 453.63 60 L 451.88 56.5 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="310" y="60" width="110" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 70px; margin-left: 365px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Computation tree</div></div></div></foreignObject><text x="365" y="74" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Computation tree</text></switch></g><rect x="300" y="120" width="150" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 130px; margin-left: 375px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Calcite Nodes Sequence</div></div></div></foreignObject><text x="375" y="134" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Calcite Nodes Sequence</text></switch></g><path d="M 460 225 L 365 225.03 L 278.14 225.37" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 272.89 225.4 L 279.87 221.87 L 278.14 225.37 L 279.9 228.87 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="460" y="165" width="10" height="60" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><rect x="460" y="140" width="100" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 155px; margin-left: 462px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">CalciteSerializer.<br />       serialize()</div></div></div></foreignObject><text x="462" y="159" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">CalciteSerialize...</text></switch></g><path d="M 270 165 L 453.63 165" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 458.88 165 L 451.88 168.5 L 453.63 165 L 451.88 161.5 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="300" y="165" width="150" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 175px; margin-left: 375px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Calcite Nodes Sequence</div></div></div></foreignObject><text x="375" y="179" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Calcite Nodes Sequence</text></switch></g><rect x="315" y="225" width="120" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 235px; margin-left: 375px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">JSON query for DB</div></div></div></foreignObject><text x="375" y="239" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">JSON query for DB</text></switch></g><path d="M 460 325 L 365 325.03 L 277.15 325.56" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 271.9 325.59 L 278.88 322.05 L 277.15 325.56 L 278.92 329.05 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="460" y="265" width="10" height="60" fill="#1c4798" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><rect x="460" y="245" width="100" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 255px; margin-left: 462px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">OmniSci Server</div></div></div></foreignObject><text x="462" y="259" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">OmniSci Server</text></switch></g><path d="M 270 265 L 453.63 265" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 458.88 265 L 451.88 268.5 L 453.63 265 L 451.88 261.5 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="315" y="265" width="120" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 275px; margin-left: 375px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">JSON query for DB</div></div></div></foreignObject><text x="375" y="279" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">JSON query for DB</text></switch></g><rect x="335" y="325" width="80" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 335px; margin-left: 375px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Arrow Table</div></div></div></foreignObject><text x="375" y="339" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Arrow Table</text></switch></g><rect x="75" y="340" width="120" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 355px; margin-left: 135px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Partition, holding<br />resulted Arrow Table</div></div></div></foreignObject><text x="135" y="359" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Partition, holding...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
diff --git a/docs/img/omnisci/omnisci_import.svg b/docs/img/omnisci/omnisci_import.svg
new file mode 100644
index 00000000000..0d6ea0bbbee
--- /dev/null
+++ b/docs/img/omnisci/omnisci_import.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="689px" height="156px" viewBox="-0.5 -0.5 689 156" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-12-03T12:10:17.553Z&quot; agent=&quot;5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36&quot; etag=&quot;bHuBygzOZW2ggwmRTMEC&quot; version=&quot;15.7.3&quot; type=&quot;google&quot;&gt;&lt;diagram id=&quot;j3hC_7ucrrOMPJeA6Gb_&quot; name=&quot;Page-1&quot;&gt;5VhRc5s4EP41fnQGGYztx9hJep1pL55LZ9q7NwVkUAuICrm2++u7QhIgwInTQHs3hx+MVquVtN9q90MTd5Me33Ccx+9ZSJLJzAmPE/dmMpsh33fhT0pOSuKtHCWIOA21Ui14oN+JFhq1PQ1JYSkKxhJBc1sYsCwjgbBkmHN2sNV2LLFnzXFEOoKHACdd6UcailhJl3Onlv9BaBSbmZGje1JslLWgiHHIDg2ReztxN5wxod7S44Yk0nnGL2rc3ZneamGcZOKSAevin3z59u57/ma7Fu9u83saRlO0Uma+4WSvd6xXK07GBZzts5BIK87EXR9iKshDjgPZewDQQRaLNIEWgtcdy4RGEZVtmiQbljBe2nJ3c/kDeYiLuLRpBjWU1APyQnD2hTR6/PKBHr1qwgU5nvUHqrwM4UlYSgQ/gYoeMEXe4mquRungRAbWQw018rRO3ITZKGIdXlFlvkYAXjQILwBk1XE/CSEgdZNxEbOIZTi5raVrG6Ba5x1jufbwZyLESeOC94I9DRp4kJ8+SXtXjjM3gr9LgectjeDmqKdUrVOztSWcgkcI10K1LbmXp+GCrbM9D8hTMdsPKycJFvSbbb8PHz10yyjMXIWDh2Bvc6d+7NCA03WFZrZRgXlEhLZT437NOT411HKpUJyf2XWd9lStMFIW66Cqdv3zcYb8f0OgDRgVs1GiAp3BZugYODfPqDEw6+T+LeaCCsqy1xWBQbLzrOURp5ubDZdopmZ/rMy87KmUfiJ0VFve8r/umemYFmW8X4MCQvmx7oS3SP5vT9eSp0D/B/wIBmCR2u4jNzo5zqBggsoNFviO45QYHVBX0yvFDm6AgLDBwQmNMngPAAmZntcSJwqM51p3pDQM1XEnsPZyTQp1HcRgd76ezG+kLTjhhT7PnXqdsYy0GIAWDRAfyI4OtPS7lRv1hIc7Vngg1ImPv8jXPSlESVnl8DSHlCnnlhKF9X8Brf6k/Sr0qlP6xOFGXg987fQ7HHzdZPi2xAtyXoWWk5Un7/8K2qIFmtsD2uyXgrb8HSSmwY5Xq4oMK3Y89xY/w45H5EVIf4ArojI2gXox90XtmHKbUfFS/ZG4svtc6Q+qT9S6uru78mmKnMLcbxgZsrp3OLC7P+CYpbjLGSqG0Es7EpqRqTmAJfG4ksvXc7Q4id/HSe7TjD4EVFonHJJGg208ttfwHAN52fWBfV2ANt6iPGIDpC+vTRn6PvbdnvQ13sd+lzJUBPw9znAkHf8abzLooULu1y+Li8k6cgTNouHYevvzBa0uLA2LsVxrJmv4VgZ1EdD77M8yoUkqveOXFfRLq+7lhb8PORvbzg3ZwOV8ihzPBs3cdDVA84eh0NCsLzpVWq6vi93bHw==&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="0.5" y="5" width="145" height="150" fill="#f5f5f5" stroke="#666666" stroke-dasharray="3 3" pointer-events="all"/><path d="M 399 75.11 L 478.03 75.11 L 552.08 75.12" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 557.33 75.12 L 550.33 78.62 L 552.08 75.12 L 550.33 71.62 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 118 75 L 271.66 75" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 276.91 75 L 269.91 78.5 L 271.66 75 L 269.91 71.5 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="28" y="55" width="90" height="60" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 85px; margin-left: 29px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Partition</div></div></div></foreignObject><text x="73" y="89" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Partition</text></switch></g><rect x="158" y="41" width="110" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 56px; margin-left: 213px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 11px">PyArrow Table/<br />pandas DataFrame</font></div></div></div></foreignObject><text x="213" y="60" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">PyArrow Table/...</text></switch></g><rect x="408" y="55" width="140" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 65px; margin-left: 478px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Request to import a table</div></div></div></foreignObject><text x="478" y="68" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="11px" text-anchor="middle">Request to import a table</text></switch></g><rect x="418" y="85" width="120" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 95px; margin-left: 478px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Imported table name</div></div></div></foreignObject><text x="478" y="98" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="11px" text-anchor="middle">Imported table name</text></switch></g><path d="M 558 88.03 L 458.03 88.03 L 124.19 87.82" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 118.94 87.82 L 125.94 84.32 L 124.19 87.82 L 125.94 91.32 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="558" y="5" width="130" height="150" fill="#1c4798" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 80px; margin-left: 559px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font color="#ffffff" size="1" face="Tahoma"><b style="line-height: 1.2 ; font-size: 16px">OmniSci server</b></font></div></div></div></foreignObject><text x="623" y="84" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">OmniSci server</text></switch></g><rect x="278" y="45" width="120" height="70" fill-opacity="0.6" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" stroke-opacity="0.6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 80px; margin-left: 279px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">PartitionManager</div></div></div></foreignObject><text x="338" y="84" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">PartitionManager</text></switch></g><rect x="44" y="0" width="60" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 15px; margin-left: 45px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">OmnisciOnNativeDataframe</div></div></div></foreignObject><text x="74" y="18" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="11px" text-anchor="middle">OmnisciOnNa...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
diff --git a/docs/img/omnisci/omnisci_ingress.svg b/docs/img/omnisci/omnisci_ingress.svg
new file mode 100644
index 00000000000..dfbc784ba9c
--- /dev/null
+++ b/docs/img/omnisci/omnisci_ingress.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="771px" height="475px" viewBox="-0.5 -0.5 771 475" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-12-03T10:55:29.399Z&quot; agent=&quot;5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36&quot; etag=&quot;b7oOvzM6jezaw4aTAfoA&quot; version=&quot;15.7.3&quot; type=&quot;google&quot;&gt;&lt;diagram id=&quot;a2QzJFjyRu5MUU0xzrVB&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><path d="M 98 32 L 193.63 32" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 198.88 32 L 191.88 35.5 L 193.63 32 L 191.88 28.5 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 54 L 98 54 L 98 10 L 0 10 L 0 54" fill="#ddd6e5" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 96px; height: 1px; padding-top: 32px; margin-left: 1px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 12px">pandas API</font><br /></font></div></div></div></foreignObject><text x="49" y="36" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">pandas API&#xa;</text></switch></g><path d="M 249 54 L 249 82 L 249.17 103.1" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 249.21 108.35 L 245.65 101.38 L 249.17 103.1 L 252.65 101.33 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 200 54 L 298 54 L 298 10 L 200 10 L 200 54" fill="#cda2be" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 96px; height: 1px; padding-top: 32px; margin-left: 201px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 12px">Factory Dispatcher</font><br /></font></div></div></div></foreignObject><text x="249" y="36" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Factory Dispatch...</text></switch></g><path d="M 220 110 L 220 60.37" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 220 55.12 L 223.5 62.12 L 220 60.37 L 216.5 62.12 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 249 154 L 249 174 L 249 160 L 249 173.63" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 249 178.88 L 245.5 171.88 L 249 173.63 L 252.5 171.88 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 140 154 L 358 154 L 358 110 L 140 110 L 140 154" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 216px; height: 1px; padding-top: 132px; margin-left: 141px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 12px">ExperimentalOmnisciOnNativeFactory</font><br /></font></div></div></div></foreignObject><text x="249" y="136" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">ExperimentalOmnisciOnNativeFactory&#xa;</text></switch></g><path d="M 545.86 235.81 L 663.63 235.81" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 668.88 235.81 L 661.88 239.31 L 663.63 235.81 L 661.88 232.31 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 410 248 L 256.37 248" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 251.12 248 L 258.12 244.5 L 256.37 248 L 258.12 251.5 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 410 270 L 546 270 L 546 226 L 410 226 L 410 270" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 134px; height: 1px; padding-top: 248px; margin-left: 411px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 12px">OmnisciOnNativeIO</font><br /></font></div></div></div></foreignObject><text x="478" y="252" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">OmnisciOnNativeIO&#xa;</text></switch></g><path d="M 670 248 L 552.37 248" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 547.12 248 L 554.12 244.5 L 552.37 248 L 554.12 251.5 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 670 270 L 770 270 L 770 226 L 670 226 L 670 270" fill="#000000" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 248px; margin-left: 671px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font color="#ffffff"><b>PyArrow.IO</b></font><br /></font></div></div></div></foreignObject><text x="720" y="252" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">PyArrow.IO&#xa;</text></switch></g><path d="M 249 344 L 249 423.63" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 249 428.88 L 245.5 421.88 L 249 423.63 L 252.5 421.88 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 220 300 L 220 159.37" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 220 154.12 L 223.5 161.12 L 220 159.37 L 216.5 161.12 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 140 344 L 358 344 L 358 300 L 140 300 L 140 344" fill="#dbeef3" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 216px; height: 1px; padding-top: 322px; margin-left: 141px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 12px">DFAlgQueryCompiler</font><br /></font></div></div></div></foreignObject><text x="249" y="326" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">DFAlgQueryCompiler&#xa;</text></switch></g><rect x="560" y="244" width="100" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 264px; margin-left: 561px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">PyArrow Table with data read</div></div></div></foreignObject><text x="610" y="268" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">PyArrow Table wi...</text></switch></g><rect x="560" y="210" width="100" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 220px; margin-left: 610px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Request to read</div></div></div></foreignObject><text x="610" y="224" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Request to read</text></switch></g><rect x="244" y="256" width="120" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 271px; margin-left: 304px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">PyArrow Table/<br />pandas DataFrame</div></div></div></foreignObject><text x="304" y="275" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">PyArrow Table/...</text></switch></g><path d="M 220 430 L 220 350.37" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 220 345.12 L 223.5 352.12 L 220 350.37 L 216.5 352.12 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 140 474 L 358 474 L 358 430 L 140 430 L 140 474" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 216px; height: 1px; padding-top: 452px; margin-left: 141px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 12px">OmnisciOnNativeDataFrame</font><br /></font></div></div></div></foreignObject><text x="249" y="456" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">OmnisciOnNativeDataFrame&#xa;</text></switch></g><rect x="155" y="256" width="60" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 271px; margin-left: 185px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Query<br />Compiler</div></div></div></foreignObject><text x="185" y="275" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Query...</text></switch></g><rect x="75" y="360" width="140" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 385px; margin-left: 145px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Core Modin Dataframe<br />with the passed object<br />stored in partition</div></div></div></foreignObject><text x="145" y="389" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Core Modin Dataframe...</text></switch></g><rect x="140" y="65" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 80px; margin-left: 180px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Modin<br />DataFrame</div></div></div></foreignObject><text x="180" y="84" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Modin...</text></switch></g><rect x="250" y="70" width="120" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 80px; margin-left: 310px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Query to import data</div></div></div></foreignObject><text x="310" y="84" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Query to import data</text></switch></g><rect x="110" y="0" width="70" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 15px; margin-left: 145px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Query for<br />Dispatcher</div></div></div></foreignObject><text x="145" y="19" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Query for...</text></switch></g><path d="M 334 203 L 482.17 203 L 482.2 220.07" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 482.21 225.32 L 478.7 218.33 L 482.2 220.07 L 485.7 218.31 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 249 226 L 249 293.63" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 249 298.88 L 245.5 291.88 L 249 293.63 L 252.5 291.88 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 249 180 L 334 203 L 249 226 L 164 203 Z" fill-opacity="0.8" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" stroke-opacity="0.8" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 203px; margin-left: 165px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Is import from file?</div></div></div></foreignObject><text x="249" y="207" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Is import from file?</text></switch></g><rect x="321" y="187" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 197px; margin-left: 341px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><i>Yes</i></div></div></div></foreignObject><text x="341" y="201" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Yes</text></switch></g><rect x="243" y="221" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 231px; margin-left: 258px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><i>No</i></div></div></div></foreignObject><text x="258" y="235" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">No</text></switch></g><rect x="244" y="370" width="120" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 385px; margin-left: 304px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">PyArrow Table/<br />pandas DataFrame</div></div></div></foreignObject><text x="304" y="389" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">PyArrow Table/...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
diff --git a/docs/img/omnisci/omnisci_lazy_tree_example.svg b/docs/img/omnisci/omnisci_lazy_tree_example.svg
new file mode 100644
index 00000000000..88397e92c15
--- /dev/null
+++ b/docs/img/omnisci/omnisci_lazy_tree_example.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="911px" height="611px" viewBox="-0.5 -0.5 911 611" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-12-03T14:15:35.147Z&quot; agent=&quot;5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36&quot; etag=&quot;xFZ1DNI0lIa9xr3LsEZs&quot; version=&quot;15.7.3&quot; type=&quot;google&quot;&gt;&lt;diagram id=&quot;uOBRJf9TnpRSEVGWHM5K&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="0" y="210" width="910" height="400" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><rect x="490" y="270" width="400" height="320" fill="#dae8fc" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><rect x="20" y="240" width="440" height="350" fill="#ffe6cc" stroke="#36393d" pointer-events="all"/><path d="M 160 30 L 213.63 30" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 218.88 30 L 211.88 33.5 L 213.63 30 L 211.88 26.5 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="10" y="0" width="150" height="60" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 30px; margin-left: 11px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span><font style="font-size: 13px">df.sort_values(by="col1")</font></span></div></div></div></foreignObject><text x="85" y="34" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">df.sort_values(by="col1")</text></switch></g><path d="M 318 30 L 420 30 L 420 73.63" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 420 78.88 L 416.5 71.88 L 420 73.63 L 423.5 71.88 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 220 52 L 318 52 L 318 8 L 220 8 L 220 52" fill="#ddd6e5" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 96px; height: 1px; padding-top: 30px; margin-left: 221px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 14px">pandas API</font><br /></font></div></div></div></foreignObject><text x="269" y="34" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">pandas API&#xa;</text></switch></g><path d="M 326.38 170 L 255 170 L 255 253.63" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 255 258.88 L 251.5 251.88 L 255 253.63 L 258.5 251.88 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 326.38 190 L 513.63 190 L 513.63 150 L 326.38 150 L 326.38 190" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 185px; height: 1px; padding-top: 170px; margin-left: 327px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 14px">OmnisciOnNativeDataframe</font><br /></font></div></div></div></foreignObject><text x="420" y="174" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">OmnisciOnNativeDataframe&#xa;</text></switch></g><rect x="320" y="3" width="133" height="27" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 131px; height: 1px; padding-top: 17px; margin-left: 321px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 12px">Reduced query for QC</font></div></div></div></foreignObject><text x="387" y="19" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="9px" text-anchor="middle">Reduced query for QC</text></switch></g><path d="M 420 110 L 420 130 L 420.07 143.63" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 420.09 148.88 L 416.56 141.9 L 420.07 143.63 L 423.56 141.86 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="390" y="70" width="60" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 90px; margin-left: 391px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 45px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">...</div></div></div></foreignObject><text x="420" y="104" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="45px" text-anchor="middle">...</text></switch></g><rect x="420" y="80" width="160" height="70" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 115px; margin-left: 500px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 45px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 12px">.sort_rows(columns="col1")</font></div></div></div></foreignObject><text x="500" y="129" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="45px" text-anchor="middle">.sort_r...</text></switch></g><rect x="200" y="260" width="110" height="70" fill-opacity="0.6" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" stroke-opacity="0.6" stroke-dasharray="3 3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 112px; height: 70px; padding-top: 260px; margin-left: 200px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 110px; height: 70px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 4px 0px 0px ; line-height: 0.5 ; text-align: center ; font-size: 10px"><b><font style="line-height: 1 ; font-size: 10px">SortNode</font></b></p><hr size="1" style="font-size: 10px" /><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ input = DFAlgNode</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ columns = ["col1"]</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ ascending = ...</font></p></div></div></div></foreignObject><text x="200" y="272" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">SortNode...</text></switch></g><rect x="189" y="340" width="130" height="90" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 132px; height: 90px; padding-top: 340px; margin-left: 189px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 130px; height: 90px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 4px 0px 0px ; line-height: 0.5 ; text-align: center ; font-size: 10px"><b><font style="line-height: 1 ; font-size: 10px">GroupbyAggNode</font></b></p><hr size="1" style="font-size: 10px" /><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ input = DFAlgNode</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">+ agg_exprs = {</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">      "col1": AggregateExpr,</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">      ...</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">   }</font></p></div></div></div></foreignObject><text x="189" y="352" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">GroupbyAggNode...</text></switch></g><rect x="202" y="438" width="106" height="72" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 108px; height: 72px; padding-top: 438px; margin-left: 202px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 106px; height: 72px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 4px 0px 0px ; line-height: 0.5 ; text-align: center ; font-size: 10px"><b><font style="line-height: 1 ; font-size: 10px">JoinNode</font></b></p><hr size="1" style="font-size: 10px" /><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ left = DFAlgNode</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ right = DFAlgNode</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">+ how = ...</font></p></div></div></div></foreignObject><text x="202" y="450" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">JoinNode...</text></switch></g><rect x="34" y="540" width="161" height="40" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 163px; height: 40px; padding-top: 540px; margin-left: 34px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 161px; height: 40px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 4px 0px 0px ; line-height: 0.5 ; text-align: center ; font-size: 10px"><b><font style="line-height: 1 ; font-size: 10px">FrameNode</font></b></p><hr size="1" style="font-size: 10px" /><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">+ input = core_modin_dataframe1</font></p></div></div></div></foreignObject><text x="34" y="552" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">FrameNode...</text></switch></g><rect x="288" y="540" width="165" height="40" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 167px; height: 40px; padding-top: 540px; margin-left: 288px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 165px; height: 40px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 4px 0px 0px ; line-height: 0.5 ; text-align: center ; font-size: 10px"><b><font style="line-height: 1 ; font-size: 10px">FrameNode</font></b></p><hr size="1" style="font-size: 10px" /><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">+ input = core_modin_dataframe2</font></p></div></div></div></foreignObject><text x="288" y="552" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">FrameNode...</text></switch></g><path d="M 288 370 L 340 370 L 340 446.4 L 313.31 446.42" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 308.06 446.42 L 315.06 442.92 L 313.31 446.42 L 315.06 449.92 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 370 510 L 370 530 L 370.18 533.64" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 370.44 538.88 L 366.6 532.07 L 370.18 533.64 L 373.59 531.72 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="340" y="470" width="60" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 490px; margin-left: 341px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 45px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 29px">...</font></div></div></div></foreignObject><text x="370" y="504" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="45px" text-anchor="middle">...</text></switch></g><path d="M 114.5 510 L 114.5 530 L 114.5 520 L 114.5 533.63" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 114.5 538.88 L 111 531.88 L 114.5 533.63 L 118 531.88 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="84.5" y="470" width="60" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 490px; margin-left: 86px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 45px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 29px">...</font></div></div></div></foreignObject><text x="115" y="504" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="45px" text-anchor="middle">...</text></switch></g><rect x="15" y="205" width="100" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 225px; margin-left: 65px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 29px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 15px">Frame nodes</font></div></div></div></foreignObject><text x="65" y="234" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="29px" text-anchor="middle">Frame n...</text></switch></g><rect x="80" y="270" width="120" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 280px; margin-left: 140px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 13px">Just inserted Node</font></div></div></div></foreignObject><text x="140" y="284" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Just inserted Node</text></switch></g><path d="M 294 469 L 369 469 L 369 488.63" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 369 493.88 L 365.5 486.88 L 369 488.63 L 372.5 486.88 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="615" y="290" width="130" height="68" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 132px; height: 68px; padding-top: 290px; margin-left: 615px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 130px; height: 68px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 4px 0px 0px ; line-height: 0.5 ; text-align: center ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">AggregateExpr</font></p><hr size="1" style="font-size: 10px" /><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ input = BaseExpr</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ agg = "sum"</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">+ ...</font></p></div></div></div></foreignObject><text x="615" y="302" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">AggregateExpr...</text></switch></g><path d="M 309 395 L 470 395 L 470 300 L 612 300 L 608.63 300" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 613.88 300 L 606.88 303.5 L 608.63 300 L 606.88 296.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="615" y="369" width="130" height="101" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 132px; height: 101px; padding-top: 369px; margin-left: 615px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 130px; height: 101px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 4px 0px 0px ; line-height: 0.5 ; text-align: center ; font-size: 10px"><b><font style="line-height: 1 ; font-size: 10px">OpExpr</font></b></p><hr size="1" style="font-size: 10px" /><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ operands = [</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">        BaseExpr,</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">        BaseExpr</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">    ]</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ op = "POWER"</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="line-height: 1 ; font-size: 10px">+ ...</font></p></div></div></div></foreignObject><text x="615" y="381" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">OpExpr...</text></switch></g><path d="M 707 320 L 760 320 L 760 378 L 751.37 378" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 746.12 378 L 753.12 374.5 L 751.37 378 L 753.12 381.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 800 510 L 800 530 L 800 510 L 800 523.63" fill="none" stroke="#a680b8" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 800 528.88 L 796.5 521.88 L 800 523.63 L 803.5 521.88 Z" fill="#a680b8" stroke="#a680b8" stroke-miterlimit="10" pointer-events="all"/><path d="M 800 510 L 800 530 L 800 510 L 800 523.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 800 528.88 L 796.5 521.88 L 800 523.63 L 803.5 521.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="770" y="470" width="60" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 490px; margin-left: 771px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 45px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 29px">...</font></div></div></div></foreignObject><text x="800" y="504" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="45px" text-anchor="middle">...</text></switch></g><path d="M 580 510 L 580 530 L 580 510 L 580 523.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 580 528.88 L 576.5 521.88 L 580 523.63 L 583.5 521.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="550" y="470" width="60" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 490px; margin-left: 551px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 45px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 29px">...</font></div></div></div></foreignObject><text x="580" y="504" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="45px" text-anchor="middle">...</text></switch></g><path d="M 687 413 L 799.3 413 L 799.29 487.35" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 799.29 492.6 L 795.79 485.6 L 799.29 487.35 L 802.79 485.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 640 424 L 579.9 424 L 579.93 486.96" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 579.93 492.21 L 576.43 485.21 L 579.93 486.96 L 583.43 485.21 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="497.5" y="530" width="165" height="50" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 167px; height: 50px; padding-top: 530px; margin-left: 498px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 165px; height: 50px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 4px 0px 0px ; line-height: 0.5 ; text-align: center ; font-size: 10px"><b><font style="line-height: 1 ; font-size: 10px">InputRefExpr</font></b></p><hr size="1" style="font-size: 10px" /><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">+ frame = core_modin_dataframe1</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">+ column = "col12"</font></p></div></div></div></foreignObject><text x="498" y="542" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">InputRefExpr...</text></switch></g><rect x="717.5" y="530" width="165" height="50" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 167px; height: 50px; padding-top: 530px; margin-left: 718px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 165px; height: 50px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 4px 0px 0px ; line-height: 0.5 ; text-align: center ; font-size: 10px"><b><font style="line-height: 1 ; font-size: 10px">InputRefExpr</font></b></p><hr size="1" style="font-size: 10px" /><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">+ frame = core_modin_dataframe1</font></p><p style="margin: 0px 0px 0px 4px ; font-size: 10px"><font style="font-size: 10px">+ column = "col14"</font></p></div></div></div></foreignObject><text x="718" y="542" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px">InputRefExpr...</text></switch></g><rect x="490" y="250" width="130" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 260px; margin-left: 555px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 15px">Expression nodes</font></div></div></div></foreignObject><text x="555" y="264" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Expression nodes</text></switch></g><rect x="0" y="190" width="130" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 200px; margin-left: 65px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 15px">Computation tree</font></div></div></div></foreignObject><text x="65" y="204" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Computation tree</text></switch></g><path d="M 298 291 L 340 291 L 340 350 L 326.37 350" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 321.12 350 L 328.12 346.5 L 326.37 350 L 328.12 353.5 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 204 481 L 114.8 481 L 114.81 488.59" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 114.81 493.84 L 111.31 486.84 L 114.81 488.59 L 118.31 486.83 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="175" y="130" width="130" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 150px; margin-left: 240px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 13px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Append SortNode to<br />the computation tree</div></div></div></foreignObject><text x="240" y="154" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="13px" text-anchor="middle">Append SortNode to...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
diff --git a/docs/img/omnisci/omnisci_query_flow.svg b/docs/img/omnisci/omnisci_query_flow.svg
new file mode 100644
index 00000000000..c9aba5d58f6
--- /dev/null
+++ b/docs/img/omnisci/omnisci_query_flow.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1146px" height="649px" viewBox="-0.5 -0.5 1146 649" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-11-30T19:07:51.264Z&quot; agent=&quot;5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36&quot; etag=&quot;uqcuMw5_1MLV0EVFJuQb&quot; version=&quot;15.7.3&quot; type=&quot;google&quot;&gt;&lt;diagram name=&quot;Page-1&quot; id=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="0" y="281.75" width="390" height="366" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><rect x="20" y="522.75" width="350" height="105" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><rect x="800" y="307" width="340" height="128.5" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><path d="M 195 494 L 195 514 L 195 502.83 L 195 516.38" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 195 521.63 L 191.5 514.63 L 195 516.38 L 198.5 514.63 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="20" y="304" width="350" height="190" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><rect x="421" y="402.5" width="340" height="164.5" fill="#b6a7fc" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><rect x="420" y="243.5" width="340" height="63.5" fill="#d6baeb" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><path d="M 361.99 35 L 450.33 35 L 450.31 106.17" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 348.99 35 L 355.49 31.18 L 361.99 35 L 355.49 38.82 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 446.82 100.29 L 450.31 107.29 L 453.82 100.29" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 348 27 L 468 27 L 467.96 100.9" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 467.95 106.15 L 464.46 99.14 L 467.96 100.9 L 471.46 99.15 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 250 57 L 348 57 L 348 13 L 250 13 L 250 57" fill="#ddd6e5" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 96px; height: 1px; padding-top: 35px; margin-left: 251px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px ; color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1">pandas API<br /></font></div></div></div></foreignObject><text x="299" y="39" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">pandas API&#xa;</text></switch></g><path d="M 451 164.99 L 451 237 L 451 258.26" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 451 151.99 L 454.82 158.49 L 451 164.99 L 447.18 158.49 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 447.5 252.38 L 451 259.38 L 454.5 252.38" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 460 151 L 460 237 L 460 254.13" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 460 259.38 L 456.5 252.38 L 460 254.13 L 463.5 252.38 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 402 151 L 500 151 L 500 107 L 402 107 L 402 151" fill="#dbeef3" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 96px; height: 1px; padding-top: 129px; margin-left: 403px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px ; color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1">DFAlg<br />Query Compiler<br /></font></div></div></div></foreignObject><text x="451" y="133" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">DFAlg...</text></switch></g><path d="M 250 151 L 348 151 L 348 107 L 250 107 L 250 151" fill="#dbeef3" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 96px; height: 1px; padding-top: 129px; margin-left: 251px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px ; color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1">Base<br />Query Compiler<br /></font></div></div></div></foreignObject><text x="299" y="133" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Base...</text></switch></g><path d="M 399 129 L 363.12 129.28" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 350.12 129.39 L 363.07 122.78 L 363.17 135.78 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 421.01 274.5 L 197.5 274.5 L 197.5 315.76" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 434.01 274.5 L 427.51 278.32 L 421.01 274.5 L 427.51 270.68 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 194 309.88 L 197.5 316.88 L 201 309.88" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 435 288.5 L 533 288.5 L 533 260.5 L 435 260.5 L 435 288.5" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 96px; height: 1px; padding-top: 275px; margin-left: 436px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><span style="font-size: 11px">Dataframe</span><br /></font></div></div></div></foreignObject><text x="484" y="278" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Dataframe&#xa;</text></switch></g><path d="M 149.88 333 L 42.5 333 L 42.5 412 L 62.5 412" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 158.88 333 L 149.88 337.5 L 149.88 328.5 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 178.76 311.63 L 178.83 265.92 L 434.71 265.9" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 178.75 316.88 L 175.26 309.88 L 178.76 311.63 L 182.26 309.89 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="160" y="318" width="75" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 73px; height: 1px; padding-top: 333px; margin-left: 161px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">DFAlgNode</font></div></div></div></foreignObject><text x="198" y="337" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">DFAlgNode</text></switch></g><path d="M 631.38 287.44 L 631.42 398.5 L 631 508.5" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 542 288.5 L 640 288.5 L 640 260.5 L 542 260.5 L 542 288.5" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 96px; height: 1px; padding-top: 275px; margin-left: 543px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 12px">Partition</font><br /></font></div></div></div></foreignObject><text x="591" y="278" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Partition&#xa;</text></switch></g><path d="M 695 289 L 695 410.01" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 695 415.26 L 691.5 408.26 L 695 410.01 L 698.5 408.26 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 744 274.75 L 830.75 274.75 L 911.13 275.44" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 916.38 275.49 L 909.35 278.93 L 911.13 275.44 L 909.41 271.93 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 695 289 L 695 311.92 L 747.5 311.92 L 747.5 328.38" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 747.5 333.63 L 744 326.63 L 747.5 328.38 L 751 326.63 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 646 289 L 744 289 L 744 260.5 L 646 260.5 L 646 289" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 96px; height: 1px; padding-top: 275px; margin-left: 647px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 12px">PartitionManager</font><br /></font></div></div></div></foreignObject><text x="695" y="278" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">PartitionManager&#xa;</text></switch></g><path d="M 363.99 333 L 397.5 333 L 397.5 282.5 L 433.06 282.51" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 350.99 333 L 357.49 329.18 L 363.99 333 L 357.49 336.82 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 427.18 286.01 L 434.18 282.51 L 427.18 279.01" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 275 333 L 243.12 333" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 236.12 333 L 243.12 329.5 L 243.12 336.5 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="275" y="318" width="75" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 73px; height: 1px; padding-top: 333px; margin-left: 276px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">FrameNode</font></div></div></div></foreignObject><text x="313" y="337" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">FrameNode</text></switch></g><path d="M 166.49 472 L 200.83 472 L 200.8 350.3" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 153.49 472 L 159.99 468.18 L 166.49 472 L 159.99 475.82 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 204.3 356.18 L 200.8 349.18 L 197.3 356.18" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 62.5 472 L 42.5 472 L 42.5 333 L 149.88 333" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 158.88 333 L 149.88 337.5 L 149.88 328.5 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="62.5" y="457" width="90" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 472px; margin-left: 64px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">GroupbyAggNode<br /></font></div></div></div></foreignObject><text x="108" y="476" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">GroupbyAggNode&#xa;</text></switch></g><path d="M 166.49 412 L 189.17 412 L 189.17 350.3" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 153.49 412 L 159.99 408.18 L 166.49 412 L 159.99 415.82 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 192.67 356.18 L 189.17 349.18 L 185.67 356.18" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="62.5" y="397" width="90" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 412px; margin-left: 64px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">SortNode<br /></font></div></div></div></foreignObject><text x="108" y="416" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">SortNode&#xa;</text></switch></g><path d="M 166.49 362.5 L 178.83 362.5 L 178.76 350.24" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 153.49 362.5 L 159.99 358.68 L 166.49 362.5 L 159.99 366.32 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 182.3 356.1 L 178.76 349.12 L 175.3 356.14" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 62.5 370 L 42.5 370 L 42.5 333 L 149.88 333" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 158.88 333 L 149.88 337.5 L 149.88 328.5 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="62.5" y="355" width="90" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 370px; margin-left: 64px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">JoinNode<br /></font></div></div></div></foreignObject><text x="108" y="374" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">JoinNode&#xa;</text></switch></g><rect x="87.5" y="427" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 437px; margin-left: 108px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 24px">...</font></div></div></div></foreignObject><text x="108" y="440" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="11px" text-anchor="middle">...</text></switch></g><path d="M 955 290.5 L 955 310.5 L 955 307 L 955 320.63" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 955 325.88 L 951.5 318.88 L 955 320.63 L 958.5 318.88 Z" fill="rgba(0, 0, 0, 1)" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="917.5" y="260.5" width="75" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 73px; height: 1px; padding-top: 276px; margin-left: 919px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">CalciteBuilder</font></div></div></div></foreignObject><text x="955" y="279" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">CalciteBuild...</text></switch></g><rect x="702.5" y="334.75" width="90" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 350px; margin-left: 704px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">CalciteSerializer</font></div></div></div></foreignObject><text x="748" y="353" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">CalciteSerializ...</text></switch></g><rect x="431" y="417" width="320" height="48" fill="#1c4798" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 318px; height: 1px; padding-top: 441px; margin-left: 432px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font color="#ffffff" size="1" face="Tahoma"><b style="line-height: 1.2 ; font-size: 16px">OmniSci server</b></font></div></div></div></foreignObject><text x="591" y="445" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">OmniSci server</text></switch></g><rect x="490" y="328.5" width="141" height="27" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 139px; height: 1px; padding-top: 342px; margin-left: 491px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 12px">Partition holds OmniSci's table representation to execute delayed tree on</font></div></div></div></foreignObject><text x="561" y="345" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="9px" text-anchor="middle">Partition holds OmniSci's table...</text></switch></g><rect x="235.63" y="234.25" width="155" height="27" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 153px; height: 1px; padding-top: 248px; margin-left: 237px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 12px">Append an operation's node to a computation tree</font></div></div></div></foreignObject><text x="313" y="250" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="9px" text-anchor="middle">Append an operation's node to a co...</text></switch></g><rect x="770" y="254" width="125" height="27" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 123px; height: 1px; padding-top: 268px; margin-left: 772px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 12px">Computation tree</font></div></div></div></foreignObject><text x="772" y="270" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="9px">Computation tree</text></switch></g><rect x="348" y="0" width="133" height="27" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 131px; height: 1px; padding-top: 14px; margin-left: 349px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 12px">Reduced query for QC</font></div></div></div></foreignObject><text x="415" y="16" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="9px" text-anchor="middle">Reduced query for QC</text></switch></g><rect x="461" y="153" width="120" height="27" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 118px; height: 1px; padding-top: 167px; margin-left: 463px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 12px">Reduced query<br />for execution</font></div></div></div></foreignObject><text x="463" y="169" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="9px">Reduced query...</text></switch></g><rect x="421" y="381.5" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 392px; margin-left: 456px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Execution</div></div></div></foreignObject><text x="456" y="395" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Execution</text></switch></g><rect x="20" y="284" width="90" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 294px; margin-left: 65px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Frame nodes</div></div></div></foreignObject><text x="65" y="298" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Frame nodes</text></switch></g><rect x="465" y="223.5" width="250" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 234px; margin-left: 590px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Modin OmnisciOnNative Dataframe classes</div></div></div></foreignObject><text x="590" y="237" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Modin OmnisciOnNative Dataframe classes</text></switch></g><rect x="1005" y="287" width="140" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 297px; margin-left: 1075px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Relation algebra nodes</div></div></div></foreignObject><text x="1075" y="301" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Relation algebra nodes</text></switch></g><path d="M 552.5 110.72 L 837.5 110.72 L 837.5 66.72 L 552.5 66.72 L 552.5 110.72" fill="#d6baeb" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 552.5 198.72 L 837.5 198.72 L 837.5 154.72 L 552.5 154.72 L 552.5 198.72" fill="#d6baeb" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 562.5 102.72 L 619.5 102.72 L 619.5 74.72 L 562.5 74.72 L 562.5 102.72" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 55px; height: 1px; padding-top: 89px; margin-left: 564px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 10px">Dataframe</font><br /></font></div></div></div></foreignObject><text x="591" y="92" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Dataframe&#xa;</text></switch></g><path d="M 632.5 102.72 L 689.5 102.72 L 689.5 74.72 L 632.5 74.72 L 632.5 102.72" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 55px; height: 1px; padding-top: 89px; margin-left: 634px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 10px ; color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1">Partition<br />Manager<br /></font></div></div></div></foreignObject><text x="661" y="92" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Partition...</text></switch></g><path d="M 702.5 102.72 L 759.5 102.72 L 759.5 74.72 L 702.5 74.72 L 702.5 102.72" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 55px; height: 1px; padding-top: 89px; margin-left: 704px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 10px">Axis Partition</font><br /></font></div></div></div></foreignObject><text x="731" y="92" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Axis Part...</text></switch></g><path d="M 772.5 102.72 L 829.5 102.72 L 829.5 74.72 L 772.5 74.72 L 772.5 102.72" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 55px; height: 1px; padding-top: 89px; margin-left: 774px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 10px">Partition</font><br /></font></div></div></div></foreignObject><text x="801" y="92" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Partition&#xa;</text></switch></g><path d="M 562.5 190.72 L 619.5 190.72 L 619.5 162.72 L 562.5 162.72 L 562.5 190.72" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 55px; height: 1px; padding-top: 177px; margin-left: 564px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 10px">Dataframe</font><br /></font></div></div></div></foreignObject><text x="591" y="180" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Dataframe&#xa;</text></switch></g><path d="M 632.5 190.72 L 689.5 190.72 L 689.5 162.72 L 632.5 162.72 L 632.5 190.72" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 55px; height: 1px; padding-top: 177px; margin-left: 634px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 10px">Partition Manager</font><br /></font></div></div></div></foreignObject><text x="661" y="180" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Partition...</text></switch></g><path d="M 702.5 190.72 L 759.5 190.72 L 759.5 162.72 L 702.5 162.72 L 702.5 190.72" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 55px; height: 1px; padding-top: 177px; margin-left: 704px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 10px">Axis Partition</font><br /></font></div></div></div></foreignObject><text x="731" y="180" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Axis Part...</text></switch></g><path d="M 772.5 190.72 L 829.5 190.72 L 829.5 162.72 L 772.5 162.72 L 772.5 190.72" fill="#f2f2f2" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 55px; height: 1px; padding-top: 177px; margin-left: 774px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="color: rgb(0 , 0 , 0) ; direction: ltr ; letter-spacing: 0px ; line-height: 120% ; opacity: 1"><font style="font-size: 10px">Partition</font><br /></font></div></div></div></foreignObject><text x="801" y="180" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Partition&#xa;</text></switch></g><path d="M 758.84 155.51 L 758.61 125.84" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 758.51 112.84 L 765.11 125.79 L 752.11 125.89 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><path d="M 757.99 243.5 L 757.99 216.05" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 757.99 199.05 L 766.49 216.05 L 749.49 216.05 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="552.5" y="134.72" width="190" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 145px; margin-left: 648px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Modin PandasDataframe classes</div></div></div></foreignObject><text x="648" y="148" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Modin PandasDataframe classes</text></switch></g><rect x="552.5" y="46.72" width="180" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 57px; margin-left: 643px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Base Modin Dataframe classes</div></div></div></foreignObject><text x="643" y="60" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Base Modin Dataframe classes</text></switch></g><rect x="910" y="327" width="90" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 342px; margin-left: 911px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">CalciteBaseNode</font></div></div></div></foreignObject><text x="955" y="346" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">CalciteBaseNode</text></switch></g><path d="M 850 390 L 850 370 L 955 370 L 955 365.12" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 955 358.12 L 958.5 365.12 L 951.5 365.12 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="805" y="390" width="90" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 405px; margin-left: 806px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">CalciteJoinNode</font></div></div></div></foreignObject><text x="850" y="409" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">CalciteJoinNode</text></switch></g><path d="M 955 390 L 955 370 L 955 377 L 955 365.12" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 955 358.12 L 958.5 365.12 L 951.5 365.12 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="910" y="390" width="90" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 405px; margin-left: 911px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">CalciteSortNode</font></div></div></div></foreignObject><text x="955" y="409" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">CalciteSortNode</text></switch></g><path d="M 1085 390 L 1083 390 L 1083 370 L 955 370 L 955 365.12" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 955 358.12 L 958.5 365.12 L 951.5 365.12 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="1040" y="390" width="90" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 405px; margin-left: 1041px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">CalciteAggNode</font></div></div></div></foreignObject><text x="1085" y="409" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">CalciteAggNode</text></switch></g><rect x="1000" y="395" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 405px; margin-left: 1020px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 24px">...</font></div></div></div></foreignObject><text x="1020" y="408" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="11px" text-anchor="middle">...</text></switch></g><rect x="640" y="317.25" width="125" height="27" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 123px; height: 1px; padding-top: 331px; margin-left: 642px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 12px">DB query</font></div></div></div></foreignObject><text x="642" y="333" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="9px">DB query</text></switch></g><rect x="150" y="537.75" width="90" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 553px; margin-left: 151px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">BaseExpr<br /></font></div></div></div></foreignObject><text x="195" y="556" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">BaseExpr&#xa;</text></switch></g><path d="M 98.75 587.75 L 98.83 577.75 L 195 577.75 L 195 577.87" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 195 568.87 L 199.5 577.87 L 190.5 577.87 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="62.5" y="587.75" width="72.5" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 71px; height: 1px; padding-top: 603px; margin-left: 64px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">LiteralExpr<br /></font></div></div></div></foreignObject><text x="99" y="606" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">LiteralExpr&#xa;</text></switch></g><path d="M 194.38 587.75 L 194.71 577.86" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 195.01 568.87 L 199.2 578.01 L 190.21 577.71 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="153.75" y="587.75" width="81.25" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 79px; height: 1px; padding-top: 603px; margin-left: 155px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">AggregateExpr<br /></font></div></div></div></foreignObject><text x="194" y="606" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">AggregateExpr&#xa;</text></switch></g><rect x="231.25" y="587.75" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 598px; margin-left: 251px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 24px">...</font></div></div></div></foreignObject><text x="251" y="601" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="11px" text-anchor="middle">...</text></switch></g><path d="M 307.5 587.75 L 311 587.83 L 311 577.75 L 195 577.75 L 195 577.87" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 195 568.87 L 199.5 577.87 L 190.5 577.87 Z" fill="none" stroke="rgba(0, 0, 0, 1)" stroke-miterlimit="10" pointer-events="all"/><rect x="271.25" y="587.75" width="72.5" height="30" fill="rgba(255, 255, 255, 1)" stroke="rgba(0, 0, 0, 1)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 71px; height: 1px; padding-top: 603px; margin-left: 272px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 11px">InputRefExpr<br /></font></div></div></div></foreignObject><text x="308" y="606" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">InputRefExpr&#xa;</text></switch></g><rect x="20" y="502.75" width="110" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 513px; margin-left: 75px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Expression nodes</div></div></div></foreignObject><text x="75" y="516" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Expression nodes</text></switch></g><rect x="0" y="261.25" width="140" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 271px; margin-left: 70px;"><div data-drawio-colors="color: rgba(0, 0, 0, 1); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Computation tree nodes</div></div></div></foreignObject><text x="70" y="275" fill="rgba(0, 0, 0, 1)" font-family="Helvetica" font-size="12px" text-anchor="middle">Computation tree nodes</text></switch></g><rect x="619.5" y="486.25" width="137.5" height="73.75" fill="rgba(255, 255, 255, 1)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 140px; height: 74px; padding-top: 486px; margin-left: 619px;"><div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: center; width: 138px; height: 74px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><table border="1" width="100%" style="width: 100% ; height: 100% ; border-collapse: collapse"><tbody><tr><td align="center">id</td><td align="center">scale</td><td align="center">price</td></tr><tr><td align="center">0</td><td align="center">87.6</td><td align="center">14500</td></tr><tr><td align="center">1</td><td align="center">122.0</td><td align="center">22100</td></tr><tr><td>...</td><td>...</td><td>...</td></tr></tbody></table></div></div></div></foreignObject><text x="688" y="498" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">idscaleprice087.6145001...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file


Code review comments:
diff_hunk: @@ -1,7 +1,237 @@
 :orphan:
 
+OmniSciOnNative execution
+=========================
+
+OmniSciDB is an open-source SQL-based relational database designed for the
+massive parallelism of modern CPU and GPU hardware. Its execution engine
+is built on LLVM JIT compiler.
+
+OmniSciDB can be embedded into an application as a dynamic library that
+provides both C++ and Python APIs. A specialized in-memory storage layer
+provides an efficient way to import data in Arrow table format.
+
+`OmniSciOnNative` execution uses OmniSciDB for both as a storage format and for
+actual data transformation.
+
+Relational engine limitations
+-----------------------------
+
+Using a relational database engine implies a set of restrictions on
+operations we can execute on a dataframe.
+
+1. We cannot handle frames that use data types not supported by OmniSciDB.
+Currently, we allow only integer, float, string, and categorical data types.
+
+2. Column data should be homogeneous.
+
+3. Can only support operations that map to relational algebra. This means
+most operations are supported over a single axis (axis=0) only. Non-relational
+operations like transposition and pivot are not supported.
+
+When the unsupported data type is detected or unsupported operations is requested
+we use the original pandas framework.
+
+Partitions
+----------
+
+Partitioning is used to achieve high parallelism. In the case of OmniSciDB
+based execution parallelism is provided by OmniSciDB execution engine
+and we don't need to manage multiple partitions.
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe`
+always has a single partition.
+
+A partition holds data in either ``pandas.DataFrame`` or ``pyarrow.Table``
+format. ``pandas.DataFrame`` is preferred only when we detect unsupported
+data type and therefore have to use ``pandas`` framework for processing.
+In other cases ``pyarrow.Table`` format is preferred. Arrow tables can be
+zero-copy imported into OmniSciDB. A query execution result is also
+returned as an Arrow table.
+
+Data Ingress
+------------
+
+When a user imports data in Modin DataFrame (from a file or from some python
+object like array or dictionary) they invoke one of the ``modin.pandas.io`` 
+functions (to read data from a file) or use :py:class:`~modin.pandas.dataframe.DataFrame` constructor
+(to create a Frame from an iterable object). Both of the paths lead to the
+:py:class:`~modin.core.execution.dispatching.factories.dispatcher.FactoryDispatcher`
+that defines a factory that will handle the import query. For `OmnisciOnNative`
+execution, the factory is accordingly 
+:py:class:`~modin.core.execution.dispatching.factories.factories.ExperimentalOmnisciOnNativeFactory`.
+The factory then dispatches the import query: if the data is needed to be read from a file
+- the query is routed to the 
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.io.OmnisciOnNativeIO`
+class, that uses Arrow Framework to read the file into a PyArrow Table, the resulted
+table is then passed to the 
+:py:class:`~modin.experimental.core.storage_formats.omnisci.query_compiler.DFAlgQueryCompiler`.
+If the factory deals with importing a Python's iterable object, the query goes straight
+into the 
+:py:class:`~modin.experimental.core.storage_formats.omnisci.query_compiler.DFAlgQueryCompiler`
+bypassing
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.io.OmnisciOnNativeIO`.
+The Query Compiler then sanitizes an input object and passes it to one of the
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe` 
+factory methods (``.from_*``). The Frame's build method stores the passed object into a new Frame's partition
+and returns the resulted Dataframe, which is then wrapped into a Query Compiler, which is
+then wrapped into a high-level Modin DataFrame, which is then returned to the user.
+
+.. figure:: /img/omnisci/omnisci_ingress.svg
+   :align: center
+
+Note, that during this ingress flow, no data was imported to the OmniSciDB. The need for
+importing to OmniSci is decided at the execution stage by the Modin Core Dataframe layer.
+If the query requires for the data to be placed in OmniSciDB then the import is triggered.
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe` 
+passes partition to import to the
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.partitioning.partition_manager.OmnisciOnNativeDataframePartitionManager`
+that extracts a partition's underlying object and sends a request to import it to the OmniSci
+Server. The response for the request is a unique identifier for the just imported table
+at OmniSciDB, this identifier is placed in the partition. After that, the partition has
+a link to the concrete table in OmniSciDB to query, and the data is considered to be
+fully imported.
+
+.. figure:: /img/omnisci/omnisci_import.svg
+   :align: center
+
+Data transformation flow
+------------------------
+
+.. figure:: /img/omnisci/omnisci_query_flow.svg
+   :align: center
+
+When a user calls any :py:class:`~modin.pandas.dataframe.DataFrame` API, a query
+starts forming at the `API` layer to be executed at the `Execution` layer. The `API`
+layer is responsible for processing the query appropriately, for example, determining
+whether the final result should be a ``DataFrame`` or ``Series`` object, and
+sanitizing the input to the
+:py:class:`~modin.experimental.core.storage_formats.omnisci.query_compiler.DFAlgQueryCompiler`,
+e.g. validating a parameter from the query and defining specific intermediate values
+to provide more context to the query compiler.
+
+The :py:class:`~modin.experimental.core.storage_formats.omnisci.query_compiler.DFAlgQueryCompiler`
+is responsible for reducing the recieved query to the pre-defined Dataframe algebra operators
+and pass their execution to the
+:py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe`.
+
+When :py:class:`~modin.experimental.core.execution.native.implementations.omnisci_on_native.dataframe.dataframe.OmnisciOnNativeDataframe`
+recieves a query it determines, whether the operation is require data materialization
path: docs/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/index.rst
text: @user1:
```suggestion
recieves a query it determines whether the operation requires data materialization
```

diff_hunk: @@ -36,10 +262,19 @@ class.
     dataframe
     partitioning/partition
     partitioning/partition_manager
-    omnisci_engine
     df_algebra
     expr
     calcite_algebra
     calcite_builder
     calcite_serializer
     omnisci_worker
+
+Column name mangling
+''''''''''''''''''''
path: docs/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/index.rst
text: @user1:
something's up with formatting, I don't see this text in the rendered page whatsoever:
![image](https://user-images.githubusercontent.com/45396231/144875624-41a3d93a-ebf9-40ca-a55a-33be1080e9ab.png)


@author:
fixed, now the section has its title
![image](https://user-images.githubusercontent.com/62142979/145212009-fbd43243-5b79-4779-afcb-116270a766da.png)

diff_hunk: @@ -1,7 +1,237 @@
 :orphan:
 
+OmniSciOnNative execution
+=========================
+
+OmniSciDB is an open-source SQL-based relational database designed for the
+massive parallelism of modern CPU and GPU hardware. Its execution engine
+is built on LLVM JIT compiler.
+
+OmniSciDB can be embedded into an application as a dynamic library that
+provides both C++ and Python APIs. A specialized in-memory storage layer
+provides an efficient way to import data in Arrow table format.
+
+`OmniSciOnNative` execution uses OmniSciDB for both as a storage format and for
+actual data transformation.
+
+Relational engine limitations
+-----------------------------
+
+Using a relational database engine implies a set of restrictions on
+operations we can execute on a dataframe.
+
+1. We cannot handle frames that use data types not supported by OmniSciDB.
+Currently, we allow only integer, float, string, and categorical data types.
+
+2. Column data should be homogeneous.
+
+3. Can only support operations that map to relational algebra. This means
+most operations are supported over a single axis (axis=0) only. Non-relational
+operations like transposition and pivot are not supported.
+
+When the unsupported data type is detected or unsupported operations is requested
+we use the original pandas framework.
path: docs/flow/modin/experimental/core/execution/native/implementations/omnisci_on_native/index.rst
text: @user1:
```suggestion
we fall back to the original pandas framework.
```