Skip to content

Release v0.21.0

Choose a tag to compare

@adsharma adsharma released this 29 Sep 00:25
· 15 commits to main since this release
Immutable release. Only release title and notes can be modified.

What's Changed

  • fix(storage): guard unloaded index holders in write/commit paths and allow DROP/rebuild of orphan holders by @chiangchenghsin-hash in #897
  • Fix garbage rel ID in MERGE with multiple ON MATCH SET clauses on the same rel by @adsharma in #895
  • fix(storage): harden unloaded index holder reclamation and commit-path index maintenance by @adsharma in #899
  • Add group-key predicate pushdown optimizer by @Mrhs121 in #874
  • fix: string hash portability across platforms with different char signedness (issue #882) by @adsharma in #886
  • Apply node table update before updating indexes (fixes HNSW SET-on-NULL segfault, #896) by @adsharma in #900
  • Planner: plan multi-hop linear patterns as extend chains (fixes #856) by @adsharma in #859
  • Implement multi-parent packed scan for CSR rel tables by @adsharma in #867
  • fix: crash re-executing DISTINCT aggregate on cached-plan fast path (#906) by @adsharma in #913
  • Parallelize scans of small node tables with sub-node-group morsels (fixes #727) by @adsharma in #907
  • Export database in parquet-based CSR format (icebug-disk compatible) by @adsharma in #916
  • Fix parameter collection inside subquery WHERE clauses by @adsharma in #920
  • Generalize COUNT_REL_TABLE metadata counting to packed extend chains by @adsharma in #918
  • Support directional chain hops in anti-edge count rewrite by @adsharma in #921
  • Fix #924: reuse shadow FileHandle across checkpoints by @adsharma in #925
  • test: remove unused by @adsharma in #926
  • Fix race between FWD/BWD rel batch inserts sharing one partition cursor by @adsharma in #928
  • Split debug symbols out of Python wheels by @adsharma in #927
  • lsqb benchmark: run nightly wheel from TestPyPI after build-and-deploy by @adsharma in #929
  • Update rust submodule by @adsharma in #930
  • fix(storage): prevent corrupted HASH PK entries from crashing MERGE by @ericyuanhui in #932
  • dumpLogical: handle recent operators; make logical operator type-to-string switch exhaustive by @adsharma in #936
  • fix(storage): pin Arrow registry entries with shared_ptr to prevent use-after-free by @adsharma in #938
  • Fix use-after-free: reusable ResultSet outlived its Database by @udamaster in #941
  • Centralize Node Offset Validation in NodeTable::isVisibleNoLock by @ericyuanhui in #944
  • fix(storage): guard chunk scan against zero-length memcpy on empty chunks by @adsharma in #945
  • fix(storage): fail fast on out-of-bounds PIP/header page reads by @adsharma in #946
  • Gate the anti-edge chain count rewrite on native storage by @itz-puneet in #943
  • Fix data race in OptimisticAllocator during parallel COPY by @adsharma in #949
  • fix(storage): validate allocated page ranges and page indices on the write path by @fabzter in #950
  • Update submodule for extensions by @adsharma in #952
  • Enable malloc buffer manager in sanitizer workflow by @Saiteja64 in #953
  • Fix unaligned string hash access by @Saiteja64 in #954
  • Cache sanitizer builds with ccache by @Saiteja64 in #955
  • Fix Parquet writer data race by @Saiteja64 in #956
  • Fix IceDisk relation table data race by @Saiteja64 in #957
  • Fix WAL checksum entry-buffer resize dropping buffered bytes by @adsharma in #959
  • Update extension submodule pointer for icebug 13.4 by @adsharma in #960
  • Extend hash-join SIP with rel-scan semi masks by @adsharma in #961
  • Fix Windows-only CardinalityTest and WalTest failures by @adsharma in #963
  • fix(alp): bound the encodable range and the sentinel by ENCODED_TYPE by @fabzter in #958
  • Fix UBSan failures and TSan fixture gap from nightly sanitizer run by @adsharma in #964
  • Fix UBSAN misaligned loads and null-pointer bindings by @adsharma in #965
  • Sort PackedFilteredCount output and stabilize cardinality comparison by @adsharma in #966
  • Fix heap corruption in indptr export finalize for large graphs by @adsharma in #967
  • Fix PackedFilteredCount misattribution on multi-key batches by @adsharma in #968
  • Expose prepared-statement result schema without execution by @adsharma in #970
  • Add PreparedStatement::getArrowSchema(), use it in C API by @adsharma in #972
  • Remove unused variables by @adsharma in #976
  • Add EXTENSION ABI comments to layout-sensitive core types by @adsharma in #977
  • fix DAC page check by @ericyuanhui in #978
  • Optimize skewed intersect lists by @rahul-iyer in #828
  • Skip probe-to-build SIP when probe cardinality >= build cardinality by @adsharma in #969
  • test: add cast bounds cases for FLOAT and DOUBLE by @jrjsmrtn in #980
  • Fix UBSan misaligned loads from nightly sanitizer run 35089289811 by @adsharma in #981
  • Validate hash index headers and bound DAC chains by @ericyuanhui in #982
  • Fix aggregate binding over unresolved parameter placeholders by @YuEfSaEDU in #983
  • Remove dead DAC bound and add HashIndex load-validation tests by @adsharma in #988
  • Fix -Wformat error in intersect kernels benchmark print by @adsharma in #989
  • Fix ASan+UBSan nightly build: raise gtest discovery timeout for C API tests by @adsharma in #990
  • Fix missing paren in exported CREATE REL TABLE for icebug-disk rels by @adsharma in #991
  • Fix data race in IceDiskRelTable lazy reader init by @adsharma in #987
  • fix: prepared statements shouldn't cache parametrized plans by @adsharma in #986
  • fix STRING dictionary offsets can underflow and crash the engine by @ericyuanhui in #993
  • Harden STRING dictionary offset validation and add regression coverage by @ericyuanhui in #997
  • Generalize SQL pushdown to Iceberg/Unity Catalog attached databases by @adsharma in #996
  • Address review follow-ups on foreign join pushdown (#996) by @adsharma in #1001
  • Wire DuckLake extension into build and ATTACH hint by @adsharma in #1002
  • Extend SQL pushdown: multi-hop, filters, aggregation, ORDER BY, recursive CTE by @adsharma in #1003
  • Ship partition routing hooks in the amalgamated lbug.hpp by @adsharma in #1005
  • fix ALP DOUBLE exception chunk can reach invalid state by @ericyuanhui in #999
  • Query the schema as a graph via MATCH on schema_table/schema_rel by @adsharma in #1008
  • UBSAN: don't do alignment checking by @adsharma in #1014
  • fix(storage): read shadow pages for scans running during a checkpoint by @kory-io in #1016
  • fix(storage): keep segment on disk when an out-of-place checkpoint fails by @kory-io in #1019
  • style(storage): use [[maybe_unused]] for the released null chunk by @kory-io in #1021
  • Fix remaining UBSan errors from nightly sanitizer run 35993196544 by @adsharma in #1017
  • fix(planner): selective correlated-optional unnest, PK lookup in OPTIONAL, recursive seed costing by @adsharma in #1018
  • fix(planner): unnest COLLECT-then-IN membership into pair joins by @adsharma in #1026
  • fix(optimizer): use primary-key lookup for SERIAL key with implicit cast by @adsharma in #1028
  • fix(list): make quantifier exec slice-aware to fix segfault past 2048 elements by @adsharma in #1029
  • fix(storage): restore the active WAL when a checkpoint fails by @kory-io in #1020
  • fix(storage): keep recovered frozen WAL until it is checkpointed by @kory-io in #1022
  • fix(processor): reset node scan shared state on cached plan reuse by @adsharma in #1032
  • fix(optimizer): gate degree top-k rewrite on CSR invariant by @adsharma in #1033
  • fix(common): make int128 add/sub overflow check portable for MSVC by @adsharma in #1034
  • ci: use static matrix include for minimal-test platform selection by @adsharma in #1035
  • ci: fix invalid matrix reference in minimal-test job if by @adsharma in #1039
  • chore: bump rust_api submodule for lbug.hpp source-build fix by @adsharma in #1038
  • Fix UBSAN negation overflow on INT_MIN in integer bitpacking by @adsharma in #1037
  • fix(exec): honor selection vector in vector hash by @adsharma in #1041
  • Improve LBUG_DUMP_LOGICAL compact output with 1-2 key params per operator by @adsharma in #1042
  • fix(planner): staged distinct pre-aggregation over LEFT-join chains by @adsharma in #1044
  • refactor(storage): address checkpoint review follow-ups by @kory-io in #1045
  • fix(planner): degree-stats join order fan-out and staged-agg cardinality by @adsharma in #1046
  • fix(storage): don't collapse float chunks holding NaN/-0.0 to CONSTANT by @adsharma in #1047
  • fix(storage): hold the node-group lock across a delete by @kory-io in #1048
  • fix(storage): assign PK index header pages under one condition by @kory-io in #1049
  • fix(storage): publish PK index checkpoint only after commit by @adsharma in #1057
  • fix(storage): roll back CSR node group to pre-checkpoint state on failure by @adsharma in #1058
  • Honor EXTENSION_STATIC_LINK_LIST in shell targets by @adsharma in #1061
  • Treat hf:// as a remote path by @adsharma in #1060

New Contributors

Full Changelog: v0.20.2...v0.21.0