Class ExternalSourceExec

All Implemented Interfaces:
NamedWriteable, Writeable, DataSourceExec, EstimatesRowSize

public class ExternalSourceExec extends LeafExec implements EstimatesRowSize, DataSourceExec
Generic physical plan node for reading from external data sources (e.g., Iceberg tables, Parquet files).

This is the unified physical plan node for all external sources, replacing source-specific nodes. It uses generic maps for configuration and metadata to avoid leaking source-specific types (like S3Configuration) into core ESQL code.

Key design principles:

  • Generic configuration: Uses Map<String, Object> for config instead of source-specific classes like S3Configuration
  • Opaque metadata: Source-specific data (native schema, etc.) is stored in sourceMetadata() and passed through without core understanding it
  • Opaque pushed filter: The pushedFilter() is an opaque Object that only the source-specific operator factory interprets. It is NOT serialized; it is created locally on each data node by the LocalPhysicalPlanOptimizer via FilterPushdownRegistry
  • Data node execution: Created on data nodes by LocalMapper from ExternalRelation inside FragmentExec