Details
-
Task
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
Over the years of SQL existence it's logic became overly complex as we never invested enough time into technical debt. Most prominent features that led to over-complication are:
- Distributed joins
- Subqueries in spliiter
- MVCC
- Query cancel feature
- DML
As a result currently it is too difficult to add new features to the product: we have to spend a lot time figuring what if going on, and loose a lot on introduced bugs.
General idea of this initiative is to streamline query execution engine as much as possible. The most important things to consider:
- Simplify H2 connection management: simple pooling, avoid exposing connection when possible
- Execute MAP and LOCAL queries through the same flow
- Avoid zig-zag code flow in DML stuff
- Rework overly complex "query cancel" feature
- Try to merge partition pruning and distributed join cost calculation
Attachments
Issue Links
- is a parent of
-
IGNITE-6020 SQL: client should request first pages on query execution instead of first cursor read
- Open
-
IGNITE-11206 SQL: Merge execution flow for local and map queries
- Open
-
IGNITE-11207 SQL: Remove MapNodeResults class
- Open
-
IGNITE-11208 SQL: Move reservations from QueryContext to MapQueryResult
- Open
-
IGNITE-11211 SQL: Rework connection pool
- Open
-
IGNITE-11212 SQL: Merge affinity collocation models for partition pruning and distributed joins
- Open
-
IGNITE-11274 SQL: Make GridCacheSqlQuery immutable
- Open
-
IGNITE-11325 SQL: Single place to start missing caches (H2Utils.checkAndStartNotStartedCache)
- Open
-
IGNITE-4807 Move inner classes of GridQueryProcessor to top-level if possible
- Resolved
-
IGNITE-5281 Change "space" notion to "cacheName"
- Resolved
-
IGNITE-5284 Split IgniteH2Indexing into multiple classes if possible
- Resolved
-
IGNITE-6632 SQL: simplify GridH2Row infrastructure
- Resolved
-
IGNITE-10231 SQL: Extract partition pruning logic from splitter
- Resolved
-
IGNITE-10253 SQL: Merge SqlQuery logic with SqlFieldsQuery
- Resolved
-
IGNITE-10303 SQL: Move connection management logic into separate class
- Resolved
-
IGNITE-10535 SQL: Extract partition mapping logic from GridReduceQueryExecutor into a separate class
- Resolved
-
IGNITE-10578 SQL: Extract schema operations from IgniteH2Indexing into a separate class
- Resolved
-
IGNITE-10812 SQL: Split classes responsible for distributed joins
- Resolved
-
IGNITE-11083 SQL: Extract query model from splitter
- Resolved
-
IGNITE-11160 SQL: Simplify row hierarchy
- Resolved
-
IGNITE-11169 SQL: Remove collocation model-related code from GridH2QueryContext
- Resolved
-
IGNITE-11180 SQL: Give more sensible names to reducer classes
- Resolved
-
IGNITE-11185 SQL: Move distributed joins code from base index to H2TreeIndex
- Resolved
-
IGNITE-11200 SQL: Query contexts should not be static
- Resolved
-
IGNITE-11202 SQL: Move partition reservation logic to separate class
- Resolved
-
IGNITE-11209 SQL: Merge DmlStatementsProcessor into IgniteH2Indexing
- Resolved
-
IGNITE-11210 SQL: Introduce common logical execution plan for all query types
- Resolved
-
IGNITE-11223 SQL: Make two-step plan immutable
- Resolved
-
IGNITE-11226 SQL: Remove GridQueryIndexing.prepareNativeStatement
- Resolved
-
IGNITE-11227 SQL: Streamline DML execution logic
- Resolved
-
IGNITE-11231 SQL: Remove scan index for merge table
- Resolved
-
IGNITE-11275 SQL: Move all command processing stuff to DDL processor
- Resolved
-
IGNITE-11278 SQL: Extract query parsing into separate class
- Resolved
-
IGNITE-11279 SQL: Remove H2's "prepared" from DML and local query plans
- Resolved
-
IGNITE-11280 SQL: Cache all queries, not only two-step
- Resolved
-
IGNITE-11304 SQL: Common caching of both local and distributed query metadata
- Resolved
-
IGNITE-11310 SQL: Remove special interaction between query parallelism and distributed joins
- Resolved
-
IGNITE-11326 SQL: Common parsing logic
- Resolved
-
IGNITE-11331 SQL: Remove unnecessary parameters binding
- Resolved
-
IGNITE-4872 GridQueryIndexing.registerType should return void
- Closed
-
IGNITE-4810 Remove unused "removeIndex" methods
- Closed