Skip to content

#4006 fix(cypher): VLP segments must not re-traverse a relationship bound in a prior MATCH#4008

Merged
robfrank merged 1 commit intomainfrom
fix/4006-vlp-rertraverse-bound-rel
Apr 27, 2026
Merged

#4006 fix(cypher): VLP segments must not re-traverse a relationship bound in a prior MATCH#4008
robfrank merged 1 commit intomainfrom
fix/4006-vlp-rertraverse-bound-rel

Conversation

@robfrank
Copy link
Copy Markdown
Collaborator

$(cat <<'EOF'

Summary

Fixes #4006.

OpenCypher path isomorphism applies within a single path, not a single MATCH clause. When a relationship variable r is bound in one MATCH and explicitly co-participates in a path pattern with variable-length segments in a subsequent MATCH, those segments must not re-traverse r.

Before: MATCH ()-[r:EDGE]-() MATCH p = (n)-[*0..1]-()-[r]-()-[*0..1]-(m) RETURN count(p) returned 52
After: returns 32 (correct per TCK Match4 [7])

Root Cause

ExpandPathStep.hasEdgeConflict() skipped conflict checking for all variables listed in previousStepVariables (a snapshot of variables bound by prior MATCH clauses). This was too broad: a named relationship that is also an explicit node in the current path is a same-path co-participant and must still be excluded from variable-length traversal.

Fix

Added computePrevVarsForVlp(pathPattern, vlpHopIndex, boundVariables) in CypherExecutionPlan. It copies boundVariables then removes any named relationship variables appearing in other hops of the same path pattern. The resulting set is passed as previousStepVariables to ExpandPathStep, so co-participants remain subject to edge conflict checking.

Applied at both VLP step creation sites (primary optimizer path and legacy path).

Test Plan

  • New regression test Issue4006BoundRelVarPathIsomorphismTest - 2 methods
  • All related traversal tests pass (45 tests)
  • Full Cypher suite passes (5891 tests, 0 failures)

🤖 Generated with Claude Code
EOF

…n a prior MATCH

OpenCypher path isomorphism applies within a single path, not a single MATCH clause.
When a relationship variable `r` is bound in MATCH 1 and explicitly co-participates
in a path in MATCH 2 (e.g. `(n)-[*0..1]-()-[r]-()-[*0..1]-(m)`), the variable-length
segments must not re-traverse `r`. Fixes TCK Match4 [7] - count was 52, now 32.

Added `computePrevVarsForVlp()` in `CypherExecutionPlan` to strip same-path
co-participants from the prior-MATCH exclusion set before constructing `ExpandPathStep`.

Closes #4006

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@codacy-production
Copy link
Copy Markdown

codacy-production Bot commented Apr 27, 2026

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Coverage 90.00% diff coverage · -8.66% coverage variation

Metric Results
Coverage variation -8.66% coverage variation
Diff coverage 90.00% diff coverage

View coverage diff in Codacy

Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (7779412) 120040 88683 73.88%
Head commit (2faf3f4) 151287 (+31247) 98668 (+9985) 65.22% (-8.66%)

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 (#4008) 10 9 90.00%

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.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request addresses OpenCypher path isomorphism issues by introducing the computePrevVarsForVlp method to manage relationship variable exclusions during variable-length path expansion, along with corresponding regression tests. Feedback suggests that the implementation should be broadened to consider all path patterns within a MATCH clause to fully comply with relationship isomorphism rules, and specific code suggestions were provided to update the method signature and its call sites.

Comment on lines +3515 to +3535
* Computes the set of "previously bound" variables to pass to {@link ExpandPathStep} for a
* variable-length hop at {@code vlpHopIndex} within {@code pathPattern}.
* <p>
* OpenCypher path isomorphism applies within a single <em>path</em>, not within a MATCH clause.
* A relationship variable bound by a prior MATCH that is also explicitly named in the current
* path pattern is a same-path co-participant and must be checked for edge conflicts even though
* it was introduced before this MATCH. We therefore remove those co-participants from the
* exclusion set before handing it to ExpandPathStep.
*/
private static Set<String> computePrevVarsForVlp(final PathPattern pathPattern, final int vlpHopIndex,
final Set<String> boundVariables) {
final Set<String> prevVars = new HashSet<>(boundVariables);
for (int j = 0; j < pathPattern.getRelationshipCount(); j++) {
if (j == vlpHopIndex)
continue;
final RelationshipPattern rel = pathPattern.getRelationship(j);
if (rel.getVariable() != null && !rel.getVariable().isEmpty())
prevVars.remove(rel.getVariable());
}
return prevVars;
}
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.

medium

The current implementation of computePrevVarsForVlp only considers relationship variables within the same PathPattern. However, OpenCypher relationship isomorphism applies to the entire MATCH clause (the whole pattern). If a relationship variable was bound in a prior MATCH and is explicitly referenced in a different comma-separated path pattern within the current MATCH clause, it should still be subject to conflict checking for the variable-length segments.

Consider updating this method to iterate over all path patterns in the current MatchClause to ensure full compliance with relationship isomorphism rules when a bound variable is reused anywhere in the current MATCH scope.

  /**
   * Computes the set of "previously bound" variables to pass to {@link ExpandPathStep} for a
   * variable-length hop at {@code vlpHopIndex} within {@code currentPathPattern} of the
   * given {@code matchClause}.
   * <p>
   * OpenCypher relationship isomorphism applies within a single pattern (MATCH clause).
   * A relationship variable bound by a prior MATCH that is also explicitly named in the current
   * MATCH clause is a co-participant and must be checked for edge conflicts even though
   * it was introduced before this MATCH. We therefore remove those co-participants from the
   * exclusion set before handing it to ExpandPathStep.
   */
  private static Set<String> computePrevVarsForVlp(final MatchClause matchClause, final PathPattern currentPathPattern, final int vlpHopIndex,
      final Set<String> boundVariables) {
    final Set<String> prevVars = new HashSet<>(boundVariables);
    for (final PathPattern pathPattern : matchClause.getPathPatterns()) {
      for (int j = 0; j < pathPattern.getRelationshipCount(); j++) {
        if (pathPattern == currentPathPattern && j == vlpHopIndex)
          continue;
        final RelationshipPattern rel = pathPattern.getRelationship(j);
        final String var = rel.getVariable();
        if (var != null && !var.isEmpty())
          prevVars.remove(var);
      }
    }
    return prevVars;
  }

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

The suggestion extends the fix beyond what the OpenCypher spec requires.

Path isomorphism applies within a single path pattern, not across comma-separated patterns within a MATCH clause. The issue description itself states this explicitly:

"OpenCypher's path isomorphism rule, which applies within a single path, not within a single MATCH clause."

TCK Match4 [7] (the canonical test for this fix) uses a single path pattern:

MATCH p = (n)-[*0..1]-()-[r]-()-[*0..1]-(m)

The rule is: if r is an explicit hop in the same path pattern as the VLP, the VLP must not re-traverse it. If r appears in a different comma-separated sub-pattern, they are independent patterns and the spec does not forbid the VLP from traversing the same edge.

Broadening to the full MatchClause would impose a cross-path uniqueness constraint that the spec does not mandate, and would incorrectly restrict valid queries. Keeping the scope to the current PathPattern is the correct and spec-compliant implementation.

if (relPattern.isVariableLength()) {
nextStep = new ExpandPathStep(effectiveSourceVar, pathVariable, relVar, effectiveTargetVar, relPattern,
true, effectiveTargetNode, pathPattern.getEffectivePathMode(), new HashSet<>(boundVariables), context);
true, effectiveTargetNode, pathPattern.getEffectivePathMode(), computePrevVarsForVlp(pathPattern, i, boundVariables), context);
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.

medium

Update the call to computePrevVarsForVlp to pass the matchClause if the suggested change to the method signature is adopted.

Suggested change
true, effectiveTargetNode, pathPattern.getEffectivePathMode(), computePrevVarsForVlp(pathPattern, i, boundVariables), context);
true, effectiveTargetNode, pathPattern.getEffectivePathMode(), computePrevVarsForVlp(matchClause, pathPattern, i, boundVariables), context);

// filtering. Snapshot previously bound variables for relationship-uniqueness scoping.
nextStep = new ExpandPathStep(currentSourceVar, pathVariable, relVar, targetVar, relPattern, true,
targetNode, pathPattern.getEffectivePathMode(), new HashSet<>(legacyBoundVariables), context);
targetNode, pathPattern.getEffectivePathMode(), computePrevVarsForVlp(pathPattern, i, legacyBoundVariables), context);
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.

medium

Update the call to computePrevVarsForVlp to pass the matchClause if the suggested change to the method signature is adopted.

Suggested change
targetNode, pathPattern.getEffectivePathMode(), computePrevVarsForVlp(pathPattern, i, legacyBoundVariables), context);
targetNode, pathPattern.getEffectivePathMode(), computePrevVarsForVlp(matchClause, pathPattern, i, legacyBoundVariables), context);

@robfrank robfrank changed the title fix(cypher): VLP segments must not re-traverse a relationship bound in a prior MATCH #4006 fix(cypher): VLP segments must not re-traverse a relationship bound in a prior MATCH Apr 27, 2026
@robfrank robfrank merged commit 4ad4748 into main Apr 27, 2026
67 of 71 checks passed
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 27, 2026

Codecov Report

❌ Patch coverage is 80.00000% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.18%. Comparing base (7779412) to head (2faf3f4).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...query/opencypher/executor/CypherExecutionPlan.java 80.00% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4008      +/-   ##
==========================================
- Coverage   64.89%   64.18%   -0.72%     
==========================================
  Files        1597     1597              
  Lines      120040   120048       +8     
  Branches    25548    25551       +3     
==========================================
- Hits        77903    77054     -849     
- Misses      31387    32338     +951     
+ Partials    10750    10656      -94     

☔ View full report in Codecov by Sentry.
📢 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.

mergify Bot added a commit that referenced this pull request May 3, 2026
…skip ci]

Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.7.10 to 42.7.11.
Release notes

*Sourced from [org.postgresql:postgresql's releases](https://github.com/pgjdbc/pgjdbc/releases).*

> v42.7.11
> --------
>
> Security
> --------
>
> * fix: Limit SCRAM PBKDF2 iterations accepted from the server.
>   pgjdbc was vulnerable to a client-side denial of service in SCRAM-SHA-256 authentication, where a malicious or compromised PostgreSQL server could specify an extremely large PBKDF2 iteration count, causing the client to consume unbounded CPU and potentially exhaust connection pools. The fix introduces a new scramMaxIterations connection property (defaulting to 100,000) to cap iteration counts before computation begins.
>   See the [Security Advisory](GHSA-98qh-xjc8-98pq) for more detail.
>   The following [CVE-2026-42198](https://nvd.nist.gov/vuln/detail/CVE-2026-42198) has been issued.
>
> Changes
> -------
>
> * fix: Add sources and javadocs to shaded published lib generation [`@​sehrope`](https://github.com/sehrope) ([#4043](https://redirect.github.com/pgjdbc/pgjdbc/issues/4043))
> * update Changelog and website for release of 42.7.11 [`@​davecramer`](https://github.com/davecramer) ([#4042](https://redirect.github.com/pgjdbc/pgjdbc/issues/4042))
> * Fix scram fix location in changelog and update published artifact developer list [`@​sehrope`](https://github.com/sehrope) ([#4041](https://redirect.github.com/pgjdbc/pgjdbc/issues/4041))
> * Restrict test with scram\_iterations to v16+ and release notes [`@​sehrope`](https://github.com/sehrope) ([#4040](https://redirect.github.com/pgjdbc/pgjdbc/issues/4040))
> * chore(deps): update ubuntu:24.04 docker digest to 84e77de [`@​renovate-bot`](https://github.com/renovate-bot) ([#4017](https://redirect.github.com/pgjdbc/pgjdbc/issues/4017))
> * test: add tests for QueryExecutor#getTransactionState [`@​vlsi`](https://github.com/vlsi) ([#4006](https://redirect.github.com/pgjdbc/pgjdbc/issues/4006))
> * chore(deps): update actions/create-github-app-token action to v2.2.2 [`@​renovate-bot`](https://github.com/renovate-bot) ([#3983](https://redirect.github.com/pgjdbc/pgjdbc/issues/3983))
> * fix: fix flaky CopyBothResponseTest by using WAL flush LSN [`@​vlsi`](https://github.com/vlsi) ([#3979](https://redirect.github.com/pgjdbc/pgjdbc/issues/3979))
> * fix: fix flaky replication restart tests by waiting for confirmed\_flush\_lsn [`@​vlsi`](https://github.com/vlsi) ([#3975](https://redirect.github.com/pgjdbc/pgjdbc/issues/3975))
> * test: fix flaky LogicalReplicationStatusTest by polling pg\_stat\_replication [`@​vlsi`](https://github.com/vlsi) ([#3974](https://redirect.github.com/pgjdbc/pgjdbc/issues/3974))
> * chore: replace Appveyor with ikalnytskyi/action-setup-postgres [`@​vlsi`](https://github.com/vlsi) ([#3966](https://redirect.github.com/pgjdbc/pgjdbc/issues/3966))
> * test: move test table creation from [`@​BeforeEach`](https://github.com/BeforeEach) to [`@​BeforeAll`](https://github.com/BeforeAll) [`@​vlsi`](https://github.com/vlsi) ([#3967](https://redirect.github.com/pgjdbc/pgjdbc/issues/3967))
> * Return jsonb as PGObject fixes Issue [#3926](https://redirect.github.com/pgjdbc/pgjdbc/issues/3926) [`@​davecramer`](https://github.com/davecramer) ([#3956](https://redirect.github.com/pgjdbc/pgjdbc/issues/3956))
> * Update docker scripts [`@​davecramer`](https://github.com/davecramer) ([#3958](https://redirect.github.com/pgjdbc/pgjdbc/issues/3958))
> * implement require\_auth, this is pretty much how libpq does this. [`@​davecramer`](https://github.com/davecramer) ([#3895](https://redirect.github.com/pgjdbc/pgjdbc/issues/3895))
> * docs: add SCRAM authentication test setup section to TESTING.md [`@​emmaeng700`](https://github.com/emmaeng700) ([#3945](https://redirect.github.com/pgjdbc/pgjdbc/issues/3945))
> * Add RequireServerVersion annotation for tests [`@​sehrope`](https://github.com/sehrope) ([#3939](https://redirect.github.com/pgjdbc/pgjdbc/issues/3939))
>
> 🐛 Bug Fixes
> -----------
>
> * fix: ensure extended protocol messages end with Sync message [`@​vlsi`](https://github.com/vlsi) ([#3728](https://redirect.github.com/pgjdbc/pgjdbc/issues/3728))
> * fix: enable cursor-based fetching in extended protocol when transaction started via SQL command [`@​vlsi`](https://github.com/vlsi) ([#3996](https://redirect.github.com/pgjdbc/pgjdbc/issues/3996))
> * fix: retry with SSL on IOException when sslMode=ALLOW [`@​vlsi`](https://github.com/vlsi) ([#3973](https://redirect.github.com/pgjdbc/pgjdbc/issues/3973))
> * fix: allow fallback to non-SSL connection when sslMode=prefer and sslResponseTimeout kicks in [`@​vlsi`](https://github.com/vlsi) ([#3968](https://redirect.github.com/pgjdbc/pgjdbc/issues/3968))
> * fix: catch SecurityException from setContextClassLoader on ForkJoinPool workers [`@​vlsi`](https://github.com/vlsi) ([#3962](https://redirect.github.com/pgjdbc/pgjdbc/issues/3962))
> * fix: use compareTo for LogSequenceNumber comparison [`@​vlsi`](https://github.com/vlsi) ([#3961](https://redirect.github.com/pgjdbc/pgjdbc/issues/3961))
> * fix: release COPY lock on IOException to prevent connection hang ([#3957](https://redirect.github.com/pgjdbc/pgjdbc/issues/3957)) [`@​vlsi`](https://github.com/vlsi) ([#3960](https://redirect.github.com/pgjdbc/pgjdbc/issues/3960))
>
> 🧰 Maintenance
> -------------
>
> * style: replace [`@​exception`](https://github.com/exception) with [`@​throws`](https://github.com/throws) in getBoolean javadoc [`@​vlsi`](https://github.com/vlsi) ([#4035](https://redirect.github.com/pgjdbc/pgjdbc/issues/4035))
> * chore: use `@​vlsi/github-actions-random-matrix` npm package [`@​vlsi`](https://github.com/vlsi) ([#4008](https://redirect.github.com/pgjdbc/pgjdbc/issues/4008))
> * chore: use tag names for pinning github actions, pin ikalnytskyi/action-setup-postgres [`@​vlsi`](https://github.com/vlsi) ([#4007](https://redirect.github.com/pgjdbc/pgjdbc/issues/4007))
> * chore: bump errorprone to 2.48.0 [`@​vlsi`](https://github.com/vlsi) ([#4005](https://redirect.github.com/pgjdbc/pgjdbc/issues/4005))
> * test: add [`@​DisableLogger`](https://github.com/DisableLogger) annotation to suppress expected log warnings in tests [`@​vlsi`](https://github.com/vlsi) ([#3971](https://redirect.github.com/pgjdbc/pgjdbc/issues/3971))
> * chore: suppress deprecations in test code to reduce build verbosity [`@​vlsi`](https://github.com/vlsi) ([#3972](https://redirect.github.com/pgjdbc/pgjdbc/issues/3972))
> * chore: replace log warning in ConnectionFactory.closeStream with Throwable.addSuppressed [`@​vlsi`](https://github.com/vlsi) ([#3970](https://redirect.github.com/pgjdbc/pgjdbc/issues/3970))
> * chore: use greedy pairwise coverage for CI matrix generation [`@​vlsi`](https://github.com/vlsi) ([#3965](https://redirect.github.com/pgjdbc/pgjdbc/issues/3965))
> * chore: use full version tags in GitHub Actions comments [`@​vlsi`](https://github.com/vlsi) ([#3963](https://redirect.github.com/pgjdbc/pgjdbc/issues/3963))
>
> ⬆️ Dependencies
> ---------------

... (truncated)


Changelog

*Sourced from [org.postgresql:postgresql's changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md).*

> [42.7.11] (2026-04-28)
> ----------------------
>
> ### Security
>
> * fix: Limit SCRAM PBKDF2 iterations accepted from the server.
>   pgjdbc was vulnerable to a client-side denial of service in SCRAM-SHA-256 authentication, where a malicious or compromised PostgreSQL server could specify an extremely large PBKDF2 iteration count, causing the client to consume unbounded CPU and potentially exhaust connection pools. The fix introduces a new scramMaxIterations connection property (defaulting to 100,000) to cap iteration counts before computation begins.
>   See the [Security Advisory](GHSA-98qh-xjc8-98pq) for more detail.
>   The following [CVE-2026-42198](https://nvd.nist.gov/vuln/detail/CVE-2026-42198) has been issued.
>
> ### Added
>
> * feat: implement require\_auth connection property, aligning with libpq behavior [PR [#3895](https://redirect.github.com/pgjdbc/pgjdbc/issues/3895)]([pgjdbc/pgjdbc#3895](https://redirect.github.com/pgjdbc/pgjdbc/pull/3895))
>
> ### Changed
>
> * chore: replace Appveyor CI with ikalnytskyi/action-setup-postgres [PR [#3966](https://redirect.github.com/pgjdbc/pgjdbc/issues/3966)]([pgjdbc/pgjdbc#3966](https://redirect.github.com/pgjdbc/pgjdbc/pull/3966))
> * chore: upgrade Gradle to v9 [PR [#3978](https://redirect.github.com/pgjdbc/pgjdbc/issues/3978)]([pgjdbc/pgjdbc#3978](https://redirect.github.com/pgjdbc/pgjdbc/pull/3978))
>
> ### Fixed
>
> * fix: ensure extended protocol messages end with Sync message [PR [#3728](https://redirect.github.com/pgjdbc/pgjdbc/issues/3728)]([pgjdbc/pgjdbc#3728](https://redirect.github.com/pgjdbc/pgjdbc/pull/3728))
> * fix: enable cursor-based fetching in extended protocol when transaction started via SQL command [PR [#3996](https://redirect.github.com/pgjdbc/pgjdbc/issues/3996)]([pgjdbc/pgjdbc#3996](https://redirect.github.com/pgjdbc/pgjdbc/pull/3996))
> * fix: retry with SSL on IOException when sslMode=ALLOW [PR [#3973](https://redirect.github.com/pgjdbc/pgjdbc/issues/3973)]([pgjdbc/pgjdbc#3973](https://redirect.github.com/pgjdbc/pgjdbc/pull/3973))
> * fix: make sure the driver honours connectTimeout when retrying the connection [PR [#3968](https://redirect.github.com/pgjdbc/pgjdbc/issues/3968)]([pgjdbc/pgjdbc#3968](https://redirect.github.com/pgjdbc/pgjdbc/pull/3968))
> * fix: allow fallback to non-SSL connection when sslMode=prefer and sslResponseTimeout kicks in [PR [#3968](https://redirect.github.com/pgjdbc/pgjdbc/issues/3968)]([pgjdbc/pgjdbc#3968](https://redirect.github.com/pgjdbc/pgjdbc/pull/3968))
> * fix: catch SecurityException from setContextClassLoader on ForkJoinPool workers [PR [#3962](https://redirect.github.com/pgjdbc/pgjdbc/issues/3962)]([pgjdbc/pgjdbc#3962](https://redirect.github.com/pgjdbc/pgjdbc/pull/3962))
> * fix: use compareTo for LogSequenceNumber comparison to handle unsigned values correctly [PR [#3961](https://redirect.github.com/pgjdbc/pgjdbc/issues/3961)]([pgjdbc/pgjdbc#3961](https://redirect.github.com/pgjdbc/pgjdbc/pull/3961))
> * fix: release COPY lock on IOException to prevent connection hang [PR [#3957](https://redirect.github.com/pgjdbc/pgjdbc/issues/3957)]([pgjdbc/pgjdbc#3957](https://redirect.github.com/pgjdbc/pgjdbc/pull/3957))
> * fix: return jsonb as PGObject instead of String [PR [#3956](https://redirect.github.com/pgjdbc/pgjdbc/issues/3956)]([pgjdbc/pgjdbc#3956](https://redirect.github.com/pgjdbc/pgjdbc/pull/3956))
> * fix: align SSL key file permission check with libpq [PR [#3952](https://redirect.github.com/pgjdbc/pgjdbc/issues/3952)]([pgjdbc/pgjdbc#3952](https://redirect.github.com/pgjdbc/pgjdbc/pull/3952))
> * fix: guard connection closed flag with a reentrant lock to protect against concurrent close [PR [#3905](https://redirect.github.com/pgjdbc/pgjdbc/issues/3905)]([pgjdbc/pgjdbc#3905](https://redirect.github.com/pgjdbc/pgjdbc/pull/3905))


Commits

* [`78e261f`](pgjdbc/pgjdbc@78e261f) fix: Add sources and javadocs to shaded published lib generation
* [`1e09fa0`](pgjdbc/pgjdbc@1e09fa0) update Changelog and website for release of 42.7.11 ([#4042](https://redirect.github.com/pgjdbc/pgjdbc/issues/4042))
* [`d479fa5`](pgjdbc/pgjdbc@d479fa5) Fix scram fix location in changelog and update published artifact developer l...
* [`b04fc46`](pgjdbc/pgjdbc@b04fc46) docs: Add scram max iters fix to changelog
* [`cf54822`](pgjdbc/pgjdbc@cf54822) test: Disable scram test on older version without scram\_iterations GUC
* [`7dbcc79`](pgjdbc/pgjdbc@7dbcc79) test: Add SCRAM max iteration tests
* [`c9d41d1`](pgjdbc/pgjdbc@c9d41d1) fix: Limit SCRAM PBKDF2 iterations accepted from the server
* [`a340cb2`](pgjdbc/pgjdbc@a340cb2) style: replace [`@​exception`](https://github.com/exception) with [`@​throws`](https://github.com/throws) in getBoolean javadoc
* [`77837f8`](pgjdbc/pgjdbc@77837f8) fix(deps): update dependency org.openrewrite.rewrite:org.openrewrite.rewrite....
* [`23af03b`](pgjdbc/pgjdbc@23af03b) chore(deps): update actions/checkout action to v6
* Additional commits viewable in [compare view](pgjdbc/pgjdbc@REL42.7.10...REL42.7.11)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=org.postgresql:postgresql&package-manager=maven&previous-version=42.7.10&new-version=42.7.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(cypher): variable-length path re-traverses bound relationship from previous MATCH clause

1 participant