-
This is a very basic
Vectorized Execution Engineextracted from MatrixOne database. -
The query engine is in query engine pkg. The core code is in txn_executor
-
Some of the packages have be renamed and ordered for easy understanding.
-
This supports a very primitive
ProjectionandAbsfunction. Hopefully, this should give you a high level overview of how Columnar Execution Engines Works. -
For Volcano based execution model, refer to my TinyDB Java Project.
- You can see the use of
Next()being applied at row/record level. - You can see how this is a pull based approach.
- You can see the use of
-
In Vectorized execution
- We do a push based approach, by storing the
batchinProcess Register. - We execute operation on the Column level, as see in the
ColExec. - These operations can make use of SIMD if required.
- We do a push based approach, by storing the
- Passing
Attrto the resultBatch - Documentation
- Implement a Parquet based Storage Engine/Reader
- Implement JOIN
- Replace
FunctionNamewithFunctionID
Some of the code could be wrong or buggy. I am also in the learning phase. If you find a bug, please feel free to raise a PR.
