Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
Tick the box to add this pull request to the merge queue (same as
|
Up to standards ✅🟢 Issues
|
|
@claude please review this PR |
|
Claude encountered an error after 3m 3s —— View job Reviewing PR #5387
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5387 +/- ##
============================================
- Coverage 66.33% 65.72% -0.62%
- Complexity 0 1044 +1044
============================================
Files 1723 1723
Lines 141865 141876 +11
Branches 30357 30359 +2
============================================
- Hits 94113 93244 -869
- Misses 35017 36034 +1017
+ Partials 12735 12598 -137 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@claude please review this PR |
|
Claude finished @lvca's task in 10m 22s —— View job Reviewing PR #5387
Note: This environment has no network/build access for me in this run, so I couldn't execute SummaryThe change is well-scoped: it reuses Correctness issue: inline properties/labels on the anchor node are silently dropped
if (reversedFromIndexedAnchor && physicalPlan.getAnchor().getPropertyValue() instanceof InListValues) {
final var anchor = physicalPlan.getAnchor();
sourceStep = new IndexSeekStep(anchor.getVariable(), anchor.getIndex().getTypeName(),
anchor.getPropertyName(), anchor.getPropertyValue(), anchor.getIndex().getIndexName(),
anchor.getEstimatedCost(), anchor.getEstimatedCardinality(), context);
} else
sourceStep = new MatchNodeStep(sourceVar, sourceNode, context, sourceIdFilter, sourcePushdown);
Previously, Also, the final Repro: MATCH (place:Area)-[:PART_OF*0..3]->(country:Area {region: 'EU'})
WHERE country.id IN $countryIds
RETURN country, placeIf Suggested fix: in Minor
Not an issue
|
|
Thanks, addressed in ca21bc5. I confirmed that both reported constraint shapes already fall back to traditional execution under the current optimizer eligibility checks: inline node properties and multi-label relationship endpoints are rejected before a physical plan is built. I nevertheless added the safety check at the indexed IN-list bridge itself so future optimizer expansion cannot make the shortcut bypass those constraints. The shortcut now requires an anchor with no inline/parameter properties, no dynamic labels, and exactly one static label matching the indexed type. Added focused regressions for an inline property and an additional label; both verify correct results and fallback plan selection. Verification: |
|
Really great PR, merging it! Thanks! |
) * Optimize IN-list anchors for bounded Cypher paths * Guard non-index path reversals * Guard indexed IN anchors with inline constraints --------- Co-authored-by: justinblethrow-cloud <226385385+justinblethrow-cloud@users.noreply.github.com> (cherry picked from commit 95148b2)

Summary
IN-list target anchorsIndexSeekStep, reusing the existing multi-value seek and runtime parameter handlingThis preserves the existing bridge safety gates: read-only execution, one bounded and typed bidirectional relationship, a single-property index, and no shape-changing clauses before
MATCH.The indexed-anchor reversal is tracked separately from the existing reversal of ordinary single-hop paths whose target is already bound, so fallback execution does not require a physical optimizer plan.
Motivation
The bridge currently rejects
InListValues, so a query such as:cannot start from the selective indexed target even though
NodeIndexSeekalready supports literal and parameterizedINlists. This patch connects that existing operator to the traditional variable-length executor.Part of #5358.
Verification
Result: 128 tests run, 0 failures, 0 errors, 0 skipped.
Result: 3,897 scenarios run, 0 failures, 0 errors, 85 expected skips.