Release v0.21.0
·
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
- @udamaster made their first contribution in #941
- @itz-puneet made their first contribution in #943
- @fabzter made their first contribution in #950
- @Saiteja64 made their first contribution in #953
- @jrjsmrtn made their first contribution in #980
- @YuEfSaEDU made their first contribution in #983
Full Changelog: v0.20.2...v0.21.0