Package org.elasticsearch.xpack.esql.datasources.spi
package org.elasticsearch.xpack.esql.datasources.spi
-
ClassDescriptionBase for the leaf
StorageObjectproviders (S3, GCS, Azure, HTTP, local): owns theAbstractMeteredStorageObject.countersfield and theAbstractMeteredStorageObject.metrics()accessor that each used to re-declare identically, plus the shared native-async read completion handling (AbstractMeteredStorageObject.onReadComplete(java.util.concurrent.CompletableFuture<T>, java.util.function.BiConsumer<T, java.lang.Throwable>)/AbstractMeteredStorageObject.deliverRead(org.elasticsearch.action.ActionListener<org.elasticsearch.xpack.esql.datasources.spi.DirectReadBuffer>, org.elasticsearch.xpack.esql.datasources.spi.DirectReadBuffer, long)).SPI for declaring that a format can compute aggregates from file-level statistics.Specification for a single aggregate to be computed from file-level statistics.Base class for the external-format page iterators (NDJSON, CSV, parquet-rs) that buffer a single look-aheadPageinBufferingPageIterator.nextPage— materialized by the subclass'shasNext()and handed out (and nulled) by itsnext().Converts columnar primitive arrays to ESQLBlocks, avoiding the per-element overhead of Block.Builder when the source data is already in columnar form.Loads one projected column by physical row identity.Capability marker forFormatReaderimplementations that can re-read columns positionally after the primary forward scan.Implemented by reader iterators that emit the syntheticColumnExtractor.ROW_POSITION_COLUMNalongside their pages and can produce a matchingColumnExtractorwhose addressing space is identical to the one the iterator is using for its row-position counter.Reject configuration keys not in any of the supplied claimed-key sets.Configured<T>Carrier for "configure with this map" operations: a value plus the keys it consumed.A live connection to an external data source.Factory for creating connectors to external data sources.Metadata describing a datasource configuration field — its name, sensitivity, and value semantics.Base class for datasource configurations.Extension point for data source implementations.Helpers forDataSourceValidatorimplementations.Validates data source + dataset settings at CRUD time.The single source of truth for declared-type coercion on external datasets: which (physical file type → declared type) pairs an external reader coerces at read time, how a decoded physical block becomes a declared-type block (DeclaredTypeCoercions.castBlock(org.elasticsearch.compute.data.Block, org.elasticsearch.xpack.esql.core.type.DataType, org.elasticsearch.xpack.esql.core.type.DataType, org.elasticsearch.common.time.DateFormatter, org.elasticsearch.compute.data.BlockFactory, java.lang.String, org.elasticsearch.xpack.esql.datasources.spi.SkipWarnings)), and the one scalar conversion the string → date pair uses everywhere (DeclaredTypeCoercions.parseDatetimeMillis(java.lang.String, org.elasticsearch.common.time.DateFormatter)).SPI for decompression codecs.Use-after-free detection for off-heap (direct) read buffers.Result ofStorageObject.readBytesAsync(long, long, DirectBufferFactory, java.util.concurrent.Executor, org.elasticsearch.action.ActionListener): the bytes plus aReleasablethat frees the native memory backing them.Per-query descriptor for the live TopN threshold exposed to format readers.Capability marker forFormatReaderimplementations that can use a live TopN threshold.Configures how format readers handle malformed or unparseable rows.Determines what happens to a row (or field) that fails to parse.An external-source failure caused by the request rather than by the cluster: the data we were pointed at cannot be read or decoded (corrupt/truncated/malformed file, an unsupported format feature, a missing object).Base type for failures raised while reading from an external data source — an object store, a file in some columnar/row format, a remote HTTP endpoint, etc.An external-source failure caused by the cluster, not the request: a bug or a broken invariant in our own reading code (an unexpected internal state, a code path that should be unreachable).Common interface for complete external data source factories.Node-level holder for the ES|QL external-data-source operational metrics, published through the nodeMeterRegistry(APM/OTLP) for serverless dashboards and alerts.A serializable, parallelizable unit of work for an external data source.A retryable transport failure talking to the remote store backing an external data source — the store returned a 5xx, throttled us, or the connection timed out / was reset.Base configuration for file-based external sources (S3, GCS, Azure).The resolved credential-selection mode a provider builds a mechanism for.DataSourceValidatorfor file-based external sources (S3, GCS, Azure).Resolves file-format metadata for dataset CRUD validation.Indexed view over a resolved set of files from an external data source.SPI interface for filter pushdown support in external data sources.Indicates whether an expression can be pushed to the data source.Result of attempting to push filters to a data source.Immutable context for a singleFormatReader.read(org.elasticsearch.xpack.esql.datasources.spi.StorageObject, org.elasticsearch.xpack.esql.datasources.spi.FormatReadContext)orFormatReader.readAsync(org.elasticsearch.xpack.esql.datasources.spi.StorageObject, org.elasticsearch.xpack.esql.datasources.spi.FormatReadContext, java.util.concurrent.Executor, org.elasticsearch.action.ActionListener<org.elasticsearch.compute.operator.CloseableIterator<org.elasticsearch.compute.data.Page>>)call.Unified interface for reading data formats.Strategy for resolving schemas across multiple files in a glob/multi-file query.Factory for creatingFormatReaderinstances.Typed per-format reader counter snapshot folded into theformat_readerfield of the external-source operator status.Describes a file format this plugin provides: a logical format name, the file extensions that select it, and the per-dataset configuration keys it recognises.Index of independently decompressible frames within a compressed file.Extension ofDecompressionCodecfor codecs that support index-based random access to independently compressed frames.Metadata about a file already known from a directory listing, passed toExternalSourceFactory.resolveMetadataAsync(java.lang.String, org.elasticsearch.xpack.esql.datasources.spi.ListingHint, java.util.Map<java.lang.String, java.lang.Object>, java.util.concurrent.Executor, org.elasticsearch.action.ActionListener<org.elasticsearch.xpack.esql.datasources.spi.SourceMetadata>)so the factory can build the storage object without a synchronous existence/HEAD probe before the async metadata read.MarkerFormatReaderfor readers that recognise no per-query configuration keys.Strategy for readers that have no native row-position channel and must surface_rowPositionas a NULL column (parquet-rs today; the Rust bridge does not yet expose row positions).Strategy for readers that natively populate the_rowPositionslot inside their own page-emitting iterator (parquet-mr, ORC, CSV, NDJSON).Describes a query to execute against a connector.Extension ofFormatReaderfor columnar formats (Parquet, ORC) that support row-group-level split parallelism.A byte range within a file with optional per-range statistics (e.g.Stream wrapper that enforces themax_record_sizebyte cap on every record without decoding characters or visiting bytes outside the bulk-read fast path.Finds format-specific record boundaries for splittable row-oriented external data sources.Streaming cursor over query results from a connector.Per-reader strategy for populating the_rowPositionslot in emitted pages.Extension ofFormatReaderfor line-oriented text formats (CSV, NDJSON) that support intra-file parallel parsing.Simple immutable implementation of SourceMetadata.Builder for SimpleSourceMetadata.Collects responseWarningheaders for datasource read paths that skip a malformed input and resume processing (non-strictErrorPolicy, or similar best-effort fallbacks).Unified metadata output type returned by all schema discovery mechanisms.Context for creating source operator factories.Functional interface for creating source operator factories.Statistics about a data source for query planning and optimization.Statistics for an individual column.Represents a unit of work for a connector to execute.Context passed toSplitProvider.discoverSplits(org.elasticsearch.xpack.esql.datasources.spi.SplitDiscoveryContext)containing all information needed to enumerate and optionally prune splits for an external source.Result ofSplitProvider.discoverSplits(org.elasticsearch.xpack.esql.datasources.spi.SplitDiscoveryContext): the discovered splits plus the post-prune "scanned" accounting reported in the query profile.Discovers parallelizable splits for an external data source.Per-split statistics used by the optimizer for aggregate pushdown and filter pruning.Extension ofDecompressionCodecfor codecs that support splitting compressed files into independently decompressible ranges aligned to compressed block boundaries.Unified interface for storage object access.Immutable snapshot of cumulative I/O counters for aStorageObjectinstance.Mutable, thread-safe counter struct for storage I/O.Represents a location in a storage system.Abstraction for accessing objects in external storage systems.Factory for creatingStorageProviderinstances.Node-level services threaded intoDataSourcePlugin.storageProviders(StorageProviderServices).How much per-stripe statistics a row-format external read should harvest while it scans, threaded to the readers throughFormatReadContext.statsColumnScope().Connects to table catalog systems like Iceberg, Delta Lake, or Hudi.Factory for creating TableCatalog instances.