Avatar for the GrafeoDB user
GrafeoDB
grafeo
BlogDocsChangelog

Performance History

Latest Results

deps(rust): bump the rust-dependencies group across 1 directory with 17 updates Bumps the rust-dependencies group with 16 updates in the / directory: | Package | From | To | | --- | --- | --- | | [hashbrown](https://github.com/rust-lang/hashbrown) | `0.17.0` | `0.17.1` | | [smallvec](https://github.com/servo/rust-smallvec) | `1.15.1` | `1.15.2` | | [bumpalo](https://github.com/fitzgen/bumpalo) | `3.20.2` | `3.20.3` | | [dashmap](https://github.com/xacrimon/dashmap) | `6.1.0` | `6.2.1` | | [zeroize](https://github.com/RustCrypto/utils) | `1.8.2` | `1.9.0` | | [arrow-schema](https://github.com/apache/arrow-rs) | `58.2.0` | `59.0.0` | | [arrow-array](https://github.com/apache/arrow-rs) | `58.2.0` | `59.0.0` | | [arrow-ipc](https://github.com/apache/arrow-rs) | `58.2.0` | `59.0.0` | | [tokio](https://github.com/tokio-rs/tokio) | `1.52.1` | `1.52.3` | | [tikv-jemallocator](https://github.com/tikv/jemallocator) | `0.6.1` | `0.7.0` | | [mimalloc](https://github.com/purpleprotocol/mimalloc_rust) | `0.1.50` | `0.1.52` | | [serde_json](https://github.com/serde-rs/json) | `1.0.149` | `1.0.150` | | [parquet](https://github.com/apache/arrow-rs) | `58.2.0` | `59.0.0` | | [clap_complete](https://github.com/clap-rs/clap) | `4.6.3` | `4.6.5` | | [napi](https://github.com/napi-rs/napi-rs) | `3.8.6` | `3.9.2` | | [napi-derive](https://github.com/napi-rs/napi-rs) | `3.5.5` | `3.5.6` | Updates `hashbrown` from 0.17.0 to 0.17.1 - [Release notes](https://github.com/rust-lang/hashbrown/releases) - [Changelog](https://github.com/rust-lang/hashbrown/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/hashbrown/compare/v0.17.0...v0.17.1) Updates `smallvec` from 1.15.1 to 1.15.2 - [Release notes](https://github.com/servo/rust-smallvec/releases) - [Commits](https://github.com/servo/rust-smallvec/compare/v1.15.1...v1.15.2) Updates `bumpalo` from 3.20.2 to 3.20.3 - [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md) - [Commits](https://github.com/fitzgen/bumpalo/compare/v3.20.2...v3.20.3) Updates `dashmap` from 6.1.0 to 6.2.1 - [Release notes](https://github.com/xacrimon/dashmap/releases) - [Commits](https://github.com/xacrimon/dashmap/compare/v6.1.0...v6.2.1) Updates `zeroize` from 1.8.2 to 1.9.0 - [Commits](https://github.com/RustCrypto/utils/compare/zeroize-v1.8.2...zeroize-v1.9.0) Updates `arrow-schema` from 58.2.0 to 59.0.0 - [Release notes](https://github.com/apache/arrow-rs/releases) - [Changelog](https://github.com/apache/arrow-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/apache/arrow-rs/compare/58.2.0...59.0.0) Updates `arrow-array` from 58.2.0 to 59.0.0 - [Release notes](https://github.com/apache/arrow-rs/releases) - [Changelog](https://github.com/apache/arrow-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/apache/arrow-rs/compare/58.2.0...59.0.0) Updates `arrow-ipc` from 58.2.0 to 59.0.0 - [Release notes](https://github.com/apache/arrow-rs/releases) - [Changelog](https://github.com/apache/arrow-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/apache/arrow-rs/compare/58.2.0...59.0.0) Updates `tokio` from 1.52.1 to 1.52.3 - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.52.1...tokio-1.52.3) Updates `tikv-jemallocator` from 0.6.1 to 0.7.0 - [Release notes](https://github.com/tikv/jemallocator/releases) - [Changelog](https://github.com/tikv/jemallocator/blob/main/CHANGELOG.md) - [Commits](https://github.com/tikv/jemallocator/compare/0.6.1...0.7.0) Updates `mimalloc` from 0.1.50 to 0.1.52 - [Release notes](https://github.com/purpleprotocol/mimalloc_rust/releases) - [Commits](https://github.com/purpleprotocol/mimalloc_rust/compare/v0.1.50...v0.1.52) Updates `serde_json` from 1.0.149 to 1.0.150 - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.149...v1.0.150) Updates `parquet` from 58.2.0 to 59.0.0 - [Release notes](https://github.com/apache/arrow-rs/releases) - [Changelog](https://github.com/apache/arrow-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/apache/arrow-rs/compare/58.2.0...59.0.0) Updates `clap_complete` from 4.6.3 to 4.6.5 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.6.3...clap_complete-v4.6.5) Updates `napi` from 3.8.6 to 3.9.2 - [Release notes](https://github.com/napi-rs/napi-rs/releases) - [Commits](https://github.com/napi-rs/napi-rs/compare/napi-v3.8.6...napi-v3.9.2) Updates `napi-derive` from 3.5.5 to 3.5.6 - [Release notes](https://github.com/napi-rs/napi-rs/releases) - [Commits](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.5.5...napi-derive-v3.5.6) Updates `napi-build` from 2.3.1 to 2.3.2 - [Release notes](https://github.com/napi-rs/napi-rs/releases) - [Commits](https://github.com/napi-rs/napi-rs/compare/napi-build-v2.3.1...napi-build-v2.3.2) --- updated-dependencies: - dependency-name: hashbrown dependency-version: 0.17.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: smallvec dependency-version: 1.15.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: bumpalo dependency-version: 3.20.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: dashmap dependency-version: 6.2.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: rust-dependencies - dependency-name: zeroize dependency-version: 1.9.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: rust-dependencies - dependency-name: arrow-schema dependency-version: 59.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: rust-dependencies - dependency-name: arrow-array dependency-version: 59.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: rust-dependencies - dependency-name: arrow-ipc dependency-version: 59.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: rust-dependencies - dependency-name: tokio dependency-version: 1.52.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: tikv-jemallocator dependency-version: 0.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: rust-dependencies - dependency-name: mimalloc dependency-version: 0.1.52 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: serde_json dependency-version: 1.0.150 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: parquet dependency-version: 59.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: rust-dependencies - dependency-name: clap_complete dependency-version: 4.6.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: napi dependency-version: 3.9.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: rust-dependencies - dependency-name: napi-derive dependency-version: 3.5.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: napi-build dependency-version: 2.3.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot/cargo/rust-dependencies-ff17ce92f5
19 hours ago
fix(query): fail closed on duplicate result columns; render function args in column names A query that produced two columns with the same name built a QueryResult whose schema could not represent itself, and name-addressed bindings then dropped data silently (the PyO3 to_list dict via last-write-wins; whole-row loss in bindings that key rows into duplicate-key-rejecting structures). The common trigger needed no duplicate intent: distinct bare calls id(s), id(t), id(r) all collapsed to the header "id(...)" because the column-naming helper discarded a function call's arguments. The engine stores rows positionally and losslessly, so the loss was realized only at name-addressed consumers. - M1: enforce a fail-closed result-column uniqueness invariant in the QueryResult column-bearing constructors (new/with_types/from_rows) and at streaming open (ResultStream/OwnedResultStream), so the guarantee holds on both the eager and the streaming result paths and across every language leg. These constructors now return Result. - M2: render a FunctionCall's arguments (and Binary/Unary/List/Parameter/ Labels/Type/Id) in expression_to_string so distinct bare expressions get distinct, openCypher-faithful names; aggregate headers are produced by a separate path and are unchanged. - SPARQL: reject duplicate projection aliases at parse time (SPARQL 1.1 sec 18.2.4.4); the degenerate `SELECT ?s ?s` is caught by the engine invariant. Full visible-scope validation remains future work. Adds an oracle suite (duplicate_column_disambiguation.rs) plus unit tests in the engine and the SPARQL parser, and a CHANGELOG entry. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
teipsum:fix-duplicate-column-names
4 days ago
fix(sparql): project OneOrMore path branches to endpoints for transitive closure SPARQL `path+` (OneOrMore) returned no transitive closure for variable endpoints: it yielded only the direct neighbours, with the true multi-hop endpoint replaced by the first intermediate hop and duplicate rows that DISTINCT failed to collapse. The sibling operators `/ | ^ * ?` were all correct. `translate_one_or_more_path` pushed each fixed-depth branch raw into the Union, whereas `translate_zero_or_more_path` and `translate_zero_or_one_path` wrap every depth branch in `project_path_endpoints` first. Without that projection the depth-N branches keep their per-hop intermediate columns, the Union output schema is seeded from the narrow depth-1 branch, and Distinct copies the leading (intermediate) columns into the endpoint slot while keying on each chunk's own width. Wrap each depth branch in `project_path_endpoints`, exactly as the sibling operators do. No reflexive 0-hop branch is added: `path+` excludes the zero-length path (SPARQL 1.1 sec 9.1). Add result-level closure oracles to property_paths.gtest over a->b->c->d->e plus c->x (open-ended `?s :p+ ?o`, bound-subject, a cycle, nested `^(:p+)` and `(:p+)/:q`, and `?` `/` `^` regression guards), and strengthen two existing count-only `+` tests to assert values rather than only cardinality. The bounded MAX_DEPTH=50 expansion is unchanged (also fixes a stale test comment). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
teipsum:fix-path-one-or-more
4 days ago
fix(query): widen UNION output schema to the union of all branches UNION built its result schema from the first branch alone, so a variable or column that appears only in a later branch was dropped instead of present with an unbound value. On the SPARQL leg this surfaced three ways: a projection / ORDER BY / aggregate above the UNION that referenced such a variable raised GRAFEO-X001 ("Variable not found") at plan time; a narrower later branch indexed against the wider first-branch width raised GRAFEO-V001 ("Column not found") at run time; and, most dangerously, SELECT * returned a later branch's values under the first branch's variable names with no error (the Wildcard projection skips the by-name guard). The Cypher/GQL leg silently truncated a UNION whose later branch is wider, dropping the extra columns. Per SPARQL 1.1 the result variable domain is the union of the branches' in-scope variables (sec 18.2.1) and the result is the multiset union of the partial solution mappings (sec 18.5): a variable unbound in a branch is unbound there, never removed. RDF/SPARQL planner (rdf/mod.rs plan_union): advertise the union of every branch's variable set and wrap each branch in a projection that null-pads it to the unified width. The padding is a genuine per-chunk-width copy rather than a merely-wider declared schema, because DISTINCT and ORDER BY copy at each chunk's own column count against a fixed-width builder. RdfUnionOperator now debug-asserts the uniform width, and its stale "UNION of INSERT" docstring is refreshed. The single-branch fast path is preserved. LPG (Cypher/GQL) planner (lpg/join.rs plan_union): Cypher/GQL UNION aligns columns by position with names from the first branch, so widen to the maximum branch arity and null-pad the trailing columns of narrower branches. The two legs reconcile differently (by variable name for SPARQL, positionally for Cypher/GQL) and fail differently, so each keeps its own regression oracle. Column-name compatibility validation is left out of scope. Tests: the existing UNION spec cases were all same-arity, so heterogeneous coverage is added -- the X001 and V001 repros, a SELECT-* anti-corruption guard asserting the widened schema and null padding, DISTINCT-over-unbound and ORDER-BY-nulls-last, a white-box planner test, and positive-correctness Cypher oracles for the wider-first and wider-second branch cases. Co-Authored-By: Claude <noreply@anthropic.com>
teipsum:fix-union-output-arity
5 days ago

Latest Branches

CodSpeed Performance Gauge
0%
deps(rust): bump the rust-dependencies group across 1 directory with 17 updates#376
20 hours ago
e9ba549
dependabot/cargo/rust-dependencies-ff17ce92f5
CodSpeed Performance Gauge
0%
4 days ago
e4705b2
teipsum:fix-duplicate-column-names
CodSpeed Performance Gauge
0%
© 2026 CodSpeed Technology
Home Terms Privacy Docs