Repository navigation
fix: BYTE sum/avg and COUNT ANTI-JOIN CHAIN wrong answers (#9281, #9278, #9277) - #9288
Conversation
|
This pull request does not currently match the merge queue conditions, so it cannot be queued from here. The box comes back if it matches again. |
ReviewOverall this is a small, focused fix and the changes look correct. Notes below. Type.increment/decrement (#9281)
Anti-join push-down (#9278)
AntiJoinChainOp (#9277)
Tests
No security concerns. Per CLAUDE.md, no new dependencies were added and there are no stray System.out calls. |
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 12 |
🟢 Coverage 95.65% diff coverage · -5.75% coverage variation
Metric Results Coverage variation ✅ -5.75% coverage variation Diff coverage ✅ 95.65% diff coverage Coverage variation details
Coverable lines Covered lines Coverage Common ancestor commit (cbf701d) 214016 182272 85.17% Head commit (7d69d5f) 246639 (+32623) 195869 (+13597) 79.42% (-5.75%) Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch:
<coverage of head commit> - <coverage of common ancestor commit>Diff coverage details
Coverable lines Covered lines Diff coverage Pull request (#9288) 23 22 95.65% Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified:
<covered lines added or modified>/<coverable lines added or modified> * 100%
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (6)
Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 2 remain after this review. 📝 WalkthroughWalkthroughThe changes constrain openCypher anti-join count push-down for label and pattern constraints. They also add Byte handling to increment and decrement. Regression tests cover anti-join query counts and BYTE arithmetic and aggregates. ChangesAnti-join chain correctness
Byte arithmetic
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix · Severity of issue fixed: Medium Suggested reviewers: Merge Risk: ⚪ Minimal · up to The PR fixes BYTE sum and average, and it fixes wrong anti-join chain counts by declining unsafe push-downs and avoiding map reuse across labels. Regression tests cover these changes, and no outstanding defects were found. It appears ready to merge. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…, more Byte tests (#9288)
|
Review of #9288 The fixes look correct and well-scoped. The new tests compare the push-down result against the row pipeline, which is a good oracle. Suggestions
No security concerns. Overall this is a good fix, and the points above are minor. |
ReviewOverall this is a focused fix with good regression tests. No blocking issues found. Type.increment/decrement (#9281)
Anti-join push-down (#9278)
AntiJoinChainOp (#9277)
Style/CLAUDE.md
Tests
LGTM with the minor nits above. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #9288 +/- ##
=========================================
Coverage 76.93% 76.93%
+ Complexity 3982 3980 -2
=========================================
Files 2128 2128
Lines 214016 214035 +19
Branches 45541 45552 +11
=========================================
+ Hits 164656 164673 +17
+ Misses 31781 31776 -5
- Partials 17579 17586 +7 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Verified the head 7d69d5f against main cbf701d (both CI jars), on Temurin 25.0.4 with compact object headers and Temurin 21.0.12. The three fixes do what they say. The cross-label chain (#9277) and the negated pattern's modifiers (#9278) answer like the row pipeline: 0 wrong of 2,700 random chain queries compared with a brute-force count, against 60 wrong before the PR. SUM and AVG over a BYTE property (#9281) give 150 and 75.0 on the unchanged repro, 26 of 26 BYTE-versus-SHORT comparisons agree (11 of 26 before), and Type.increment and Type.decrement are right in 33 of 33 pairs with a Byte (0 of 33 before). LSQB's Q9 text keeps the COUNT ANTI-JOIN CHAIN plan with an unchanged time (ratio of medians 0.99 to 1.04, 10 JVMs per arm, 100 timed runs each, both JDKs). Two things for the review. The queries the PR declines now take the row pipeline, which is right but slower on the declined spellings (Q9 with an edge property map is 28 to 36x slower, with an end node property map 26 to 27x, with an end label that differs from the chain's 22 to 23x). And a few queries that were right by accident are now wrong: 4 of 3,000 random chains (true count 0, and I think the label bug emptied the frontier and hid a different bug, which is inferred and not tested) and 22 of 2,808 spelled ones (20 negate the chain's own last relationship with a true count of 0, and 2 are the no-inequality shape below). The push-down is still wrong for other shapes, with the same answers on 26.10.1, on main, and on this head, so they are not about this PR and I would not block on them: #9290 has a deterministic Java repro and the table. |
…rcadeData#9278 shapes with a property map) The ArcadeData#9288 verification on the merge commit (5d1259e) showed the engine now plans a negated pattern with a property map through the row pipeline, so _require_anti_join_plan would pytest.fail on those two tests. The count is what they assert; the no-map case keeps its plan check. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ubz3m6QXHESerCkehC1qgi
…ires become plain regression tests (the 26.11.1 snapshot carries the fix) (#232) * tests: the ArcadeData#9277, ArcadeData#9278 and ArcadeData#9281 tripwires become plain regression tests (#231) Upstream fixed all three in ArcadeDB 26.11.1 (ArcadeData#9288, merge commit 5d1259e, 2026-10-06). The CI snapshot image carries the fix, so the strict xfails XPASS and fail every job. The ArcadeData#9290 tripwires stay. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ubz3m6QXHESerCkehC1qgi * tests: no plan check where the fixed engine declines the push-down (ArcadeData#9278 shapes with a property map) The ArcadeData#9288 verification on the merge commit (5d1259e) showed the engine now plans a negated pattern with a property map through the row pipeline, so _require_anti_join_plan would pytest.fail on those two tests. The count is what they assert; the no-map case keeps its plan check. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ubz3m6QXHESerCkehC1qgi --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
…ted from the shipped 26.10.1 wheel (#228) The 46 per-test-file pages under development/testing/ restated the tests' own names and docstrings and had drifted (a wrong auto-transaction default, a skip that does not exist, a marker table missing a test, 12 of 62 test files absent from the overview). They are replaced by one development/testing.md with a table of every test file, the markers, the zero-skips gate as it is now, what the docs tests run, and the section on writing a test. Also removed: examples/basic.md, examples/import.md, examples/vectors.md (pointers that examples/index.md and the guide already cover) and getting-started/distributions.md (merged into installation.md; its two needles leave tests/test_docs_examples.py with it). Known issues and the vectors guide now say what is true for the shipped wheel: upstream ArcadeData#9277, ArcadeData#9278, ArcadeData#9281, and ArcadeData#7260 are fixed upstream for 26.11.1 (PRs ArcadeData#9288 and ArcadeData#9289) and still present in 26.10.1; ArcadeData#9290 is still open. The JPype entries no longer say the wheel installs 1.7.1 (it declares jpype1>=1.5.0). API, guide, and development pages: removed pre-26.10.1 workaround history for bugs the wheel ships fixed, sections that duplicated the guide, and wrong statements found against the source (schema of_type, set_wal_flush, troubleshooting entries, type-mapping table, wheel and server-stack sizes measured on the 26.10.1 wheel). Hunks that open PR #164 also touches are left alone. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ubz3m6QXHESerCkehC1qgi
…ted from the shipped 26.10.1 wheel (#228) The 46 per-test-file pages under development/testing/ restated the tests' own names and docstrings and had drifted (a wrong auto-transaction default, a skip that does not exist, a marker table missing a test, 12 of 62 test files absent from the overview). They are replaced by one development/testing.md with a table of every test file, the markers, the zero-skips gate as it is now, what the docs tests run, and the section on writing a test. Also removed: examples/basic.md, examples/import.md, examples/vectors.md (pointers that examples/index.md and the guide already cover) and getting-started/distributions.md (merged into installation.md; its two needles leave tests/test_docs_examples.py with it). Known issues and the vectors guide now say what is true for the shipped wheel: upstream ArcadeData#9277, ArcadeData#9278, ArcadeData#9281, and ArcadeData#7260 are fixed upstream for 26.11.1 (PRs ArcadeData#9288 and ArcadeData#9289) and still present in 26.10.1; ArcadeData#9290 is still open. The JPype entries no longer say the wheel installs 1.7.1 (it declares jpype1>=1.5.0). API, guide, and development pages: removed pre-26.10.1 workaround history for bugs the wheel ships fixed, sections that duplicated the guide, and wrong statements found against the source (schema of_type, set_wal_flush, troubleshooting entries, type-mapping table, wheel and server-stack sizes measured on the 26.10.1 wheel). Hunks that open PR #164 also touches are left alone. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ubz3m6QXHESerCkehC1qgi
…ted from the shipped 26.10.1 wheel (#229) * docs: retire stale and duplicate Python bindings pages, fix what drifted from the shipped 26.10.1 wheel (#228) The 46 per-test-file pages under development/testing/ restated the tests' own names and docstrings and had drifted (a wrong auto-transaction default, a skip that does not exist, a marker table missing a test, 12 of 62 test files absent from the overview). They are replaced by one development/testing.md with a table of every test file, the markers, the zero-skips gate as it is now, what the docs tests run, and the section on writing a test. Also removed: examples/basic.md, examples/import.md, examples/vectors.md (pointers that examples/index.md and the guide already cover) and getting-started/distributions.md (merged into installation.md; its two needles leave tests/test_docs_examples.py with it). Known issues and the vectors guide now say what is true for the shipped wheel: upstream ArcadeData#9277, ArcadeData#9278, ArcadeData#9281, and ArcadeData#7260 are fixed upstream for 26.11.1 (PRs ArcadeData#9288 and ArcadeData#9289) and still present in 26.10.1; ArcadeData#9290 is still open. The JPype entries no longer say the wheel installs 1.7.1 (it declares jpype1>=1.5.0). API, guide, and development pages: removed pre-26.10.1 workaround history for bugs the wheel ships fixed, sections that duplicated the guide, and wrong statements found against the source (schema of_type, set_wal_flush, troubleshooting entries, type-mapping table, wheel and server-stack sizes measured on the 26.10.1 wheel). Hunks that open PR #164 also touches are left alone. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ubz3m6QXHESerCkehC1qgi * docs: testing.md says a strict xfail fires when the fix reaches the engine the suite runs on, which CI builds from upstream's snapshot jars (#228) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ubz3m6QXHESerCkehC1qgi * docs: known issues says ArcadeData#9290 is fixed upstream (ArcadeData#9299, 26.11.1) and the tripwires are plain regression tests that fail on the 26.10.1 wheel (#228) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ubz3m6QXHESerCkehC1qgi --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Fixes #9281
Fixes #9278
Fixes #9277
Type.increment/decrementwidenBytetoShort, so sum()/avg() over BYTE work.AntiJoinChainOpno longer reuses a neighbour map across hops whose target labels differ.Tests: TypeTest, Issue9281SumByteTest, Issue9277And9278AntiJoinChainTest; opencypher, sql function and schema suites green.
Summary by CodeRabbit