New Features ✨
-
CREATE INDEX CONCURRENTLYandREINDEX CONCURRENTLYnow partition an index withpartition_bythe way a plain build does, so a concurrently built index no longer starts unpartitioned. -
Added support for
JOIN LATERAL unnestpushdown 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 (includingtermson array fields) and on single tables whose group count is past the bucket limit, withterms(size,min_doc_count,missing,order),sum,avg,min,max,value_count,cardinality, and nestedaggs. -
ParadeDB now supports non-equi joins (e.g. range and inequality join conditions) as well as unconstrained cross joins in both
JoinScanandAggregateScan.
Stability Improvements 💪
-
sort_byandpartition_bynow refuse a field that has no columnar field, atCREATE INDEXrather than part way through the build.partition_byalso 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_bykeeps 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 asizecut among equal counts keeps the smallest keys. A NULL bucket over a numeric field reads asnullinstead of an extreme number, and a spec with nestedaggsnow works beside aGROUP BYon 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.