Skip to main content
See GitHub release: v0.26.4

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 ... LIMIT queries (including single-table sorts, combined multi-table pdb.score(...) expressions, and cross-table OR search 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 an OR across a join or a NOT arm, no longer fails with could not open file "pg_tblspc/0/...", and neither does a window function in a search query with ORDER BY ... LIMIT over a partitioned table. Each row is now matched against the index of its own partition. paradedb.index_info and paradedb.schema also 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, not lock_timeout.