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 ๐ get_channel_delta_stats ๐ 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 ๐ vector_index_nearest ๐ 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.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 BoxedDataChunkListStream BoxedDataChunkStream BoxedExecutor 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