• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

orneryd / NornicDB / 28963827968
89%
main: 89%

Build:
Build:
LAST BUILD BRANCH: fix/fail-loud-multiclause
DEFAULT BRANCH: main
Ran 08 Jul 2026 06:02PM UTC
Jobs 1
Files 483
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

08 Jul 2026 05:12PM UTC coverage: 89.138% (+0.007%) from 89.131%
28963827968

Pull #259

github

linuxdynasty
fix(cypher): carry relationship bindings through multi-MATCH and index-seed IN-list traversal starts

Two independent defects on the same query shape
(MATCH (s) WHERE s.uid IN $u MATCH (s)-[rel]->() WHERE
rel.evidence_source = $e DELETE|RETURN ...):

1. Correctness: a relationship variable bound by the second (or later)
   MATCH clause of a multi-MATCH query was silently dropped. `binding`
   (match_multi.go) is map[string]*storage.Node, so executeFirstMatch/
   executeChainedMatch never stored the relationship a clause's pattern
   bound even though the traversal's PathResult already carried it.
   DELETE rel deleted zero edges; RETURN rel / count(rel) / rel.prop /
   elementId(rel) resolved to nil while node columns in the same query
   were correct. Kept binding's map[string]*storage.Node shape unchanged
   (~10 existing binding_where_compile*_test.go-family tests construct
   and index it directly) and threaded relationship bindings as a
   parallel, index-aligned map[string]*storage.Edge through
   executeFirstMatch, executeChainedMatch, a new
   filterBindingsByWhereWithRels (reuses the untouched node-only WHERE
   compiler via a read-only bindingWithRelView property adapter), and
   resolveBindingExpr/resolveBindingItem. Also fixed executeMultiMatch
   never applying SKIP/LIMIT despite its own comment claiming it did.

2. Performance: MATCH (s:Label)-[rel]->() WHERE s.uid IN $list ... never
   index-seeded its start nodes, even though the equivalent node-only
   MATCH (s:Label) WHERE s.uid IN $list already does via
   tryCollectNodesFromPropertyIndexIn(Literal). Added
   tryCollectNodesFromPropertyIndexInCompound, wiring those existing
   index-seek helpers into executeMatchWithRelationshipsWithPath's
   start-node pruning chain, including when the IN-list is one AND
   conjunct alongside a relationship-property predicate (mirrors
   tryCollectNodesFromIDEqualityCompound's conjunct handling).
   filterPathsByWhere still re-evaluates the full WH... (continued)
Pull Request #259: fix(cypher): bind relationships across multi-MATCH clauses; perf(cypher): index-seed IN-list traversal starts

147 of 157 new or added lines in 3 files covered. (93.63%)

19 existing lines in 6 files now uncovered.

146194 of 164009 relevant lines covered (89.14%)

1.04 hits per line

Uncovered Changes

Lines Coverage ∆ File
10
90.26
0.51% pkg/cypher/match_multi.go

Coverage Regressions

Lines Coverage ∆ File
7
84.42
-0.78% pkg/storage/badger_constraint_validation.go
4
87.75
-0.36% pkg/server/server.go
3
81.39
-0.02% pkg/search/search.go
2
89.66
-3.45% pkg/nornicdb/auto_embed_inference.go
2
93.81
-0.29% pkg/nornicdb/embed_queue.go
1
86.86
0.04% pkg/storage/badger_transaction.go
Jobs
ID Job ID Ran Files Coverage
1 28963827968.1 08 Jul 2026 06:02PM UTC 483
89.14
GitHub Action Run
Source Files on build 28963827968
  • Tree
  • List 483
  • Changed 14
  • Source Changed 0
  • Coverage Changed 14
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #259
  • PR Base - main (#28621855672)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc