Module executor Copy item path Source aggregation This module contains wrappers over Aggregator
trait that implement order by
, filter
,
distinct
and project. azblob_file_scan ๐ delete ๐ expand ๐ filter ๐ gcs_file_scan ๐ generic_exchange ๐ group_top_n ๐ hash_agg ๐ hash_join hop_window ๐ iceberg_scan ๐ insert ๐ join ๐ limit ๐ local_lookup_join log_row_seq_scan ๐ max_one_row ๐ merge_sort ๐ merge_sort_exchange ๐ mysql_query ๐ nested_loop_join order_by ๐ postgres_query ๐ project ๐ project_set ๐ row_seq_scan ๐ s3_file_scan ๐ sort_agg ๐ sort_over_window ๐ source ๐ sys_row_seq_scan ๐ table_function ๐ test_utils top_n ๐ union ๐ update ๐ utils ๐ values ๐ register_executor Register an executor builder so that it can be used to build the executor from protobuf. AggSpillManager AggSpillManager
is used to manage how to write spill data file and read them back.
The spill data first need to be partitioned. Each partition contains 2 files: agg_state_file
and input_chunks_file
.
The spill file consume a data chunk and serialize the chunk into a protobuf bytes.
Finally, spill file content will look like the below.
The file write pattern is append-only and the read pattern is sequential scan.
This can maximize the disk IO performance.AsOf AsOfDesc BufferChunkExecutor DefaultCreateSource DeleteExecutor DeleteExecutor
implements table deletion with values from its child executor.DistributedLookupJoinExecutor Distributed Lookup Join Executor.
High level Execution flow:
Repeat 1-3: DistributedLookupJoinExecutorBuilder DummyExecutor EquiJoinParams ExecutorBuilder ExecutorBuilderDescriptor Descriptor for executor builder. ExecutorInfo ExpandExecutor FastInsertExecutor A fast insert executor spacially designed for non-pgwire inserts such as websockets and webhooks. FilterExecutor GenericExchangeExecutor GenericExchangeExecutorBuilder GroupTopNExecutor Group Top-N Executor GroupTopNExecutorBuilder HashAggExecutor HashAggExecutor
implements the hash aggregate algorithm.HashAggExecutorBuilder HashJoinExecutor Hash Join Executor HopWindowExecutor IcebergScanExecutor IcebergScanExecutorBuilder InsertExecutor InsertExecutor
implements table insertion with values from its child executor.JoinSpillManager LimitExecutor Limit executor. LocalLookupJoinExecutor Local Lookup Join Executor.
High level Execution flow:
Repeat 1-3: LocalLookupJoinExecutorBuilder LookupJoinBase Lookup Join Base.
Used by LocalLookupJoinExecutor
and DistributedLookupJoinExecutor
. ManagedExecutor ManagedExecutor
build on top of the underlying executor. For now, it does two things:MaxOneRowExecutor MergeSortExchangeExecutorBuilder MergeSortExchangeExecutorImpl MergeSortExchangeExecutor2
takes inputs from multiple sources and
The outputs of all the sources have been sorted in the same way.MergeSortExecutor MySqlQueryExecutor MySqlQuery
executor. Runs a query against a MySql
database.MySqlQueryExecutorBuilder NestedLoopJoinExecutor Nested loop join executor. PostgresQueryExecutor PostgresQuery
executor. Runs a query against a Postgres database.PostgresQueryExecutorBuilder ProjectExecutor ProjectSetExecutor RowId Id of one row in chunked data. RowSeqScanExecutor Executor that scans data from row table RowSeqScanExecutorBuilder ScanRange Range for batch scan. SortAggExecutor SortAggExecutor
implements the sort aggregate algorithm, which assumes
that the input chunks has already been sorted by group columns.
The aggregation will be applied to tuples within the same group.
And the output schema is [group columns, agg result]
.SortExecutor Sort Executor SortOverWindowExecutor SortOverWindowExecutor
accepts input chunks sorted by partition key and order key, and
outputs chunks with window function result columns.SourceExecutor TableFunctionExecutor TableFunctionExecutorBuilder TopNExecutor Top-N Executor UnionExecutor UpdateExecutor UpdateExecutor
implements table update with values from its child executor and given
expressions.ValuesExecutor ValuesExecutor
implements Values executor.WrapStreamExecutor AsOfInequalityType JoinType ProjectSetSelectItem Either a scalar expression or a set-returning function. BUILDER_DESCS All registered executor builders. BoxedExecutorBuilder Every Executor should impl this trait to provide a static method to build a BoxedExecutor
from proto and global environment. CreateSource CreateSource
determines the right type of ExchangeSource
to create.Executor Refactoring of Executor
using Stream
. LookupExecutorBuilder Used to build the executor for the inner side batch_read Read at least rows
rows. build_scan_range_from_pb build_scan_ranges_from_pb mysql_row_to_owned_row postgres_row_to_owned_row unix_timestamp_sec_to_epoch BoxedDataChunkListStream BoxedDataChunkStream BoxedExecutor BoxedLookupExecutorBuilder ExchangeExecutor JoinHashMap In JoinHashMap
, we only save the row id of the first build row that has the hash key.
In fact, in the build side there may be multiple rows with the same hash key. To handle this
case, we use ChunkedData
to link them together. For example: MergeSortExchangeExecutor