V0.0.7
Welcome to Kùzu 0.0.7! In this release, we've introduced following main improvements and features:
- Supported
CREATE MACRO
and both scalar and vectorized UDFs in C++ APIs. - Supported
MERGE
clause, which is the Cypher version of SQL's UPSERT statement. - Supported multi-label DELETE/SET.
- Supported exporting query result to csv files through the
COPY TO
clause. Also, exporting query result to arrow arrays is now available in C/C++ and Rust APIs. - Introduced new data types:
MAP
andUNION
. - Improved
RETURN
clause with two minor features: 1) RETURN after update; 2) RETURN with.*
. - Improved sub query execution with unnesting optimization.
- Introduced NodeGroup based storage layout for node tables.
As usual, we have more details in our blog post. Enjoy your reading!
What's Changed
- Improve error messages related to primary keys during copy by @ray6080 in #1830
- Clean up duplicated morsel and sharedState between copy node and rel by @ray6080 in #1834
- LDBC 100 SSSP queries by @anuchak in #1832
- Implement scalar macro by @acquamarin in #1836
- Catch exception during finalize phase by @ray6080 in #1835
- ResultCollector, FTableScan, UnionAllScan refactor by @andyfengHKU in #1839
- Change npy reader to read multiple files at one time by @ray6080 in #1842
- Refactor copy node info by @ray6080 in #1844
- Disable large scale shortest path that takes too long to finish by @andyfengHKU in #1840
- Rename mapper functions by @andyfengHKU in #1850
- Enable Optional Match as the First Clause by @andyfengHKU in #1849
- Add ser/deser for macro function by @acquamarin in #1846
- Fix nested value iteration by @andyfengHKU in #1845
- change value type to unique ptr by @andyfengHKU in #1852
- Remove update planner by @andyfengHKU in #1854
- Fix check for asan logs by @benjaminwinger in #1831
- Fix bugs in Connection::interrupt by @benjaminwinger in #1828
- Update rust API to use new value interface by @benjaminwinger in #1855
- Fix agg memory leak by @acquamarin in #1859
- Upgrade GitHub runners and allow auto upgrade by @mewim in #1860
- Add create-macro transaction constraints by @acquamarin in #1857
- Enable optional match cross product by @andyfengHKU in #1858
- Add binding for MERGE clause by @andyfengHKU in #1861
- Add functions exposing conversion to Arrow ArrayData by @benjaminwinger in #1827
- Fix factorizedTable by @acquamarin in #1871
- Solve issue 1865, add is_trail & is_acyclic path functions by @andyfengHKU in #1868
- Refactor catalog serialize/deserialize by @ray6080 in #1864
- Fix schema properties parsing for Node.js API by @mewim in #1875
- Pin the time crate to 0.3.23 by @benjaminwinger in #1874
- Support multi-label delete by @andyfengHKU in #1870
- Catalog rework by @acquamarin in #1877
- Node group-based node table storage by @ray6080 in #1802
- Enable multi label set by @andyfengHKU in #1880
- Enable read after update by @andyfengHKU in #1882
- Support COPY TO statement by @rfdavid in #1716
- NodeGroup list storage refactor by @acquamarin in #1885
- Refactor create operators by @andyfengHKU in #1887
- Simplify expression scan planning by @andyfengHKU in #1889
- Fix for non-thrown duplicated pk error by @ray6080 in #1890
- Change expression scan to dummy scan by @andyfengHKU in #1892
- Reorg parser module by @andyfengHKU in #1896
- Merge operator by @andyfengHKU in #1894
- re-organize binder module by @andyfengHKU in #1897
- Re-organize projection planner by @andyfengHKU in #1898
- reorg join order enumerator by @andyfengHKU in #1899
- reorg logical operators by @andyfengHKU in #1900
- Reorg mapper and evaluator by @andyfengHKU in #1901
- Rework node table delete interface by @ray6080 in #1902
- Add loader for map dataType by @acquamarin in #1891
- Support return after create by @andyfengHKU in #1906
- Change delete planning to comply storage change by @andyfengHKU in #1905
- Implement union-loader by @acquamarin in #1907
- Store nulls as densely packed bitfields by @benjaminwinger in #1862
- Fix merge operator mark by @andyfengHKU in #1911
- Clean up usage of
common::
prefix in cpp files and fix clang warnings by @ray6080 in #1908 - Move the initialization of metadada disk arrays to wal-based transaction mechanism by @ray6080 in #1895
- Boolean bitpacking by @benjaminwinger in #1884
- Rework node table insert interface by @ray6080 in #1910
- fix merge rel by @acquamarin in #1916
- Parquet loader fix by @acquamarin in #1914
- Fix number of threads for Node.js API by @mewim in #1918
- Fix param type for Python execute by @mewim in #1922
- Generic hash join by @andyfengHKU in #1919
- Fix Serial for node-groups by @aziz-mu in #1886
- Split CI build pipeline for X86 and ARM Mac by @mewim in #1926
- Fix var-size seq scan perf by @acquamarin in #1924
- Fix add node property by @acquamarin in #1923
- Support parquet large str by @acquamarin in #1929
- Fix issue 1920 by @ray6080 in #1931
- Fix Rust deployment by @benjaminwinger in #1932
- Unnest arbitrary subquery by @andyfengHKU in #1930
- Fix union tag bug by @acquamarin in #1936
- Add transaction commands to the testing framework by @rfdavid in #1933
- Basic framework of local storage for node group by @ray6080 in #1928
- Fix merge failing example by @andyfengHKU in #1935
- Add var_length_extend_max_depth option by @acquamarin in #1939
- Disable undirected delete by @andyfengHKU in #1938
- List local storage by @acquamarin in #1937
- Support struct update by @ray6080 in #1942
- Add api comment for arrow export by @ray6080 in #1941
- Bump version to 0.0.7 by @mewim in #1943
Full Changelog: v0.0.6...v0.0.7