Performance Improvements 🚀
-
Late materialization now covers array columns: a
text[]or other string array column that a join or aggregate reads from the index is carried through the join as a doc address and read once, where it is used, instead of for every scanned row (#6164). -
Join Scan now executes eligible
ORDER BY ... LIMITqueries (including single-table sorts, combined multi-tablepdb.score(...)expressions, and cross-tableORsearch predicates) using an iterative rank-join operator that streams top-K candidates and probes join partners on demand instead of materializing the full join inputs (#6898). - Avoid quadratic token consumption for Chinese, Japanese, and Korean Lindera tokenizers on large text fields.
Stability Improvements 💪
-
A search predicate that stays above a partitioned table’s
Append, such as anORacross a join or aNOTarm, no longer fails withcould not open file "pg_tblspc/0/...", and neither does a window function in a search query withORDER BY ... LIMITover a partitioned table. Each row is now matched against the index of its own partition.paradedb.index_infoandparadedb.schemaalso work on a partitioned index with more than one level. -
Fixed delayed cancellation and termination during segment merges and made VACUUM’s wait for mergers interruptible, while preserving foreground merging during that wait. VACUUM’s buffer-pin waits support cancellation and
statement_timeout, notlock_timeout.