Skip to content

BE-773: Drop the nil-UUID sentinel from the created-by filter - #9281

Open
TimDiekmann wants to merge 4 commits into
t/be-772-require-the-actor-when-building-policycomponentsfrom
t/be-773-drop-the-nil-uuid-sentinel-from-the-created-by-filter
Open

BE-773: Drop the nil-UUID sentinel from the created-by filter#9281
TimDiekmann wants to merge 4 commits into
t/be-772-require-the-actor-when-building-policycomponentsfrom
t/be-773-drop-the-nil-uuid-sentinel-from-the-created-by-filter

Conversation

@TimDiekmann

@TimDiekmann TimDiekmann commented Aug 21, 2026

Copy link
Copy Markdown
Member

🌟 What is the purpose of this PR?

The property-protection filter compiled a request without an actor to a nil-UUID parameter, the last place in the query layer that read the nil UUID as the public actor. The comparison now says what it means: nothing equals an actor that is not there.

🔗 Related links

🚫 Blocked by

🔍 What does this change?

  • FilterExpression::from_cell_filter_expression returns [None] for the actor expression when the request carries no actor, instead of substituting the nil UUID
  • Filter::for_property_filter decides per comparison what a missing actor means: an equality matches no record, an inequality matches every record, and an IN matches no record
  • Covers the actor-present branch, which had no test

Behaviour is unchanged: an empty All transpiles to TRUE and an empty Any to FALSE, which is what uuid != nil and uuid = nil evaluated to for every real row.

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

📜 Does this require a change to the docs?

The changes in this PR:

  • are internal and do not require a docs change

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

The changes in this PR:

  • do not affect the execution graph

⚠️ Known issues

  • The remaining Uuid::nil() uses in entity/table.rs are cursor and fixture values in tests, not actor sentinels, so they stay.

🐾 Next steps

  • BE-758: rate limiting, ahead of the versioned public API surface

🛡 What tests cover this?

  • The property-protection transform cases, whose fixtures now pin the anonymous case as a tautology rather than a nil comparison
  • A new case pinning that a request with an actor compares against that actor's UUID

❓ How to test this?

  1. cargo nextest run --package hash-graph-store --all-features
  2. cargo clippy --all-features --package hash-graph-store --all-targets

@vercel

vercel Bot commented Aug 21, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
hash Ready Ready Preview Aug 25, 2026 4:55pm
petrinaut Ready Ready Preview Aug 25, 2026 4:55pm
petrinaut-docs Ready Ready Preview Aug 25, 2026 4:55pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
hashdotdesign-tokens Ignored Ignored Preview Aug 25, 2026 4:55pm

@vercel
vercel Bot temporarily deployed to Preview – petrinaut-docs August 21, 2026 15:28 Inactive
@vercel
vercel Bot temporarily deployed to Preview – petrinaut August 21, 2026 15:28 Inactive
@github-actions github-actions Bot added area/libs Relates to first-party libraries/crates/packages (area) type/eng > backend Owned by the @backend team labels Aug 21, 2026
@TimDiekmann TimDiekmann self-assigned this Aug 21, 2026
@codecov

codecov Bot commented Aug 21, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 82.60870% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 60.35%. Comparing base (99fcc04) to head (5079507).

Files with missing lines Patch % Lines
libs/@local/graph/store/src/filter/mod.rs 65.21% 7 Missing and 1 partial ⚠️
Additional details and impacted files
@@                                    Coverage Diff                                     @@
##           t/be-772-require-the-actor-when-building-policycomponents    #9281   +/-   ##
==========================================================================================
  Coverage                                                      60.35%   60.35%           
==========================================================================================
  Files                                                           1430     1430           
  Lines                                                         140942   140957   +15     
  Branches                                                        6613     6613           
==========================================================================================
+ Hits                                                           85063    85074   +11     
- Misses                                                         54800    54803    +3     
- Partials                                                        1079     1080    +1     
Flag Coverage Δ
apps.hash-ai-worker-ts 1.99% <ø> (ø)
apps.hash-api 14.68% <ø> (ø)
local.hash-backend-utils 3.27% <ø> (ø)
local.hash-graph-sdk 10.02% <ø> (ø)
local.hash-isomorphic-utils 12.22% <ø> (ø)
rust.hash-graph-api 16.94% <ø> (ø)
rust.hash-graph-authentication 96.09% <ø> (ø)
rust.hash-graph-postgres-store 29.39% <ø> (ø)
rust.hash-graph-store 46.84% <82.60%> (+0.07%) ⬆️
rust.hash-graph-validation 84.71% <ø> (ø)
rust.hashql-compiletest 28.39% <ø> (ø)
rust.hashql-eval 79.82% <ø> (ø)

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.

Comment thread libs/@local/graph/store/src/filter/mod.rs Fixed
@vercel
vercel Bot temporarily deployed to Preview – petrinaut-docs August 21, 2026 20:51 Inactive
@vercel
vercel Bot temporarily deployed to Preview – petrinaut August 21, 2026 20:51 Inactive
@TimDiekmann
TimDiekmann force-pushed the t/be-773-drop-the-nil-uuid-sentinel-from-the-created-by-filter branch from a2eabe9 to 3ecf606 Compare August 21, 2026 20:52
@vercel
vercel Bot temporarily deployed to Preview – petrinaut-docs August 21, 2026 20:53 Inactive
@vercel
vercel Bot temporarily deployed to Preview – petrinaut August 21, 2026 20:53 Inactive
@TimDiekmann
TimDiekmann force-pushed the t/be-773-drop-the-nil-uuid-sentinel-from-the-created-by-filter branch from 3ecf606 to 1ef2737 Compare August 22, 2026 01:15
@vercel
vercel Bot temporarily deployed to Preview – petrinaut-docs August 22, 2026 01:15 Inactive
@vercel
vercel Bot temporarily deployed to Preview – petrinaut August 22, 2026 01:15 Inactive
@TimDiekmann
TimDiekmann requested a review from a team August 22, 2026 11:37
@TimDiekmann

Copy link
Copy Markdown
Member Author

What was the reason for uuid_not_actor? Was it to just have the parameter filled in all types of queries?

Kind-of, yes. It previously generated a filter if the creator of a type was not the current actor, which does not make sense to have for the nil sentinel as no public user was ever able to create something in the DB in the first place. With the Filter now being compiled conditionally, the weird test-helper is not needed anymore.

thehabbos007
thehabbos007 previously approved these changes Aug 25, 2026

@thehabbos007 thehabbos007 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'll look towards the root of the stack now, but this one was short and easy to review,, thanks!

indietyp
indietyp previously approved these changes Aug 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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 $$28.4 \mathrm{ms} \pm 227 \mathrm{μs}\left({\color{gray}-3.179 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$3.64 \mathrm{ms} \pm 23.2 \mathrm{μs}\left({\color{gray}1.39 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 1002 $$13.6 \mathrm{ms} \pm 95.4 \mathrm{μs}\left({\color{gray}-4.501 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 3314 $$45.0 \mathrm{ms} \pm 392 \mathrm{μs}\left({\color{gray}-1.228 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$16.1 \mathrm{ms} \pm 157 \mathrm{μs}\left({\color{gray}3.44 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 1527 $$25.2 \mathrm{ms} \pm 231 \mathrm{μs}\left({\color{gray}-1.630 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 2078 $$28.7 \mathrm{ms} \pm 246 \mathrm{μs}\left({\color{gray}-4.753 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.92 \mathrm{ms} \pm 30.8 \mathrm{μs}\left({\color{gray}0.418 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 1033 $$14.7 \mathrm{ms} \pm 133 \mathrm{μs}\left({\color{gray}-3.034 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_medium

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 102 $$3.84 \mathrm{ms} \pm 21.1 \mathrm{μs}\left({\color{gray}-1.827 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$3.02 \mathrm{ms} \pm 21.4 \mathrm{μs}\left({\color{lightgreen}-7.275 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 52 $$3.38 \mathrm{ms} \pm 23.3 \mathrm{μs}\left({\color{lightgreen}-7.638 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 269 $$5.22 \mathrm{ms} \pm 36.3 \mathrm{μs}\left({\color{gray}-4.357 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$3.62 \mathrm{ms} \pm 30.6 \mathrm{μs}\left({\color{gray}-4.114 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 108 $$4.21 \mathrm{ms} \pm 26.7 \mathrm{μs}\left({\color{gray}-3.176 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 133 $$4.44 \mathrm{ms} \pm 30.6 \mathrm{μs}\left({\color{lightgreen}-6.324 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.46 \mathrm{ms} \pm 19.7 \mathrm{μs}\left({\color{gray}-3.789 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 63 $$4.12 \mathrm{ms} \pm 29.7 \mathrm{μs}\left({\color{lightgreen}-5.927 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_none

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2 $$2.75 \mathrm{ms} \pm 29.7 \mathrm{μs}\left({\color{gray}1.46 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.55 \mathrm{ms} \pm 15.1 \mathrm{μs}\left({\color{gray}-1.895 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 2 $$2.69 \mathrm{ms} \pm 17.6 \mathrm{μs}\left({\color{gray}-0.355 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 8 $$2.98 \mathrm{ms} \pm 23.5 \mathrm{μs}\left({\color{gray}-0.176 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.78 \mathrm{ms} \pm 18.4 \mathrm{μs}\left({\color{gray}0.756 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 3 $$2.99 \mathrm{ms} \pm 19.5 \mathrm{μs}\left({\color{gray}1.58 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_small

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 52 $$3.11 \mathrm{ms} \pm 22.2 \mathrm{μs}\left({\color{gray}-0.869 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.82 \mathrm{ms} \pm 20.0 \mathrm{μs}\left({\color{gray}-0.224 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 26 $$3.03 \mathrm{ms} \pm 17.8 \mathrm{μs}\left({\color{gray}-0.218 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 94 $$3.53 \mathrm{ms} \pm 26.9 \mathrm{μs}\left({\color{gray}-0.550 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$3.04 \mathrm{ms} \pm 18.4 \mathrm{μs}\left({\color{gray}-1.408 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 27 $$3.35 \mathrm{ms} \pm 27.4 \mathrm{μs}\left({\color{gray}-1.261 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 66 $$3.41 \mathrm{ms} \pm 23.8 \mathrm{μs}\left({\color{gray}-4.064 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.01 \mathrm{ms} \pm 24.3 \mathrm{μs}\left({\color{gray}-2.178 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 29 $$3.40 \mathrm{ms} \pm 23.6 \mathrm{μs}\left({\color{gray}-3.128 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_complete

Function Value Mean Flame graphs
entity_by_id;one_depth 1 entities $$43.2 \mathrm{ms} \pm 319 \mathrm{μs}\left({\color{gray}-0.323 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 10 entities $$33.6 \mathrm{ms} \pm 229 \mathrm{μs}\left({\color{gray}-1.890 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 25 entities $$36.1 \mathrm{ms} \pm 235 \mathrm{μs}\left({\color{gray}-3.674 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 5 entities $$32.5 \mathrm{ms} \pm 261 \mathrm{μs}\left({\color{gray}-1.163 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 50 entities $$43.7 \mathrm{ms} \pm 276 \mathrm{μs}\left({\color{gray}-2.408 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 1 entities $$50.3 \mathrm{ms} \pm 361 \mathrm{μs}\left({\color{gray}-2.004 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 10 entities $$41.0 \mathrm{ms} \pm 253 \mathrm{μs}\left({\color{gray}0.785 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 25 entities $$95.0 \mathrm{ms} \pm 602 \mathrm{μs}\left({\color{red}9.89 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 5 entities $$34.3 \mathrm{ms} \pm 270 \mathrm{μs}\left({\color{gray}0.829 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 50 entities $$284 \mathrm{ms} \pm 1.26 \mathrm{ms}\left({\color{gray}2.12 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 1 entities $$10.8 \mathrm{ms} \pm 77.4 \mathrm{μs}\left({\color{gray}1.97 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 10 entities $$10.8 \mathrm{ms} \pm 99.0 \mathrm{μs}\left({\color{gray}1.00 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 25 entities $$10.9 \mathrm{ms} \pm 84.0 \mathrm{μs}\left({\color{gray}2.14 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 5 entities $$10.7 \mathrm{ms} \pm 75.3 \mathrm{μs}\left({\color{gray}1.53 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 50 entities $$10.8 \mathrm{ms} \pm 86.8 \mathrm{μs}\left({\color{gray}1.26 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_linkless

Function Value Mean Flame graphs
entity_by_id 1 entities $$10.6 \mathrm{ms} \pm 74.1 \mathrm{μs}\left({\color{gray}-0.432 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10 entities $$10.7 \mathrm{ms} \pm 75.1 \mathrm{μs}\left({\color{gray}-1.247 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 100 entities $$10.8 \mathrm{ms} \pm 73.1 \mathrm{μs}\left({\color{gray}0.812 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 1000 entities $$10.7 \mathrm{ms} \pm 74.4 \mathrm{μs}\left({\color{gray}-0.382 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10000 entities $$10.9 \mathrm{ms} \pm 77.1 \mathrm{μs}\left({\color{gray}-0.546 \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 $$11.2 \mathrm{ms} \pm 84.4 \mathrm{μs}\left({\color{gray}-0.097 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/book/v/1 $$11.1 \mathrm{ms} \pm 86.0 \mathrm{μs}\left({\color{gray}0.614 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/building/v/1 $$11.2 \mathrm{ms} \pm 67.0 \mathrm{μs}\left({\color{gray}1.29 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/organization/v/1 $$11.2 \mathrm{ms} \pm 103 \mathrm{μs}\left({\color{gray}0.252 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/page/v/2 $$11.2 \mathrm{ms} \pm 81.2 \mathrm{μs}\left({\color{gray}0.862 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/person/v/1 $$11.4 \mathrm{ms} \pm 118 \mathrm{μs}\left({\color{gray}1.60 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/playlist/v/1 $$11.2 \mathrm{ms} \pm 77.8 \mathrm{μs}\left({\color{gray}-0.330 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/song/v/1 $$11.2 \mathrm{ms} \pm 79.1 \mathrm{μs}\left({\color{gray}-3.021 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/uk-address/v/1 $$11.1 \mathrm{ms} \pm 111 \mathrm{μs}\left({\color{gray}-0.418 \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.17 \mathrm{ms} \pm 46.5 \mathrm{μs}\left({\color{gray}0.118 \mathrm{\%}}\right) $$ Flame Graph

representative_read_multiple_entities

Function Value Mean Flame graphs
entity_by_property traversal_paths=0 0 $$60.2 \mathrm{ms} \pm 433 \mathrm{μs}\left({\color{red}9.25 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$115 \mathrm{ms} \pm 688 \mathrm{μs}\left({\color{gray}1.61 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false $$68.1 \mathrm{ms} \pm 666 \mathrm{μs}\left({\color{red}8.50 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$77.2 \mathrm{ms} \pm 481 \mathrm{μs}\left({\color{gray}4.58 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$87.3 \mathrm{ms} \pm 597 \mathrm{μs}\left({\color{gray}3.06 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$93.0 \mathrm{ms} \pm 546 \mathrm{μs}\left({\color{gray}3.66 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=0 0 $$45.2 \mathrm{ms} \pm 322 \mathrm{μs}\left({\color{gray}3.02 \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 $$73.8 \mathrm{ms} \pm 477 \mathrm{μs}\left({\color{gray}2.31 \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 $$51.3 \mathrm{ms} \pm 296 \mathrm{μs}\left({\color{gray}1.11 \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 $$62.3 \mathrm{ms} \pm 392 \mathrm{μs}\left({\color{gray}2.37 \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 $$65.1 \mathrm{ms} \pm 414 \mathrm{μs}\left({\color{gray}4.00 \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 $$63.8 \mathrm{ms} \pm 428 \mathrm{μs}\left({\color{gray}1.95 \mathrm{\%}}\right) $$

scenarios

Function Value Mean Flame graphs
full_test query-limited $$128 \mathrm{ms} \pm 820 \mathrm{μs}\left({\color{red}8.42 \mathrm{\%}}\right) $$ Flame Graph
full_test query-unlimited $$139 \mathrm{ms} \pm 681 \mathrm{μs}\left({\color{gray}4.70 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-limited $$19.9 \mathrm{ms} \pm 157 \mathrm{μs}\left({\color{gray}1.79 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-unlimited $$547 \mathrm{ms} \pm 1.72 \mathrm{ms}\left({\color{gray}1.75 \mathrm{\%}}\right) $$ Flame Graph

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

Labels

area/libs Relates to first-party libraries/crates/packages (area) type/eng > backend Owned by the @backend team

Development

Successfully merging this pull request may close these issues.

4 participants