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

orneryd / NornicDB / 30023243756
89%
main: 89%

Build:
Build:
LAST BUILD BRANCH: codex/relationship-merge-property-identity
DEFAULT BRANCH: main
Ran 23 Jul 2026 04:13PM UTC
Jobs 1
Files 491
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

23 Jul 2026 03:59PM UTC coverage: 89.03% (-0.1%) from 89.13%
30023243756

Pull #265

github

local
feat(cypher): support every OPTIONAL MATCH and aggregate shape, mirroring Neo4j

Replace the remaining shape rejections in the traversal-seeded OPTIONAL
MATCH pipeline with full support, mapped from Neo4j's Cypher runtime
(community/cypher in the neo4j/neo4j source):

- A clause that shares no variable with earlier clauses is a valid
  disconnected optional join, not an error. It now evaluates with
  Apply + Optional semantics (ApplyPipe.scala / OptionalPipe.scala):
  the pattern is enumerated once, each left row joins with candidates,
  and a row with no match is preserved with newly-introduced variables
  bound to null.
- Single-node patterns are supported: a bound variable introduces no
  new bindings and preserves rows whether or not the pattern holds; an
  unbound variable is an independent scan with the same left-outer
  contract.
- Multi-hop chains and pre-bound relationship variables route through
  the same general Apply + Optional path with identity agreement on
  shared variables. The connected single-hop fast path keeps
  OptionalExpandAll semantics (null seeds propagate null bindings).
- Aggregation supports every shape instead of erroring: stdev/stdevp
  implement StdevFunction.scala's contract (null on empty, 0.0 for a
  single value, sample vs population divisors); RETURN items that
  contain aggregates inside larger expressions (count(x) + 1,
  coalesce(sum(w), 0)) are isolated, aggregated per group, and
  substituted into the outer expression exactly like the front-end
  isolateAggregation rewrite. The only remaining error is an empty
  aggregate argument list, which Neo4j itself rejects at compile time.

The branch is rebased onto main, dropping the earlier fail-loud
multi-clause guard commit entirely: no valid Cypher shape is rejected
anywhere in this pipeline.

New tests cover disconnected node and relationship patterns (join and
null-fill), bound single-node row preservation, multi-hop chains, mixed
aggregate expressions, and std... (continued)
Pull Request #265: fix(cypher): evaluate traversal-seeded OPTIONAL MATCH projections (function projection, rel-var binding, chained clauses, aggregation)

676 of 930 new or added lines in 5 files covered. (72.69%)

30 existing lines in 12 files now uncovered.

147250 of 165393 relevant lines covered (89.03%)

1.04 hits per line

Uncovered Changes

Lines Coverage ∆ File
99
67.54
pkg/cypher/optional_match_traversal_agg.go
83
76.88
pkg/cypher/optional_match_traversal.go
46
75.53
pkg/cypher/optional_match_traversal_general.go
26
63.89
pkg/cypher/optional_match_traversal_compile.go

Coverage Regressions

Lines Coverage ∆ File
6
91.67
-0.52% pkg/nornicdb/db_admin.go
6
89.07
-1.99% pkg/temporal/decay_integration.go
3
90.84
-0.43% pkg/nornicdb/search_services.go
3
87.44
-1.35% pkg/storage/badger_schema.go
2
87.48
0.13% pkg/cypher/clauses.go
2
90.53
0.0% pkg/cypher/match_rows.go
2
85.28
-0.07% pkg/fabric/executor.go
2
87.07
0.0% pkg/storage/badger_transaction.go
1
96.39
-0.3% pkg/nornicdb/apoc_storage_adapter.go
1
93.67
-0.14% pkg/nornicdb/embed_queue.go
1
88.15
-0.24% pkg/search/vector_query_spec.go
1
97.64
-0.26% pkg/temporal/tracker.go
Jobs
ID Job ID Ran Files Coverage
1 30023243756.1 23 Jul 2026 04:13PM UTC 491
89.03
GitHub Action Run
Source Files on build 30023243756
  • Tree
  • List 491
  • Changed 14
  • Source Changed 0
  • Coverage Changed 14
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #265
  • PR Base - main (#29767323807)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc