Skip to main content
See GitHub release: v0.25.7

New Features ✨

  • CREATE INDEX CONCURRENTLY and REINDEX CONCURRENTLY now partition an index with partition_by the way a plain build does, so a concurrently built index no longer starts unpartitioned.
  • Added support for JOIN LATERAL unnest pushdown over array fast fields in the join and aggregate scans, enabling multi-table queries to project, filter, sort, and aggregate over unnested array elements.
  • pdb.agg() now runs over joins (including terms on array fields) and on single tables whose group count is past the bucket limit, with terms (size, min_doc_count, missing, order), sum, avg, min, max, value_count, cardinality, and nested aggs.
  • ParadeDB now supports non-equi joins (e.g. range and inequality join conditions) as well as unconstrained cross joins in both JoinScan and AggregateScan.

Stability Improvements 💪

  • sort_by and partition_by now refuse a field that has no columnar field, at CREATE INDEX rather than part way through the build. partition_by also refuses a normalized columnar field, because it cuts on the raw value and cannot prune on a column that orders by the normalized one. sort_by keeps such a column and warns instead, since it still orders the segment.
  • pdb.agg() buckets with equal counts now come back in key order in every query, so a size cut among equal counts keeps the smallest keys. A NULL bucket over a numeric field reads as null instead of an extreme number, and a spec with nested aggs now works beside a GROUP BY on a single table.
  • Fixes query planning and execution issues across joins, lateral unnest, and DISTINCT queries. Corrects outer-join predicate and NULL handling, prevents unsafe LIMIT pushdown over derived DISTINCT expressions, and fixes multi-table score calculation.