Releases: kuzudb/kuzu
v0.0.11
We release Kùzu 0.0.11, another minor release. The main new feature of this release is read-only access mode for the database on Linux (#2089, #2229 and #2233). The read-only mode enables the upcoming Kùzu UI to optionally open a database in read-only mode while allowing other applications to access the same database concurrently.
What's Changed
- Update readme build instructions by @andyfengHKU in #2217
- Change offset vector from int64 to internal_id when reading from files by @ray6080 in #2219
- Add size() alias by @acquamarin in #2220
- Database access mode by @hououou in #2089
- Add CI job for macOS by @mewim in #2222
- replace cast string to fixed function in driver.cpp by @AEsir777 in #2221
- Enable clang-analyzer by @Riolku in #2194
- Reduce number of test query threads by @benjaminwinger in #2228
- test/c_api: don't use database if unecessary by @Riolku in #2234
- Buffered serialization by @benjaminwinger in #2225
- replace cast string to union function in driver.cpp by @AEsir777 in #2227
- Add C, Python, Node.js, and Java API bindings for read-only mode by @mewim in #2229
- Add access mode option to Rust API by @benjaminwinger in #2233
- Bump version to 0.0.11 by @mewim in #2237
Full Changelog: v0.0.10...v0.0.11
V0.0.10
We're here to introduce Kùzu 0.0.10, which is a minor release with a bunch of bug fixes and improvements:
- Added the frame of reference encoding for integers. PR 2140
- Fixed slicing of UTF-8 string. PR 2212
- Fixed copying of invalid UTF-8. PR 2208
- Added more checks and better error messages during the binding phase. PR 2206
- Fixed return list literal with null values. PR 2187
- Fixed bugs in scan multi label rel tables. PR 2149
- Deprecated all functions for getting the table names and properties from the client APIs and the CLI, instead,
CALL
is introduced for the same functionality. PR 2199, 2207 - Added missing data type support in client APIs. PR 2183, PR 2176, PR 2193, PR 2172
What's Changed
- Fixup warnings by @Riolku in #2138
- refactor: splitup table_functions.h by @Riolku in #2142
- Refactor toString() by @acquamarin in #2141
- Fix mac compilation by @acquamarin in #2144
- refactor: move large WAL operators to source file by @Riolku in #2146
- refactor: move table functions to one file by @Riolku in #2147
- Fix bug in generic scan rel tables by @ray6080 in #2149
- Skip q37 in benchmark by @ray6080 in #2151
- change one occurrence of NUM_THREADS=32 to 18 on self-hosted-windows by @russell-liu in #2154
- Pytest windows parser exception by @russell-liu in #2157
- change print to sys.stdout.write and flush in benchmark_runner.py by @russell-liu in #2155
- Add examples to alldebug by @ray6080 in #2159
- Frame of reference encoding by @benjaminwinger in #2140
- update torch version from 1.13 to 2.0.0 by @russell-liu in #2064
- ci: update runner by @Riolku in #2163
- Attempt to solve Windows timeout by specifying gtest DISCOVERY_TIMEOUT by @mewim in #2165
- Fix #2158 by @andyfengHKU in #2171
- Fix numNodes in CopyNode by @ray6080 in #2161
- Remove
setValueFromString
from ColumnChunk by @ray6080 in #2169 - Export map to py dict by @ray6080 in #2172
- Clean up node_column.h and column_chunk.h by @benjaminwinger in #2164
- tidy: add clang-tidy by @Riolku in #2156
- cast string to list by @AEsir777 in #2145
- reader: remove counting of blocks by @Riolku in #2166
- Bump PyG version to 2.3.0 and remove the optional dependencies by @mewim in #2178
- Rename create to insert, fix return serial after insertion by @andyfengHKU in #2181
- Move child chunks and columns to struct by @ray6080 in #2173
- Fix #2174 for Node.js by @mewim in #2183
- Add support for Map to rust API by @benjaminwinger in #2176
- cast string to struct by @AEsir777 in #2189
- Link C and C++ API tests against the API-restricted shared library by @benjaminwinger in #2153
- fix q03 in benchmark by @russell-liu in #2180
- Rust Union support by @benjaminwinger in #2193
- Parquet writer by @acquamarin in #2177
- Fix mac build by @acquamarin in #2204
- Add show_relation table function by @acquamarin in #2199
- Fix #2187 by @andyfengHKU in #2197
- Fix hash node rel by @andyfengHKU in #2192
- Fix #2184: add binding errors by @ray6080 in #2206
- Deprecate table metadata printing functions by @mewim in #2207
- finish cast string to map by @AEsir777 in #2201
- Throw copy exception on invalid utf8 string by @acquamarin in #2208
- Fix transaction test by @benjaminwinger in #2211
- Fix list slice utf8 by @acquamarin in #2212
- Validate file header for LOAD and COPY by @andyfengHKU in #2210
- Bump version to 0.0.10 by @ray6080 in #2213
- Try to fix windows bin location by @mewim in #2214
Full Changelog: v0.0.9...v0.0.10
V0.0.9
Welcome to Kùzu 0.0.9! In this release, we've introduced following main improvements and features:
- Supported LOAD FROM, which directly evaluate queries over CSV/Parquet files without loading into database.
- Replaced the
beginReadTransaction()
,beginWriteTransaction()
,commit()
androllback()
APIs in all language bindings with cypher statements. - Supported comments on tables.
- Expand recursive rel pattern and enables projection on intermediate nodes and rels.
- Introduced
CREATE REL GROUP
. - Introduced a set of new data types (e.g.,
INT8
,UINT64
,UINT32
,UINT16
,UINT8
) and related casting functions. - Replaced arrow's CSV and Parquet reader with new customized one.
- Introduced bitpacking compression for integers.
As always, we have more details in our blog post. Enjoy your reading!
What's Changed
- Refactor order by compilation by @andyfengHKU in #1971
- Implement #1959 by @mewim in #1974
- Remove currIdx from DataChunkState by @andyfengHKU in #1966
- Add snap amazon and twitter for copy tests by @ray6080 in #1969
- Reader function refactor by @acquamarin in #1979
- Skip reading null data if the property is known to have no nulls by @benjaminwinger in #1945
- Add CREATE RDF GRAPH ddl statement by @andyfengHKU in #1984
- Reader compilation refactor by @andyfengHKU in #1985
- Fix aggregate rel bug by @andyfengHKU in #1987
- Expression Constant Folding by @andyfengHKU in #1989
- configure CI workflow for Ubuntu 20.04 LTS by @russell-liu in #1991
- Move CopyRel to query processing pipeline by @ray6080 in #1990
- Change copy morsel size back to DEFAULT_VECTOR_CAPACITY by @acquamarin in #1992
- share build cache when building rust API and the example project by @russell-liu in #1995
- Log errors for serializer by @mewim in #1998
- Fix issue 1915 by @ray6080 in #2001
- Implement csv reader by @acquamarin in #1988
- Fix test logging level by @acquamarin in #1997
- Support defining multiple FROM TO in CREATE REL TABLE GROUP by @andyfengHKU in #2009
- Transaction statement by @andyfengHKU in #2012
- Remove blocks counting in copying rel pipeline by @ray6080 in #2013
- Add arrow feature to rust example so that it can re-use the test build in CI by @benjaminwinger in #2002
- Split catalog table schemas by @andyfengHKU in #2020
- Add test cases match3/4 and new feature "--" by @AEsir777 in #2016
- Add INT8 type by @Ashleyhx in #1994
- Update README.md by @semihsalihoglu-uw in #2024
- Rel group query by @andyfengHKU in #2023
- Add turtle file type, refactor copy compilation by @andyfengHKU in #2026
- Arrow schema fixes by @benjaminwinger in #2019
- Fix cmake configuration by @yixinglu in #2022
- Implement Commenting on Tables by @Riolku in #2011
- Implement copy node rdf by @acquamarin in #2028
- finish range literal [*] [2] [..] [2..] [..2] by @AEsir777 in #2027
- Add int8 supported functions by @Ashleyhx in #2030
- Refactor exception.h by @Riolku in #2006
- Remove
types_include.h
by @Riolku in #2008 - Fix create node on empty table by @acquamarin in #2034
- Splitup value.h by @Riolku in #2025
- Don't self-initialize schema comments by @benjaminwinger in #2038
- Upgrade ANTLR4 runtime by @Riolku in #2040
- Add include guards to all headers by @Riolku in #2042
- Add win32 access violation handler to buffer manager by @benjaminwinger in #2035
- Transaction test rewrite by @hououou in #2029
- Implement copy rdf rel table by @acquamarin in #2033
- Solve issue-1983 by @andyfengHKU in #2044
- Refactor copy compilation by @andyfengHKU in #2043
- Replace CopyDescription with CSVReaderConfig for storage classes. by @andyfengHKU in #2046
- Rename logical operator dir by @ray6080 in #2047
- allow node bound to include 0 [*0..4] by @AEsir777 in #2041
- Support Parquet filetype on COPY TO by @rfdavid in #1893
- Refactor reader functors by @andyfengHKU in #2049
- Rewrite transaction test by @hououou in #2053
- Refactor node table to take in columnID instead of propertyID by @ray6080 in #2054
- Use a different schema for each RecordBatch in python getAsArrow by @benjaminwinger in #2055
- Restructure storage directory by @ray6080 in #2056
- Expose rel label for Python and Node.js API by @mewim in #2060
- add unsigned int types by @Ashleyhx in #2045
- Load from csv by @andyfengHKU in #2052
- range() function by @AEsir777 in #2058
- Allow dev version of Python wheels to be built and published by @mewim in #2066
- Rename logicalScanNode to logicalScanInternalID by @andyfengHKU in #2067
- Add abstraction of TableData by @ray6080 in #2072
- Rework table statistics ser/deser by @ray6080 in #2073
- Move metadataDAHInfo from catalog to statistics by @ray6080 in #2074
- Reorganize stat files by @ray6080 in #2075
- Copy FROM brackets have optional whitespace by @OTooleMichael in #2078
- Abstract Compression interface and initial integer packing by @benjaminwinger in #2004
- Rdf predicate iri processing by @andyfengHKU in #2071
- Implement parquet-reader by @acquamarin in #2076
- Remove arrow from npy reader by @acquamarin in #2086
- Add direct scan on parquet by @andyfengHKU in #2088
- Bitpack VAR_LIST offset data by @benjaminwinger in #2084
- Fix bounds check in integer bitpacking by @benjaminwinger in #2091
- Fix warning by @acquamarin in #2094
- Fix list reader bug by @acquamarin in #2090
- Add direct scan npy, add where predicate in LOAD FROM by @andyfengHKU in #2093
- Refactor ALTER statement by @andyfengHKU in #2097
- miniparquet: Define HAVE_STDINT_H by @Riolku in #2101
- finish list_product by @AEsir777 in #2069
- Add DDL to rel group by @andyfengHKU in #2103
- Fix add-prop by @acquamarin in #2100
- Int8 and Int16 bitpacking by @benjaminwinger in #2085
- Clean up arrow code in node column chunk and copy node by @ray6080 in #2104
- Fix copy to csv by @acquamarin in #2108
- Fix update bugs by @ray6080 in #2098
- reader: implement parallel CSV reading by @Riolku in #2070
- reader: remove moved constant from Parallel CSV by @Riolku in #2110
- copy: use string_view to avoid a copy by @Riolku in #2112
- add numerical types for APIs by @Ashleyhx in #2105
- add castString in functions by @AEsir777 in #2092
- upload benchmark copy query times to benchmark server by @russell-liu in #2099
- Change slot capacity by @ray6080 in #2111
- Add overflow check for casting by @acquamarin in #2114
- reader/csv: Use binary mode on Windows by @Riolku in #2121
- Explicit exports by @benjaminwinger in #2118
- Fix map creation by @ray6080 in #2113
- Recursive join pro...
V0.0.8
This is a minor release with bug fixes and some optimizations:
- Fixed a major bug in COPY on large datasets.
- Added TopK optimization.
- Added WITH CTE rewriting.
- Updated Rust doc on converting query result to arrow arrays.
- Fixed the size allocated for boolean values to match the size of the bit-packed data.
Please see our release post here.
What's Changed
- Add demo db tests in docs by @ray6080 in #1944
- merge skip limit by @andyfengHKU in #1948
- Add top K optimizer by @andyfengHKU in #1949
- remove query normalizer by @andyfengHKU in #1952
- Include functions from arrow feature in docs.rs rust docs by @benjaminwinger in #1951
- Rename keys in agg hash table by @andyfengHKU in #1957
- Add with clause projection list rewriter by @andyfengHKU in #1956
- Fix COPY; rework Reader op by @ray6080 in #1963
- Implement top-k optimization by @acquamarin in #1960
- Fix asan by @andyfengHKU in #1967
- Fix bool column chunk buffer size by @benjaminwinger in #1953
- Bump version to 0.0.8 by @mewim in #1968
- Upgrade GitHub CI runner for Docker by @mewim in #1970
Full Changelog: v0.0.7...v0.0.8
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
V0.0.6
This release is a bug fix release addressing the following issues
- Segmentation fault while loading overflow data type with parallelism
- Read out of bound for LIST vector null buffer
- Missing data type switch in C, JAVA, Rust & Python
What's Changed
- Resolve npm publish issue due to symlink by @mewim in #1799
- Added deployment workflow for rust API by @benjaminwinger in #1800
- Table star by @andyfengHKU in #1803
- Add UDF support to c++ API by @acquamarin in #1808
- Tck match1 by @andyfengHKU in #1806
- Fix lock issue in string node copy by @ray6080 in #1811
- Add new data type support for C, Java, Python API by @mewim in #1814
- Implemented support for RecursiveRel in the Rust API by @benjaminwinger in #1813
- Add vectorized UDF support by @acquamarin in #1817
- Fix create with serial by @acquamarin in #1812
- Add self-loop-edge by @andyfengHKU in #1815
- Add tck match2 by @andyfengHKU in #1818
- Fix overflow cursor concurrency bugs by @ray6080 in #1820
- Fix struct datavector resizing by @acquamarin in #1822
- Fix multi-label recursive join bug by @andyfengHKU in #1823
- Remove openssl linking for tests by @benjaminwinger in #1819
- Bump version number to 0.0.6 by @mewim in #1824
Full Changelog: v0.0.5...v0.0.6
V0.0.5
Welcome to Kùzu 0.0.5! In this release, we've introduced following improvements and features:
- Supported named path. Users can now assign a named variable to a connected graph pattern.
- Supported filters of relationships in recursive patterns. Users can now put predicates on the relationships that will be "traversed/joined" in recursive patterns.
- Supported all shortest paths semantic with key word
ALL SHORTEST
. - Introduced
Call
as a reading clause with a set of predefined procedures that can be used to query the database schemas. - Supported
Call
for modifying database configurations. - Added new data type
BLOB
to store arbitrary binary objects. - Added Rust and Java client APIs.
- Introduced improvements to testing framework.
Please see our blog post for more details. Enjoy your reading!
What's Changed
- Fix typo in WALReplayer::replayRelTableRecord by @gaurav8297 in #1636
- Node.js build for Windows by @mewim in #1638
- Remove glob cmake file by @ray6080 in #1639
- Refactor copy node by @acquamarin in #1590
- Convert parser/ tests to end to end tests by @rfdavid in #1635
- Fix Node.js CI build on Windows by @mewim in #1641
- Add libcurl to runners by @mewim in #1642
- Sanitize escape char in Transformer::transformSymbolicName by @gaurav8297 in #1645
- Test Framework: Support CSV to Parquet conversion by @rfdavid in #1611
- Implement query processing for map dataType by @acquamarin in #1648
- Add all shortest path by @andyfengHKU in #1652
- Change page-list-group-size to 20 by @acquamarin in #1653
- Scan and parse test files only once by @rfdavid in #1654
- Append FTableScan before RecursiveJoin by @andyfengHKU in #1658
- Move CSV->Parquet conversion to test register instance by @rfdavid in #1656
- Rework copy transaction to not rely on file renaming by @ray6080 in #1649
- Rework hash join build mapper by @andyfengHKU in #1659
- Implement map functions by @acquamarin in #1660
- Run tests in parallel by @rfdavid in #1657
- Add const keyword to C API params by @mewim in #1661
- LDBC testing: add working interactive complex tests by @aziz-mu in #1664
- Change recursive rel physical type by @andyfengHKU in #1674
- Implement union functions by @acquamarin in #1675
- Deprecated test code cleanup by @rfdavid in #1677
- Convert copy tests to end to end tests by @rfdavid in #1647
- Scalar compile func by @andyfengHKU in #1679
- Added CHECK_ORDER and PARALLELISM 1 to IC12 Test by @rfdavid in #1682
- remove overflow buffer utils by @andyfengHKU in #1684
- Remove copyNonNullDataWithSameTypeIntoPos by @andyfengHKU in #1687
- remove copyValue from ValueVectorUtils by @andyfengHKU in #1688
- remove ValueVectorUtils by @andyfengHKU in #1689
- Implement blob dataType by @acquamarin in #1690
- Add windows precompiled binary workflow and shared library to pre-compiled binary archive by @benjaminwinger in #1686
- Install rust for CI runners by @mewim in #1695
- Implement loader for blob type by @acquamarin in #1693
- Scan path property by @andyfengHKU in #1696
- Fix issue-1678 by @andyfengHKU in #1698
- Rust API by @benjaminwinger in #1685
- Fix string pk copy by @ray6080 in #1702
- Read NPY chunk at a time by @aziz-mu in #1697
- Implement struct/list comparison operations by @acquamarin in #1707
- Use semi mask when scanning properties for path by @andyfengHKU in #1709
- Extension of PyQueryResult by @lehners in #1700
- Java-API implementation by @KasunaStony in #1650
- Implement call statement by @acquamarin in #1717
- Testing framework adjustments by @rfdavid in #1719
- Recursive join key equality comparison by @andyfengHKU in #1721
- Fix issue 1704 by @ray6080 in #1723
- Rust API on Windows by @benjaminwinger in #1703
- Fix use of PreparedStatement in releases by @benjaminwinger in #1725
- Recursive join rel filter by @andyfengHKU in #1726
- Implement table function framework by @acquamarin in #1731
- Testing framework: Throw an exception when -CASE is missing by @rfdavid in #1735
- Make table functions as part of the reading clause by @acquamarin in #1737
- Testing framework: add ${count} to REPEAT by @rfdavid in #1733
- fix in query call op bug by @acquamarin in #1744
- Add expression visitor by @andyfengHKU in #1746
- Refactor explain pipeline by @acquamarin in #1747
- Bind group by agg rework by @andyfengHKU in #1748
- Refactor scan rel table by @andyfengHKU in #1749
- Profile pipeline refactor by @acquamarin in #1751
- Restructure Java API by @mewim in #1757
- Add Java test for Windows CI by @mewim in #1758
- Add windows-specific build instructions to readme by @benjaminwinger in #1742
- Rust packaging by @benjaminwinger in #1741
- Struct-field-name printing by @acquamarin in #1759
- Issue 1727 by @andyfengHKU in #1761
- Unified CMake Build by @benjaminwinger in #1752
- Current setting/version function by @acquamarin in #1760
- Set CMAKE_BUILD_PARALLEL_LEVEL so that NUM_THREADS gets passed to the arrow build in CI by @benjaminwinger in #1764
- fix concat-null by @acquamarin in #1765
- Node rel evaluator by @andyfengHKU in #1743
- Update Node and Rel in the Rust API to use the new interface by @benjaminwinger in #1766
- Add struct support for Java API by @mewim in #1768
- solve issue-1732 by @acquamarin in #1769
- Fix issue 1738 by @acquamarin in #1767
- Example Fix and CI by @benjaminwinger in #1753
- Add bindings for SERIAL and BLOB for client APIs by @mewim in #1773
- Named path by @andyfengHKU in #1771
- Store raw blob data in value by @acquamarin in #1774
- Fix benchmark-ci by @acquamarin in #1772
- Skip building kuzu when building docs for docs-rs by @benjaminwinger in #1775
- Fix issue-1720 by @acquamarin in #1776
- Add API bindings for recursive rel type by @mewim in #1777
- Change IC12 query by @acquamarin in #1778
- Support for Serial and Blob types in the Rust API by @benjaminwinger in #1779
- Fix issue-1665 by @acquamarin in #1781
- Rework npy copy to integrate with query processor pipeline by @aziz-mu in #1734
- Move rust builds into separate job by @benjaminwinger in #1780
- Add Java CI build for Windows, Linux, and Mac ARM by @mewim in #1782
- Update self-hosted runner version by @mewim in #1783
- Fix arch labeling issue on Mac CI for Java build by @mewim in #1784
- Fix issue-1643 by @acquamarin in #1786
- Fix kuzu version function by @acquamarin in #1787
- all shortest path lower bound fix by @acquamarin in #1788
- Fix issue-1673 by @andyfengHKU in #1790
- add path properties function by @andyfengHKU in https://github.com/kuzudb/...
V0.0.4
Welcome to Kùzu 0.0.4! In this release, we've introduced following improvements and features:
- Improved the performance of ingesting both node and rel tables for quite a bit.
- Supported undirected relationships in queries.
- Supported shortest path queries, and also improved variable-length joins.
- Added new data types, including SERIAL and STRUCT.
- Made Kùzu available on windows platforms.
- Added C and nodejs client APIs.
Please see our blog post for more details. Enjoy your reading!
What's Changed
- Update README.md by @andyfengHKU in #1454
- Fix set number threads by @acquamarin in #1456
- Fix fedora compiling by @ray6080 in #1458
- Add struct data type front end by @acquamarin in #1457
- fixing issue 1404 by @semihsalihoglu-uw in #1460
- Upgrade CI runner version for benchmark docker by @mewim in #1463
- Specify column types in csv reader and remove arrow status return value from functions by @ray6080 in #1461
- Fix compilation on fedora 38 by @ray6080 in #1467
- Rework hashjoin by @andyfengHKU in #1465
- Rework arrow array copy in node table copier by @ray6080 in #1469
- Fix issue 1466 by @ray6080 in #1470
- Shortest path planning by @andyfengHKU in #1472
- Shortest Path changes by @anuchak in #1468
- Fix macOS compilation issue by @mewim in #1473
- Add C API bindings by @mewim in #1471
- Rework node copy task by @ray6080 in #1475
- Add struct literal support by @acquamarin in #1462
- Update README.md python code example by @wenhoujx in #1478
- Skip first pass read of parquet data by @ray6080 in #1480
- Struct planning by @andyfengHKU in #1479
- Fix incorrect cast int16 func name by @ray6080 in #1484
- Add c, cpp examples by @andyfengHKU in #1485
- Add int16 int32 support to get_as_arrow. by @wenhoujx in #1483
- Remove PropertyNameDataType by @ray6080 in #1488
- Fix process fork support for Python API by @mewim in #1487
- Encapsulate templatizing of
HashIndexBuilder
insidePrimaryKeyIndexBuilder
by @ray6080 in #1491 - Add loader and storage support for struct by @acquamarin in #1490
- SSP pipeline by @andyfengHKU in #1489
- Add SERIAL as node table primary key by @ray6080 in #1493
- Add sink before recursive join by @andyfengHKU in #1500
- Update cost model for shortest path by @andyfengHKU in #1499
- Node.js API prototyping by @ynoza in #1501
- Add sideway information passing for shortest path extend by @andyfengHKU in #1502
- Vlq rework by @andyfengHKU in #1505
- List valueVector refactor by @acquamarin in #1503
- Issue 951 by @andyfengHKU in #1508
- Fix bug in var length queries sorting by @anuchak in #1509
- Fix struct pack bug by @acquamarin in #1515
- Add aggreate key dependency optimizer by @andyfengHKU in #1517
- Auto-parse end2end tests by @rfdavid in #1507
- Add support to struct of list by @acquamarin in #1518
- Regex String Functions by @gaurav8297 in #1516
- Remove large rel list by @ray6080 in #1520
- Convert e2_read_list test to the new framework by @rfdavid in #1523
- Support null values in list by @acquamarin in #1524
- Add document for PyG remote backend by @mewim in #1525
- Add STRUCT binding for Python API by @mewim in #1527
- Converted order_by and copy tests to the new format by @rfdavid in #1526
- Add struct binding for C API by @mewim in #1531
- Add null to struct fields by @acquamarin in #1533
- Allow passing a test as an argument to e2e_read_test by @rfdavid in #1535
- Add list_sum and list_sort functions by @gaurav8297 in #1529
- Undirected query logical changes by @aziz-mu in #1528
- Rework column scan and lookup functions by @ray6080 in #1539
- List field name to idx cache by @acquamarin in #1534
- Rework column write function by @ray6080 in #1540
- Recursive path by @andyfengHKU in #1538
- More list functions by @gaurav8297 in #1543
- Undirected query for single label Nodes/Rels by @aziz-mu in #1542
- Move scans of tableID into node/relIDs out of Column by @ray6080 in #1550
- Separate null bits from data in columns by @ray6080 in #1545
- Recursive join no path tracking optimizer by @andyfengHKU in #1547
- Physical type by @acquamarin in #1549
- Undirected query for multi-labelled and unlabelled nodes. by @aziz-mu in #1552
- Add recursive rel logical type by @andyfengHKU in #1553
- Fix issue 1546 by @andyfengHKU in #1554
- Add visitor pattern to bound statement by @andyfengHKU in #1557
- Push recursive path length into operator by @andyfengHKU in #1555
- Testing framework v2 by @rfdavid in #1548
- Refactor commit/rollback/checkpoint interface by @ray6080 in #1558
- Refactor extend direction & rel data direction by @andyfengHKU in #1560
- Rework ResultSetDescriptor by @andyfengHKU in #1561
- Change hash index concurrent build by @ray6080 in #1564
- Check statement read only through visitor pattern by @andyfengHKU in #1559
- Enable multiple test cases inside one test file by @rfdavid in #1567
- add LSQB queries as test by @aziz-mu in #1566
- Add loader support for struct of list/struct/string by @acquamarin in #1563
- Use cross-platform glob library by @benjaminwinger in #1562
- Convert binder error tests to end to end tests by @rfdavid in #1569
- Fix parser error by @acquamarin in #1572
- Add Windows Support by @benjaminwinger in #1573
- Fix win ci by @andyfengHKU in #1576
- Fix issue-1575 by @andyfengHKU in #1579
- Convert demo db tests to e2e tests by @rfdavid in #1574
- Track edge ID in recursive join by @andyfengHKU in #1565
- Convert lsqb cpp tests to end to end tests by @rfdavid in #1580
- Fix return functor windows compatibility by @andyfengHKU in #1586
- NPY loader fix by @acquamarin in #1571
- Decrease Windows CI runner thread by @mewim in #1591
- Convert e2e_exception_test to end to end test by @rfdavid in #1584
- Fix issue-1512 by @andyfengHKU in #1593
- Update Slack links by @mewim in #1594
- Add LDBC interactive short queries to test by @aziz-mu in #1589
- Convert e2e_update_node.cpp to e2e test files by @rfdavid in #1597
- Multi label recursive join by @andyfengHKU in #1581
- Don't always set GENERIC_READ when opening files on windows by @benjaminwinger in #1585
- Use GetFileSizeEX instead of GetFileSize on windows by @benjaminwinger in #1587
- Rename e2e_read_test to e2e_test by @rfdavid in #1599
- Print error details on test failure by @rfdavid in #1598
- Allow writing test queries in multiple lines by @rfdavid in #1602
- Add more test cases from docum...
V0.0.3
We are happy to release Kùzu 0.0.3. This release comes with the following new main features and improvements:
- Kùzu as a Pytorch Geometric (PyG) Remote Backend: You can now train PyG GNNs and other models directly using graphs (and node features) stored on Kùzu. See this Colab notebook for a demonstrative example.
- Data ingestion from multiple files and numpy files.
- Query optimizer improvements.
- New buffer manager.
- INT32, INT16, FLOAT, and FIXED LIST data types (the latter is particularly suitable to store node features in graph ML applications)
- Query timeout mechanism and interrupting queries from CLI.
See our blog post for more details. Enjoy your reading and don't forget to pip install kuzu
!
What's Changed
- Update readme by @andyfengHKU in #1285
- Add internal offset function by @andyfengHKU in #1291
- Decouple group pos between operator and planner by @andyfengHKU in #1290
- Rename config to constants by @ray6080 in #1293
- Unify logger create, get, and drop by @ray6080 in #1294
- Add collect agg function by @acquamarin in #1292
- Add CI and slack badge to README by @ray6080 in #1300
- Fix
getRelPropertyNames
result by @mewim in #1301 - Fix build issue on Arch Linux by @mewim in #1304
- Add Python API binding for prepared statement by @mewim in #1305
- Factorization rewriter by @andyfengHKU in #1307
- Add Fixed-list DataType to System by @acquamarin in #1298
- Arithmetic function framework refactor by @acquamarin in #1312
- Fix #998 by @ray6080 in #1315
- Fix tensor bug by @acquamarin in #1318
- Hash join build projection push down by @andyfengHKU in #1319
- Replace getRawName with toString by @andyfengHKU in #1324
- Simplify mask struct by @ray6080 in #1320
- Implement float(alias: REAL) dataType by @acquamarin in #1321
- Add twitter badge to readme by @ray6080 in #1326
- Sink projection push down by @andyfengHKU in #1325
- Add INT16,INT32 datatype by @acquamarin in #1328
- Fix logo by @mewim in #1330
- Add remove unnecessary join optimizer by @andyfengHKU in #1329
- Fix issue 1323 by @acquamarin in #1331
- Add CLA by @ray6080 in #1334
- Add logical operator visitor by @andyfengHKU in #1333
- Solve format string vulnerability by @acquamarin in #1335
- Remove csv reader by @mewim in #1341
- Fix min/max agg function on string column BUG by @acquamarin in #1342
- Remove jo connection by @andyfengHKU in #1348
- Fix benchmark query by @acquamarin in #1349
- Fix plan deep copy by @andyfengHKU in #1345
- Patch c str api by @andyfengHKU in #1353
- Update slack link by @ray6080 in #1354
- Refactor FT interface by @acquamarin in #1351
- Change databasePath to positional argument by @acquamarin in #1350
- Fix drop node property bug by @acquamarin in #1356
- Fix empty list bug by @acquamarin in #1358
- Flat schema by @andyfengHKU in #1357
- Bump benchmark threads to 10 by @mewim in #1337
- Asp optimizer rework by @andyfengHKU in #1361
- Add support to copy multiple csv files by @acquamarin in #1363
- Multi key asp by @andyfengHKU in #1364
- Separate FileHandle and BufferManagedFileHandle by @ray6080 in #1365
- Add asp for wcoj by @andyfengHKU in #1366
- Multi label asp by @andyfengHKU in #1370
- Sequential read for StringPropertyList by @rfdavid in #1327
- Add glob support to copycsv by @acquamarin in #1376
- Add test coverage report to CI by @acquamarin in #1378
- Add codecov badge by @mewim in #1380
- Fix codecov link & reorder badge by @mewim in #1381
- Add support to copy from multiple parquet files by @acquamarin in #1377
- Multi scans asp by @andyfengHKU in #1375
- Remove bm resize interface by @ray6080 in #1382
- Rework BM to unify the physical memory usage of BM and MM by @ray6080 in #1368
- Factorization aware dp by @andyfengHKU in #1384
- Fix issue 1385 by @andyfengHKU in #1387
- Implement query interruption by @acquamarin in #1389
- Change cypher comment rule by @acquamarin in #1403
- Add query timeout mechanism by @acquamarin in #1395
- Fix ctrl-D by @acquamarin in #1402
- Filter push down by @andyfengHKU in #1397
- Separate WAL page idx lock from page lock in BMFileHandle by @ray6080 in #1398
- Encode plan when inserting to dp table by @andyfengHKU in #1406
- Add min/max agg function support for more types by @acquamarin in #1410
- Refactor index nested loop join planning by @andyfengHKU in #1411
- Copy node tables from npy files by @mewim in #1396
- BM optimistic reads by @ray6080 in #1409
- Fix hash index slot alignment by @ray6080 in #1414
- Cardinality est by @andyfengHKU in #1415
- Add python APIs by @acquamarin in #1423
- Rework asp optimizer by @andyfengHKU in #1417
- Optimize copy node memory usage by @ray6080 in #1425
- Populate by column by @acquamarin in #1424
- Fix copy invalid filepath by @acquamarin in #1426
- Add limit to TENSOR size by @acquamarin in #1427
- Numerical downcast by @andyfengHKU in #1429
- Fix issue 1428, 1408 by @andyfengHKU in #1430
- Remote backend for PyG by @mewim in #1418
- Add storage version info by @acquamarin in #1436
- change copy from npy keyword by @andyfengHKU in #1438
- Add python bindings for new types by @mewim in #1440
- Fix bm file handle remove pages in eviction queue by @ray6080 in #1431
- Change npy copy grammar by @andyfengHKU in #1441
- Fix copy options case by @acquamarin in #1447
- Fix pyg
getAllEdgesForTorchGeometric
by @ray6080 in #1442 - Fix hash vector creation in hj by @andyfengHKU in #1449
- Get version from CMakeLists for Python build by @mewim in #1450
- Remove
spdlog/fmt
from header by @mewim in #1451 - On demand import for PyG by @mewim in #1452
- Remove unused np by @mewim in #1453
New Contributors
Full Changelog: v0.0.2...v0.0.3
Version 0.0.2 Release
This release introduces several major changes:
- Support data import from parquet and arrow IPC files.
- Support data export to PyG, NetworkX, Pandas, Arrow.
- Support UTF-8 strings and regular expression matching for strings.
- Support ALTER TABLE DDL and SET/DROP for node/rel properties.
- Support multi/un -labelled queries.
- New expressions/functions. (CASE expression, string regular expression match ~=, etc.)
We've written a blog post to explain our major new features in this release.
In case you missed it, Semih also had written two nice blog posts to explain the goals and vision of Kùzu and how we implemented factorization inside Kùzu.
Enjoy your reading and don't forget to pip install kuzu
!
All Changes
- Fix issue 948 by @aziz-mu in #1018
- Change default logging level by @acquamarin in #1036
- Fix issue 938 by @aziz-mu in #1035
- Add logging level option by @acquamarin in #1038
- Change default bm size for testing to 64MB by @acquamarin in #1039
- Remove parser unit test and unstr related operators by @andyfengHKU in #1043
- Fix issue 967 by @aziz-mu in #1040
- Add setValue and getValue for ValueVector by @ray6080 in #1045
- Rework srcDstTableID by @acquamarin in #1041
- UTF-8 string by @anuchak in #1037
- Remove unstructured properties by @acquamarin in #1051
- Plan delete rel by @andyfengHKU in #1050
- Refactor implicit cast and logical scan of unstructured properties by @andyfengHKU in #1052
- Fix multi-line query slow pasting issue by @aziz-mu in #1048
- Enable multi-thread testing by @andyfengHKU in #1060
- Fix issue 968 by @aziz-mu in #1054
- Move from bazel to cmake by @ray6080 in #1064
- Update build guideline in README by @ray6080 in #1067
- Multi labeled node scan by @andyfengHKU in #1057
- Scan multi-labeled node properties by @andyfengHKU in #1069
- Remove excessive logging, remove json from buffer manager by @andyfengHKU in #1071
- Add
getNextTupleInternal
by @andyfengHKU in #1072 - Scan rel ID blindly by @andyfengHKU in #1074
- Add init global state interface by @andyfengHKU in #1077
- Fix failing tests by @acquamarin in #1081
- Fix memory sanitizer issues by @acquamarin in #1084
- Integrate pytest with ctest by @acquamarin in #1090
- Unlabeled rel in match patterns by @andyfengHKU in #1087
- Fix issue 606 by @andyfengHKU in #1091
- Delete rels without transaction inside storage by @acquamarin in #1075
- Init local state by @andyfengHKU in #1093
- Fix CLI utf8 issue by @aziz-mu in #1080
- Remove
getPositionOfCurrIdx
by @ray6080 in #1095 - Unlabeled rel property by @andyfengHKU in #1096
- Fix issue 1047 by @aziz-mu in #1094
- Add installation guideline and simple examples to README by @ray6080 in #1102
- Multi labeled graph pattern by @andyfengHKU in #1104
- Extend property reading by @andyfengHKU in #1108
- Rework logical operator type by @andyfengHKU in #1097
- Rework physical operator type by @andyfengHKU in #1110
- Unlabeled query by @andyfengHKU in #1114
- Refactoring filtering and flatten operator by @ray6080 in #1118
- Move schema to operator by @andyfengHKU in #1119
- Fix issue 941 by @aziz-mu in #1120
- Remove mapper context by @andyfengHKU in #1121
- Wrap pybind11 API and and Fix #1106 by @mewim in #1124
- Numeric ops by @aziz-mu in #1123
- Add transaction to rel deletions by @acquamarin in #1126
- Delete rels from many-one, one-one tables by @acquamarin in #1132
- Source sink op interface by @andyfengHKU in #1127
- Case expression by @andyfengHKU in #1125
- Plan rel property update by @andyfengHKU in #1136
- Simplify initListReadingState by @ray6080 in #1138
- Rework table scans by @ray6080 in #1141
- Enable large lists scan to copy multi-pages sequentially by @ray6080 in #1143
- Fix issue 1092 by @ray6080 in #1144
- Avoid setting result expression state at runtime by @andyfengHKU in #1137
- Sink subset of expressions by @andyfengHKU in #1148
- Fix issue 1033 by @anuchak in #1145
- Refactor property variable expression by @andyfengHKU in #1152
- Update rel property by @acquamarin in #1149
- Refactor benchmark script by @mewim in #1151
- Clean up unstructured related code and force using property_id_t by @ray6080 in #1147
- Arrow node copier by @printfCalvin in #1146
- Fix issue 1129 by @anuchak in #1153
- Build Arrow from source by @mewim in #1157
- Add dependencies to CI workflow by @mewim in #1158
- Fix issue 1100 by @anuchak in #1155
- Node map agg by @andyfengHKU in #1160
- Fix for CMake linking issue on Ubuntu 18.04 by @mewim in #1164
- Return node and rel data type by @andyfengHKU in #1168
- Delete node/rel properties without transactions by @acquamarin in #1169
- Fix issue 1161 by @andyfengHKU in #1171
- Fix issue 1073 by @andyfengHKU in #1174
- Add Slack workspace to README by @mewim in #1176
- Add transaction to update rel by @acquamarin in #1159
- Add transaction to drop property statement by @acquamarin in #1175
- Arrow rel copier by @weipang142857 in #1154
- Update rel properties stored as columns by @acquamarin in #1177
- Fix issue 1112 by @ray6080 in #1179
- Fix arrow path search issue for RHEL-based Linux distros by @mewim in #1180
- Separate compilation of source and tests by @ray6080 in #1181
- Compile CI test in parallel by @ray6080 in #1183
- Value literal by @andyfengHKU in #1178
- Add address sanitizer to CI pipeline with
LD_PRELOAD
by @mewim in #1185 - Alter table add column by @acquamarin in #1186
- Add Python binding for NODE & REL types; output query results to NetworkX by @mewim in #1192
- Export query result (fixed sized values only) to arrow by @ray6080 in #1193
- Add transaction to add property statement by @acquamarin in #1194
- Alter table rename by @acquamarin in #1198
- Export query result to arrow: string data type by @ray6080 in #1199
- Add ldbc snb IS and IC benchmark queries by @anuchak in #1197
- Split expression binding to multiple cpp files by @andyfengHKU in #1210
- Implment
get_as_torch_geometric
by @mewim in #1200 - Add clang-format python script by @ray6080 in #1211
- Fix tests for add property by @acquamarin in #1214
- Rework RelID from global to local by @acquamarin in #1207
- Add scripts to generate cypher parser by @andyfengHKU in #1215
- Return unconverted properties for PyG converter by @mewim in #1213
- Temp patch Arrow to remove hash ch...