1.0.0

This page covers the latest changes included in the Apache Pinot™ 1.0.0 release, including new features, enhancements, and bug fixes.

1.0.0 (2023-09-19)

This release includes the several new features, enhancements, and bug fixes, including the following highlights:

Multi-stage query engine new features

Multi-stage query engine enhancements

Multi-stage query engine bug fixes

Index SPI

  • Add the ability to include new index types at runtime in Apache Pinot. This opens the ability of adding third party indexes, including proprietary indexes. More details herearrow-up-right

Null value support for pinot queries

  • NULL support for ORDER BY, DISTINCT, GROUP BY, value transform functions and filtering.

Upsert enhancements

Delete support in upsert enabled tables (#10703arrow-up-right)

Support added to extend upserts and allow deleting records from a realtime table. The design details can be found herearrow-up-right.

Preload segments with upsert snapshots to speedup table loading (#11020arrow-up-right)

Adds a feature to preload segments from a table that uses the upsert snapshot feature. The segments with validDocIds snapshots can be preloaded in a more efficient manner to speed up the table loading (thus server restarts).

TTL configs for upsert primary keys (#10915arrow-up-right)

Adds support for specifying expiry TTL for upsert primary key metadata cleanup.

Segment compaction for upsert real-time tables (#10463arrow-up-right)

Adds a new minion task to compact segments belonging to a real-time table with upserts.

Pinot Spark Connector for Spark3 (#10394arrow-up-right)

PinotDataBufferFactory and new PinotDataBuffer implementations (#10528arrow-up-right)

Adds new implementations of PinotDataBuffer that uses Unsafe java APIs and foreign memory APIs. Also added support for PinotDataBufferFactory to allow plugging in custom PinotDataBuffer implementations.

Query functions enhancements

JSON and CLP encoded message ingestion and querying

  • Add clpDecode transform function for decoding CLP-encoded fields. (#10885arrow-up-right)

  • Add CLPDecodeRewriter to make it easier to call clpDecode with a column-group name rather than the individual columns. (#11006arrow-up-right)

  • Add SchemaConformingTransformer to transform records with varying keys to fit a table's schema without dropping fields. (#11210arrow-up-right)

Tier level index config override (#10553arrow-up-right)

  • Allows overriding index configs at tier level, allowing for more flexible index configurations for different tiers.

Ingestion connectors and features

UI enhancements

  • Adds persistence of authentication details in the browser session. This means that even if you refresh the app, you will still be logged in until the authentication session expires (#10389arrow-up-right)

  • AuthProvider logic updated to decode the access token and extract user name and email. This information will now be available in the app for features to consume. (#10925arrow-up-right)

Pinot docker image improvements and enhancements

Operational improvements

Rebalance

Config to use customized broker query thread pool (#10614arrow-up-right)

Added new configuration options below which allow use of a bounded thread pool and allocate capacities for it.

This feature allows better management of broker resources.

Drop results support (#10419arrow-up-right)

Adds a parameter to queryOptions to drop the resultTable from the response. This mode can be used to troubleshoot a query (which may have sensitive data in the result) using metadata only.

Make column order deterministic in segment (#10468arrow-up-right)

In segment metadata and index map, store columns in alphabetical order so that the result is deterministic. Segments generated before/after this PR will have different CRC, so during the upgrade, we might get segments with different CRC from old and new consuming servers. For the segment consumed during the upgrade, some downloads might be needed.

Allow configuring helix timeouts for EV dropped in Instance manager (#10510arrow-up-right)

Adds options to configure helix timeouts external.view.dropped.max.wait.ms`` - The duration of time in milliseconds to wait for the external view to be dropped. Default - 20 minutes. external.view.check.interval.ms`` - The period in milliseconds in which to ping ZK for latest EV state.

Enable case insensitivity by default (#10771arrow-up-right)

This PR makes Pinot case insensitive be default, and removes the deprecated property enable.case.insensitive.pql

Newly added APIs and client methods

Cleanup and backward incompatible changes

High level consumers are no longer supported

Type information preservation of query literals

  • [feature] [backward-incompat] [null support # 2] Preserve null literal information in literal context and literal transform (#10380arrow-up-right) String versions of numerical values are no longer accepted. For example, "123" won't be treated as a numerical anymore.

Controller job status ZNode path update

  • Moving Zk updates for reload, force_commit to their own Znodes which … (#10451arrow-up-right) The status of previously completed reload jobs will not be available after this change is deployed.

Metric names for mutable indexes to change

  • Implement mutable index using index SPI (#10687arrow-up-right) Due to a change in the IndexType enum used for some logs and metrics in mutable indexes, the metric names may change slightly.

Update in controller API to enable / disable / drop instances

  • Update getTenantInstances call for controller and separate POST operations on it (#10993arrow-up-right)

Change in substring query function definition

Full list of features added

Vulnerability fixes, bugfixes, cleanups and deprecations

Was this helpful?