Skip to content

BE-537: Remove old filter API backend and wire up HashQL in the API#8827

Draft
indietyp wants to merge 25 commits into
bm/be-513-hashql-size-estimation-aggregate-cardinality-is-wrong-forfrom
bm/be-537-hashql-remove-old-backend-wire-up-hashql-in-the-api
Draft

BE-537: Remove old filter API backend and wire up HashQL in the API#8827
indietyp wants to merge 25 commits into
bm/be-513-hashql-size-estimation-aggregate-cardinality-is-wrong-forfrom
bm/be-537-hashql-remove-old-backend-wire-up-hashql-in-the-api

Conversation

@indietyp
Copy link
Copy Markdown
Member

@indietyp indietyp commented Jun 4, 2026

🌟 What is the purpose of this PR?

TODO: this PR is huge, and will be split into multiple smaller PRs (13 planned)

🔗 Related links

  • ...

🚫 Blocked by

  • ...

🔍 What does this change?

  • ...

Pre-Merge Checklist 🚀

🚢 Has this modified a publishable library?

This PR:

  • does not modify any publishable blocks or libraries, or modifications do not need publishing
  • modifies an npm-publishable library and I have added a changeset file(s)
  • modifies a Cargo-publishable library and I have amended the version
  • modifies a Cargo-publishable library, but it is not yet ready to publish
  • modifies a block that will need publishing via GitHub action once merged
  • I am unsure / need advice

📜 Does this require a change to the docs?

The changes in this PR:

  • are internal and do not require a docs change
  • are in a state where docs changes are not yet required but will be
  • require changes to docs which are made as part of this PR
  • require changes to docs which are not made in this PR
    • Provide more detail here
  • I am unsure / need advice

🕸️ Does this require a change to the Turbo Graph?

The changes in this PR:

  • do not affect the execution graph
  • affected the execution graph, and the turbo.json's have been updated to reflect this
  • I am unsure / need advice

⚠️ Known issues

🐾 Next steps

🛡 What tests cover this?

❓ How to test this?

  1. Checkout the branch / view the deployment
  2. Try X
  3. Confirm that Y

📹 Demo

Copilot AI review requested due to automatic review settings June 4, 2026 16:33
@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 4, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hash Ready Ready Preview, Comment Jun 4, 2026 4:46pm
petrinaut Ready Ready Preview, Comment Jun 4, 2026 4:46pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
hashdotdesign-tokens Ignored Ignored Preview Jun 4, 2026 4:46pm

@cursor
Copy link
Copy Markdown

cursor Bot commented Jun 4, 2026

PR Summary

High Risk
Entity query API contract changes (HashQL strings no longer accepted on entity endpoints) and new Postgres-backed query execution on a critical path warrant careful rollout and client updates.

Overview
This PR replaces the old entity-route HashQL filter compiler with a first-class POST /hashql endpoint that runs the full pipeline (parse through MIR lowering/placement, Postgres codegen, and Orchestrator execution against the graph Postgres pool).

The graph server now builds a shared CompilerContext (bounded HeapPool / ScratchPool, LocalPoolHandle for !Send compilation) from new CLI/env settings HASH_GRAPH_COMPILER_*, and injects both that context and a dedicated PostgresStorePool into the REST router.

Entity query/subgraph/count handlers are moved under entity/query/ and no longer compile HashQL in-request (per-request heap priming, Interactive on those routes, and the filter vs query untagged request shape are removed). QueryEntitiesRequest now deserializes a required filter plus the existing pagination/sorting options; subgraph requests are simplified to Paths / ResolveDepths variants with validation tests.

The large entity_query_request module (including GraphReadCompiler) is deleted; compiletest drops the eval/graph/read/entity suite and aligns the shared pipeline with hashql_mir::pass::lower / place. hashql-mir is wired into hash-graph-api; PostgresStore gains AsRef<Client> for orchestration; empty Temporal host strings are treated as disabled.

Reviewed by Cursor Bugbot for commit cd47de2. Bugbot is set up for automated code reviews on this repo. Configure here.

@indietyp indietyp marked this pull request as draft June 4, 2026 16:34
Copy link
Copy Markdown
Member Author

indietyp commented Jun 4, 2026

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit cd47de2. Configure here.

let thread_count =
exec_pool_size.unwrap_or_else(|| available_parallelism().map_or(4, NonZero::get));

let pool = LocalPoolHandle::new(thread_count);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zero exec pool panics

High Severity

PoolSize treats 0 as a valid compiler_exec_pool_size, and CompilerContext::new passes it straight to LocalPoolHandle::new, which panics when the pool size is less than one. A HASH_GRAPH_COMPILER_EXEC_POOL_SIZE=0 (or CLI 0) prevents the graph server from starting.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit cd47de2. Configure here.

Comment thread libs/@local/graph/api/src/rest/entity/query/request.rs
@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 4, 2026

Codecov Report

❌ Patch coverage is 83.47509% with 136 lines in your changes missing coverage. Please review.
✅ Project coverage is 59.50%. Comparing base (8c80b95) to head (cd47de2).

Files with missing lines Patch % Lines
libs/@local/hashql/mir/src/pass/mod.rs 0.00% 43 Missing ⚠️
libs/@local/hashql/diagnostics/src/issues.rs 32.00% 17 Missing ⚠️
libs/@local/hashql/compiletest/src/pipeline.rs 0.00% 10 Missing ⚠️
libs/@local/hashql/mir/src/interpret/error.rs 90.00% 10 Missing ⚠️
libs/@local/hashql/mir/src/interpret/value/str.rs 50.00% 10 Missing ⚠️
libs/@local/hashql/core/src/heap/pool.rs 93.28% 9 Missing ⚠️
.../hashql/mir/src/pass/execution/island/graph/mod.rs 0.00% 7 Missing ⚠️
libs/@local/hashql/core/src/graph/linked.rs 0.00% 6 Missing ⚠️
libs/@local/hashql/mir/src/pass/execution/mod.rs 0.00% 6 Missing ⚠️
libs/@local/hashql/diagnostics/src/status.rs 75.00% 4 Missing ⚠️
... and 7 more
Additional details and impacted files
@@                                           Coverage Diff                                           @@
##           bm/be-513-hashql-size-estimation-aggregate-cardinality-is-wrong-for    #8827      +/-   ##
=======================================================================================================
+ Coverage                                                                59.15%   59.50%   +0.34%     
=======================================================================================================
  Files                                                                     1343     1338       -5     
  Lines                                                                   129988   130596     +608     
  Branches                                                                  5873     5871       -2     
=======================================================================================================
+ Hits                                                                     76894    77706     +812     
+ Misses                                                                   52188    51985     -203     
+ Partials                                                                   906      905       -1     
Flag Coverage Δ
apps.hash-ai-worker-ts 1.41% <ø> (ø)
apps.hash-api 0.00% <ø> (ø)
blockprotocol.type-system 40.84% <ø> (ø)
local.harpc-client 51.24% <ø> (ø)
local.hash-backend-utils 2.81% <ø> (ø)
local.hash-graph-sdk 9.63% <ø> (ø)
local.hash-isomorphic-utils 0.00% <ø> (ø)
rust.antsi 0.00% <ø> (ø)
rust.error-stack 90.87% <ø> (ø)
rust.harpc-codec 84.70% <ø> (ø)
rust.harpc-net 96.21% <ø> (+0.03%) ⬆️
rust.harpc-tower 67.03% <ø> (ø)
rust.harpc-types 0.00% <ø> (ø)
rust.harpc-wire-protocol 92.23% <ø> (ø)
rust.hash-graph-authorization 62.34% <ø> (ø)
rust.hash-graph-postgres-store 26.74% <0.00%> (-0.01%) ⬇️
rust.hash-graph-store 37.76% <ø> (ø)
rust.hash-graph-temporal-versioning 47.95% <ø> (ø)
rust.hash-graph-types 0.00% <ø> (ø)
rust.hash-graph-validation 83.45% <ø> (ø)
rust.hashql-ast 87.23% <ø> (ø)
rust.hashql-compiletest 28.41% <0.00%> (+0.15%) ⬆️
rust.hashql-core 79.61% <88.63%> (+0.32%) ⬆️
rust.hashql-diagnostics 72.31% <48.78%> (-0.22%) ⬇️
rust.hashql-hir 89.06% <ø> (ø)
rust.hashql-mir 88.05% <85.25%> (+0.99%) ⬆️
rust.hashql-syntax-jexpr 94.04% <100.00%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR continues the migration away from the legacy “filter API” backend by wiring up HashQL end-to-end: parsing J-Expr, compiling through MIR, generating PostgreSQL queries, and executing them via the orchestrator, with updated diagnostics, allocators, and test coverage across the HashQL toolchain and graph API.

Changes:

  • Adds a new REST /hashql endpoint in hash-graph-api backed by a shared compiler/execution context and a pinned local execution pool for !Send futures.
  • Refactors HashQL eval/orchestrator and MIR passes (lowering + placement) and updates diagnostics/span infrastructure to support the new pipeline.
  • Updates tests/benches and removes legacy eval graph-read entity compiletest coverage in favor of new MIR interpret/reify UI tests.

Reviewed changes

Copilot reviewed 226 out of 227 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
tests/graph/http/test.sh Runs new HashQL httpyac suite
tests/graph/benches/manual_queries/entity_queries/mod.rs Updates entity query request API usage
libs/@local/hashql/syntax-jexpr/src/test.rs Adapts diagnostic rendering generics
libs/@local/hashql/syntax-jexpr/src/parser/string/error.rs Updates diagnostics severity typing
libs/@local/hashql/syntax-jexpr/src/parser/state.rs Adds inline hints for conversions
libs/@local/hashql/syntax-jexpr/src/parser/object/visit.rs Updates Diagnostic type parameters
libs/@local/hashql/syntax-jexpr/src/parser/error.rs Updates parser diagnostic severity plumbing
libs/@local/hashql/syntax-jexpr/src/parser/complex/mod.rs Updates Diagnostic type parameters
libs/@local/hashql/syntax-jexpr/src/parser/array/visit.rs Updates Diagnostic type parameters
libs/@local/hashql/syntax-jexpr/src/parser/array/error.rs Updates array diagnostics + inlines
libs/@local/hashql/syntax-jexpr/src/lexer/syntax_kind_set.rs Adds inline hints + default
libs/@local/hashql/syntax-jexpr/src/lexer/mod.rs Renames/threads lexer diagnostic type
libs/@local/hashql/syntax-jexpr/src/lexer/error.rs Updates lexer diagnostics severity typing
libs/@local/hashql/syntax-jexpr/src/error.rs Generic severity for JExpr diagnostics
libs/@local/hashql/mir/tests/ui/reify/ctor-cached-closure.stdout New regression output for ctor caching
libs/@local/hashql/mir/tests/ui/reify/ctor-cached-closure.jsonc New regression input for ctor caching
libs/@local/hashql/mir/tests/ui/interpret/access-struct-through-opaque.stdout New interpreter output for opaque delegation
libs/@local/hashql/mir/tests/ui/interpret/access-struct-through-opaque.jsonc New interpreter input for opaque delegation
libs/@local/hashql/mir/tests/ui/interpret/.spec.toml New UI suite spec for mir/interpret
libs/@local/hashql/mir/src/reify/transform.rs Threads allocator params into Reifier impl
libs/@local/hashql/mir/src/reify/terminator.rs Threads allocator params into Reifier impl
libs/@local/hashql/mir/src/reify/rvalue.rs Fixes ctor caching to preserve calling convention
libs/@local/hashql/mir/src/reify/mod.rs Adds scratch allocator + allocator generics
libs/@local/hashql/mir/src/reify/error.rs Exposes reify diagnostics publicly
libs/@local/hashql/mir/src/reify/current.rs Adds inline hints for ID conversions
libs/@local/hashql/mir/src/reify/atom.rs Threads allocator params into Reifier impl
libs/@local/hashql/mir/src/pass/transform/ssa_repair/mod.rs Adds Default inline hint
libs/@local/hashql/mir/src/pass/transform/inst_simplify/mod.rs Adds Default inline hint
libs/@local/hashql/mir/src/pass/transform/forward_substitution.rs Adds Default inline hint
libs/@local/hashql/mir/src/pass/transform/dse/mod.rs Adds Default inline hint
libs/@local/hashql/mir/src/pass/transform/copy_propagation/mod.rs Adds Default inline hint
libs/@local/hashql/mir/src/pass/transform/cfg_simplify/mod.rs Adds Default inline hint
libs/@local/hashql/mir/src/pass/transform/canonicalization.rs Adds Default inline hint
libs/@local/hashql/mir/src/pass/mod.rs Introduces lower and place pipeline APIs
libs/@local/hashql/mir/src/pass/execution/traversal/mod.rs Adds inline hint for set conversions
libs/@local/hashql/mir/src/pass/execution/terminator_placement/mod.rs Adds Default inline hint
libs/@local/hashql/mir/src/pass/execution/splitting/mod.rs Adds Default inline hint
libs/@local/hashql/mir/src/pass/execution/mod.rs Adds Debug impl for residual output
libs/@local/hashql/mir/src/pass/execution/island/mod.rs Adds inline hints + Default
libs/@local/hashql/mir/src/pass/execution/island/graph/mod.rs Adds Debug impl for IslandGraph
libs/@local/hashql/mir/src/pass/execution/cost/mod.rs Adds inline hint for conversions
libs/@local/hashql/mir/src/pass/analysis/data_dependency/mod.rs Adds Default inline hint
libs/@local/hashql/mir/src/interpret/value/str.rs Adds detach/clone support + docs
libs/@local/hashql/mir/src/interpret/value/ptr.rs Adds docs + inline hints
libs/@local/hashql/mir/src/interpret/value/num.rs Adds docs + inline hints
libs/@local/hashql/mir/src/interpret/tests.rs Adds safety comments around unchecked struct
libs/@local/hashql/mir/src/interpret/suspension/temporal.rs Adds inline hints for conversions
libs/@local/hashql/mir/src/interpret/runtime.rs Adds Default inline hint
libs/@local/hashql/mir/src/interpret/locals.rs Clarifies unsafe struct construction invariants
libs/@local/hashql/mir/src/interpret/inputs.rs Adds Default inline hint
libs/@local/hashql/mir/src/error.rs Adds Reify to MIR diagnostic hierarchy
libs/@local/hashql/mir/src/body/operand.rs Adds inline hints for conversions
libs/@local/hashql/hir/src/map.rs Adds Default inline hint
libs/@local/hashql/hir/src/lower/normalization.rs Adds Default inline hint
libs/@local/hashql/hir/src/context.rs Adds Default inline hints
libs/@local/hashql/eval/tests/ui/graph/read/entity/unsupported-type-constructor.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/unsupported-type-constructor.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/unsupported-nested-graph-read.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/unsupported-nested-graph-read.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/unsupported-closure.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/unsupported-closure.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/type-assertion-in-comparison.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/type-assertion-in-comparison.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/top-type-assertion.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/top-type-assertion.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/top-level-variable.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/top-level-variable.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/scalar-property-filter.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/scalar-property-filter.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/nested-let-bindings.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/nested-let-bindings.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/nested-binary-operation.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/nested-binary-operation.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/logical-or-and.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/logical-or-and.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/logical-and-or.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/logical-and-or.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/let-propagation.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/let-propagation.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/let-expression.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/let-expression.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/invalid-vertex-query.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/invalid-vertex-query.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/invalid-index-access-error.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/invalid-index-access-error.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/invalid-field-access-error.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/invalid-field-access-error.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/input-parameter.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/input-parameter.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/input-index-access.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/input-index-access.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/input-field-access.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/input-field-access.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/if-filter.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/if-filter.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/if-filter-expr.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/if-filter-expr.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-tuple.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-tuple.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-struct.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-struct.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-struct-entry.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-struct-entry.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-list.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-list.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-dict-value.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-dict-value.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-dict-key.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-in-dict-key.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-access-tuple.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-access-tuple.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-access-struct.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/field-access-struct.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/equality-comparison.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/equality-comparison.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/constructor-call-none.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/constructor-call-none.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/computed-path-indexing-error.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/computed-path-indexing-error.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/complex-object-error.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/complex-object-error.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/call-identity.stderr Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/call-identity.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/boolean-literal.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/boolean-literal.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/arithmetic-comparisons-or.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/arithmetic-comparisons-or.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/arithmetic-comparisons-and.stdout Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/arithmetic-comparisons-and.jsonc Removes legacy eval/graph UI coverage
libs/@local/hashql/eval/tests/ui/graph/read/entity/.spec.toml Removes legacy suite spec
libs/@local/hashql/eval/tests/orchestrator/output.rs Generalizes render over allocator
libs/@local/hashql/eval/tests/orchestrator/main.rs Adjusts lowering/execution API usage
libs/@local/hashql/eval/tests/orchestrator/execution.rs Splits codegen vs execution contexts
libs/@local/hashql/eval/src/postgres/projections.rs Adds inline hint
libs/@local/hashql/eval/src/postgres/parameters.rs Adds inline hint
libs/@local/hashql/eval/src/postgres/mod.rs Renames EvalContext to CodeGenerationContext
libs/@local/hashql/eval/src/postgres/filter/tests.rs Updates filter tests to new contexts/interning
libs/@local/hashql/eval/src/postgres/filter/mod.rs Updates compiler context type
libs/@local/hashql/eval/src/orchestrator/partial.rs Uses eval Interner symbols for structs
libs/@local/hashql/eval/src/orchestrator/mod.rs New orchestrator diagnostics + run_in plumbing
libs/@local/hashql/eval/src/orchestrator/events.rs Adds Default inline hint
libs/@local/hashql/eval/src/orchestrator/codec/decode/mod.rs Uses eval Interner type
libs/@local/hashql/eval/src/lib.rs Removes old graph feature, adds intern module
libs/@local/hashql/eval/src/intern.rs New eval interner preserving identity
libs/@local/hashql/eval/src/graph/read/sink.rs Removes old graph-read compiler code
libs/@local/hashql/eval/src/graph/read/convert.rs Removes old graph-read conversion code
libs/@local/hashql/eval/src/graph/mod.rs Removes legacy graph module
libs/@local/hashql/eval/src/graph/error.rs Removes legacy graph diagnostics
libs/@local/hashql/eval/src/error.rs Adds orchestrator diagnostics category
libs/@local/hashql/eval/src/context.rs Splits codegen vs execution context types
libs/@local/hashql/eval/Cargo.toml Removes graph feature + dependency reshuffle
libs/@local/hashql/diagnostics/src/source/span.rs Adds inline hints
libs/@local/hashql/diagnostics/src/lib.rs Re-exports IntoStatus
libs/@local/hashql/diagnostics/src/issues.rs Adds span mapping + serde impls
libs/@local/hashql/core/src/value/opaque.rs Removes legacy core Opaque value type
libs/@local/hashql/core/src/type/visit.rs Adds Default inline hint
libs/@local/hashql/core/src/type/recursion.rs Adds Default inline hint
libs/@local/hashql/core/src/type/inference/solver/tests.rs Adds new regression test for opaque variance
libs/@local/hashql/core/src/type/inference/solver/mod.rs Adds Default inline hint
libs/@local/hashql/core/src/type/inference/solver/graph.rs Adds Default inline hint
libs/@local/hashql/core/src/span/table.rs Changes ancestors API to iterator + LocalSpanId
libs/@local/hashql/core/src/span/mod.rs Adds LocalSpanId newtype + serde safety attrs
libs/@local/hashql/core/src/pretty/formatter.rs Adds Default inline hint
libs/@local/hashql/core/src/module/namespace.rs Adds inline hint
libs/@local/hashql/core/src/lib.rs Feature flag adjustments
libs/@local/hashql/core/src/id/bit_vec/mod.rs Adds inline hints for domain_size
libs/@local/hashql/core/src/heap/scratch.rs Inline/must_use ordering + Default
libs/@local/hashql/core/src/heap/mod.rs Exposes HeapPool + Default
libs/@local/hashql/core/src/graph/linked.rs Adds Debug impl + inline accessors
libs/@local/hashql/core/src/graph/algorithms/dominators/frontier.rs Adds inline hint
libs/@local/hashql/core/src/collections/pool.rs Adds inline hint
libs/@local/hashql/core/Cargo.toml Removes rpds from core deps
libs/@local/hashql/compiletest/src/suite/mod.rs Removes eval graph suite, adds mir/interpret suite
libs/@local/hashql/compiletest/src/suite/mir_reify.rs Threads Scratch through mir reify
libs/@local/hashql/compiletest/src/suite/mir_pass_transform_pre_inline.rs Adjusts mir_reify return tuple
libs/@local/hashql/compiletest/src/suite/mir_pass_transform_cfg_simplify.rs Reuses Scratch from mir_reify
libs/@local/hashql/compiletest/src/suite/mir_pass_analysis_data_dependency.rs Adjusts mir_reify return tuple
libs/@local/hashql/compiletest/src/suite/mir_interpret.rs New suite executing MIR interpreter
libs/@local/hashql/compiletest/src/suite/eval_postgres.rs Updates to CodeGenerationContext + interner
libs/@local/hashql/compiletest/src/suite/eval_graph_read_entity.rs Removes legacy eval graph suite
libs/@local/hashql/compiletest/src/pipeline.rs Uses new MIR pass::lower/place APIs
libs/@local/hashql/compiletest/Cargo.toml Drops hashql-eval graph feature flag
libs/@local/hashql/ast/src/lowering/sanitizer.rs Adds Default inline hint
libs/@local/hashql/ast/src/lowering/node_renumberer.rs Adds Default inline hint
libs/@local/graph/postgres-store/src/store/postgres/mod.rs Implements AsRef for PostgresStore
libs/@local/graph/api/src/rest/mod.rs Wires HashQL routes + compiler/postgres deps + Json-Compat header
libs/@local/graph/api/src/rest/hashql/mod.rs New HashQL REST endpoint + pinned execution
libs/@local/graph/api/src/rest/hashql/compile.rs New HashQL compilation pipeline orchestration
libs/@local/graph/api/src/rest/hashql/value.rs New owned JSON-friendly value representation
libs/@local/graph/api/src/rest/hashql/error.rs New HashQL diagnostics → HTTP responses
libs/@local/graph/api/src/rest/entity/query/filter.rs Empty filter module placeholder
libs/@local/graph/api/src/lib.rs Enables allocator_api feature
libs/@local/graph/api/Cargo.toml Adds hashql-mir dep; removes hashql-eval graph feature
Cargo.toml Adds workspace deps for sqruff-lib crates
Cargo.lock Updates deps for removed/added crates
apps/hash-graph/src/subcommand/server.rs Adds compiler pool configuration + wiring

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +169 to +173
result.unwrap_or_else(|_| {
Json(serde_json::json!({"fatal": "internal error: query execution failed"}))
.into_response()
.into()
})
Comment on lines +109 to +112
/// A pool size that can be either a concrete count or unbounded.
///
/// Parses positive integers as a bounded size and `-1` as unbounded.
#[derive(Debug, Copy, Clone)]
Comment on lines +43 to +49
List(Vec<Self>),
/// An ordered dictionary.
Dict(BTreeMap<Self, Self>),
}

impl<'heap, A: Allocator + Clone> From<Value<'heap, A>> for OwnedValue {
fn from(value: Value<'heap, A>) -> Self {
Comment on lines +116 to +121
OwnedValue::List(owned_values) => serializer.collect_seq(owned_values.iter().map(Self)),
OwnedValue::Dict(btree_map) => serializer.collect_map(
btree_map
.iter()
.map(|(key, value)| (Self(key), Self(value))),
),
Comment on lines +66 to +74
// Lower the AST
let Success {
value: types,
advisories,
} = hashql_ast::lowering::lower(heap.intern_symbol("main"), &mut ast, &env, &modules)
.map_category(|category| {
HashQlDiagnosticCategory::Ast(AstDiagnosticCategory::Lowering(category))
})
.with_diagnostics(advisories)?;
@@ -0,0 +1 @@

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Jun 4, 2026

Merging this PR will improve performance by 38.67%

⚡ 1 improved benchmark
✅ 79 untouched benchmarks

Performance Changes

Benchmark BASE HEAD Efficiency
pattern_match_constant 209.2 ns 150.8 ns +38.67%

Tip

Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.


Comparing bm/be-537-hashql-remove-old-backend-wire-up-hashql-in-the-api (cd47de2) with bm/be-513-hashql-size-estimation-aggregate-cardinality-is-wrong-for (8c80b95)

Open in CodSpeed

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

Benchmark results

@rust/hash-graph-benches – Integrations

policy_resolution_large

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2002 $$27.9 \mathrm{ms} \pm 227 \mathrm{μs}\left({\color{gray}-0.086 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$3.43 \mathrm{ms} \pm 20.7 \mathrm{μs}\left({\color{gray}-4.441 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 1001 $$12.5 \mathrm{ms} \pm 112 \mathrm{μs}\left({\color{gray}-4.870 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 3314 $$42.2 \mathrm{ms} \pm 387 \mathrm{μs}\left({\color{gray}-4.610 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$13.8 \mathrm{ms} \pm 108 \mathrm{μs}\left({\color{lightgreen}-10.666 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 1526 $$24.3 \mathrm{ms} \pm 232 \mathrm{μs}\left({\color{gray}-2.693 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 2078 $$28.9 \mathrm{ms} \pm 191 \mathrm{μs}\left({\color{gray}0.433 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.80 \mathrm{ms} \pm 30.9 \mathrm{μs}\left({\color{gray}-1.208 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 1033 $$13.7 \mathrm{ms} \pm 126 \mathrm{μs}\left({\color{gray}-3.948 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_medium

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 102 $$3.74 \mathrm{ms} \pm 22.3 \mathrm{μs}\left({\color{gray}-1.374 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.95 \mathrm{ms} \pm 18.5 \mathrm{μs}\left({\color{gray}-0.681 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 51 $$3.39 \mathrm{ms} \pm 27.8 \mathrm{μs}\left({\color{gray}1.79 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 269 $$5.15 \mathrm{ms} \pm 33.7 \mathrm{μs}\left({\color{gray}-0.063 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$3.52 \mathrm{ms} \pm 22.8 \mathrm{μs}\left({\color{gray}-0.409 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 107 $$4.10 \mathrm{ms} \pm 21.8 \mathrm{μs}\left({\color{gray}-0.626 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 133 $$4.45 \mathrm{ms} \pm 33.3 \mathrm{μs}\left({\color{gray}0.799 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.44 \mathrm{ms} \pm 21.3 \mathrm{μs}\left({\color{gray}0.005 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 63 $$4.08 \mathrm{ms} \pm 25.9 \mathrm{μs}\left({\color{gray}0.753 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_none

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2 $$2.69 \mathrm{ms} \pm 19.9 \mathrm{μs}\left({\color{gray}3.90 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.50 \mathrm{ms} \pm 17.1 \mathrm{μs}\left({\color{gray}-0.521 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 1 $$2.65 \mathrm{ms} \pm 17.5 \mathrm{μs}\left({\color{gray}2.56 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 8 $$2.94 \mathrm{ms} \pm 16.5 \mathrm{μs}\left({\color{gray}3.70 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.72 \mathrm{ms} \pm 15.9 \mathrm{μs}\left({\color{gray}3.21 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 3 $$2.91 \mathrm{ms} \pm 17.1 \mathrm{μs}\left({\color{gray}3.01 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_small

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 52 $$3.04 \mathrm{ms} \pm 18.8 \mathrm{μs}\left({\color{gray}-2.018 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.71 \mathrm{ms} \pm 12.9 \mathrm{μs}\left({\color{gray}-2.052 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 25 $$2.97 \mathrm{ms} \pm 20.2 \mathrm{μs}\left({\color{gray}-2.211 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 94 $$3.43 \mathrm{ms} \pm 22.8 \mathrm{μs}\left({\color{gray}-0.649 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$2.95 \mathrm{ms} \pm 17.6 \mathrm{μs}\left({\color{gray}-1.233 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 26 $$3.29 \mathrm{ms} \pm 20.6 \mathrm{μs}\left({\color{gray}-0.756 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 66 $$3.34 \mathrm{ms} \pm 22.4 \mathrm{μs}\left({\color{gray}-0.297 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.94 \mathrm{ms} \pm 20.7 \mathrm{μs}\left({\color{gray}-2.371 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 29 $$3.31 \mathrm{ms} \pm 20.2 \mathrm{μs}\left({\color{gray}-1.779 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_complete

Function Value Mean Flame graphs
entity_by_id;one_depth 1 entities $$54.4 \mathrm{ms} \pm 384 \mathrm{μs}\left({\color{gray}-2.656 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 10 entities $$45.7 \mathrm{ms} \pm 252 \mathrm{μs}\left({\color{gray}-3.460 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 25 entities $$49.9 \mathrm{ms} \pm 444 \mathrm{μs}\left({\color{gray}-3.476 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 5 entities $$45.7 \mathrm{ms} \pm 427 \mathrm{μs}\left({\color{gray}-1.178 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 50 entities $$62.6 \mathrm{ms} \pm 511 \mathrm{μs}\left({\color{lightgreen}-5.390 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 1 entities $$60.9 \mathrm{ms} \pm 315 \mathrm{μs}\left({\color{lightgreen}-6.405 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 10 entities $$56.2 \mathrm{ms} \pm 439 \mathrm{μs}\left({\color{gray}-3.241 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 25 entities $$97.0 \mathrm{ms} \pm 552 \mathrm{μs}\left({\color{lightgreen}-8.006 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 5 entities $$63.1 \mathrm{ms} \pm 4.51 \mathrm{ms}\left({\color{red}31.8 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 50 entities $$293 \mathrm{ms} \pm 917 \mathrm{μs}\left({\color{gray}-2.293 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 1 entities $$19.2 \mathrm{ms} \pm 118 \mathrm{μs}\left({\color{lightgreen}-5.333 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 10 entities $$19.8 \mathrm{ms} \pm 127 \mathrm{μs}\left({\color{gray}-4.288 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 25 entities $$20.2 \mathrm{ms} \pm 141 \mathrm{μs}\left({\color{gray}-4.723 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 5 entities $$19.1 \mathrm{ms} \pm 130 \mathrm{μs}\left({\color{lightgreen}-5.181 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 50 entities $$24.8 \mathrm{ms} \pm 145 \mathrm{μs}\left({\color{gray}-4.159 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_linkless

Function Value Mean Flame graphs
entity_by_id 1 entities $$19.3 \mathrm{ms} \pm 121 \mathrm{μs}\left({\color{gray}-4.419 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10 entities $$19.3 \mathrm{ms} \pm 139 \mathrm{μs}\left({\color{lightgreen}-5.834 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 100 entities $$19.2 \mathrm{ms} \pm 101 \mathrm{μs}\left({\color{lightgreen}-5.771 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 1000 entities $$20.1 \mathrm{ms} \pm 143 \mathrm{μs}\left({\color{gray}-4.348 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10000 entities $$26.8 \mathrm{ms} \pm 249 \mathrm{μs}\left({\color{gray}-2.041 \mathrm{\%}}\right) $$ Flame Graph

representative_read_entity

Function Value Mean Flame graphs
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/block/v/1 $$34.6 \mathrm{ms} \pm 469 \mathrm{μs}\left({\color{gray}-0.000 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/book/v/1 $$34.5 \mathrm{ms} \pm 297 \mathrm{μs}\left({\color{gray}1.63 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/building/v/1 $$33.4 \mathrm{ms} \pm 318 \mathrm{μs}\left({\color{gray}-4.420 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/organization/v/1 $$34.2 \mathrm{ms} \pm 291 \mathrm{μs}\left({\color{gray}1.31 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/page/v/2 $$34.5 \mathrm{ms} \pm 295 \mathrm{μs}\left({\color{gray}1.96 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/person/v/1 $$34.2 \mathrm{ms} \pm 315 \mathrm{μs}\left({\color{gray}-1.858 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/playlist/v/1 $$32.8 \mathrm{ms} \pm 307 \mathrm{μs}\left({\color{gray}-2.730 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/song/v/1 $$34.8 \mathrm{ms} \pm 300 \mathrm{μs}\left({\color{gray}0.946 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/uk-address/v/1 $$34.4 \mathrm{ms} \pm 296 \mathrm{μs}\left({\color{gray}-0.371 \mathrm{\%}}\right) $$ Flame Graph

representative_read_entity_type

Function Value Mean Flame graphs
get_entity_type_by_id Account ID: bf5a9ef5-dc3b-43cf-a291-6210c0321eba $$8.60 \mathrm{ms} \pm 41.7 \mathrm{μs}\left({\color{gray}-0.117 \mathrm{\%}}\right) $$ Flame Graph

representative_read_multiple_entities

Function Value Mean Flame graphs
entity_by_property traversal_paths=0 0 $$92.8 \mathrm{ms} \pm 599 \mathrm{μs}\left({\color{gray}1.19 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$148 \mathrm{ms} \pm 608 \mathrm{μs}\left({\color{gray}-2.856 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false $$99.1 \mathrm{ms} \pm 527 \mathrm{μs}\left({\color{gray}-0.643 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$110 \mathrm{ms} \pm 590 \mathrm{μs}\left({\color{gray}-2.290 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$118 \mathrm{ms} \pm 688 \mathrm{μs}\left({\color{gray}-0.559 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$127 \mathrm{ms} \pm 685 \mathrm{μs}\left({\color{gray}-1.100 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=0 0 $$103 \mathrm{ms} \pm 538 \mathrm{μs}\left({\color{gray}-3.829 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$133 \mathrm{ms} \pm 622 \mathrm{μs}\left({\color{gray}-0.315 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false $$111 \mathrm{ms} \pm 716 \mathrm{μs}\left({\color{gray}-2.652 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$119 \mathrm{ms} \pm 630 \mathrm{μs}\left({\color{lightgreen}-5.178 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$121 \mathrm{ms} \pm 575 \mathrm{μs}\left({\color{gray}-3.005 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$122 \mathrm{ms} \pm 747 \mathrm{μs}\left({\color{gray}-1.347 \mathrm{\%}}\right) $$

scenarios

Function Value Mean Flame graphs
full_test query-limited $$180 \mathrm{ms} \pm 1.22 \mathrm{ms}\left({\color{gray}-1.051 \mathrm{\%}}\right) $$ Flame Graph
full_test query-unlimited $$188 \mathrm{ms} \pm 1.13 \mathrm{ms}\left({\color{gray}-2.100 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-limited $$41.1 \mathrm{ms} \pm 284 \mathrm{μs}\left({\color{gray}-0.659 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-unlimited $$567 \mathrm{ms} \pm 1.27 \mathrm{ms}\left({\color{gray}2.86 \mathrm{\%}}\right) $$ Flame Graph

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps > hash* Affects HASH (a `hash-*` app) area/apps > hash-graph area/apps area/deps Relates to third-party dependencies (area) area/libs Relates to first-party libraries/crates/packages (area) area/tests New or updated tests type/eng > backend Owned by the @backend team

Development

Successfully merging this pull request may close these issues.

2 participants