Skip to content

fix: resolve ParameterReference in MERGE property matching#2

Merged
ExtReMLapin merged 1 commit intofixissue3476from
claude/fix-opencypher-engine-4rpm3
Feb 18, 2026
Merged

fix: resolve ParameterReference in MERGE property matching#2
ExtReMLapin merged 1 commit intofixissue3476from
claude/fix-opencypher-engine-4rpm3

Conversation

@ExtReMLapin
Copy link
Copy Markdown
Owner

When a MERGE query used parameter references (e.g., $username) in node properties, the ParameterReference objects were not resolved before property matching. This caused MERGE to always create a new node instead of finding the existing one, mirroring the bug that was already fixed in MatchNodeStep.matchesProperties().

The fix adds ParameterReference resolution in MergeStep.evaluateProperties(), which is called before matchesProperties() for both node and edge patterns.

Regression tests added to OpenCypherMergeTest:

  • mergeFindsNodeWithParameterReference: verifies no duplicate is created
  • mergeCreatesNodeWithParameterReference: verifies creation still works

https://claude.ai/code/session_012HJWpf6hyoiJSrFo2Wyim1

What does this PR do?

A brief description of the change being made with this pull request.

Motivation

What inspired you to submit this pull request?

Related issues

A list of issues either fixed, containing architectural discussions, otherwise relevant
for this Pull Request.

Additional Notes

Anything else we should know when reviewing?

Checklist

  • I have run the build using mvn clean package command
  • My unit tests cover both failure and success scenarios

When a MERGE query used parameter references (e.g., $username) in node
properties, the ParameterReference objects were not resolved before
property matching. This caused MERGE to always create a new node instead
of finding the existing one, mirroring the bug that was already fixed in
MatchNodeStep.matchesProperties().

The fix adds ParameterReference resolution in MergeStep.evaluateProperties(),
which is called before matchesProperties() for both node and edge patterns.

Regression tests added to OpenCypherMergeTest:
- mergeFindsNodeWithParameterReference: verifies no duplicate is created
- mergeCreatesNodeWithParameterReference: verifies creation still works

https://claude.ai/code/session_012HJWpf6hyoiJSrFo2Wyim1
@ExtReMLapin ExtReMLapin merged commit 41fdc93 into fixissue3476 Feb 18, 2026
1 of 3 checks passed
ExtReMLapin pushed a commit that referenced this pull request Mar 18, 2026
…3 in /studio in the build-tools group [skip ci]

[//]: # (dependabot-start)
⚠️ \*\*Dependabot is rebasing this PR\*\* ⚠️
Rebasing might not happen immediately, so don't worry if this takes some time.
Note: if you make any changes to this PR yourself, they will take precedence over the rebase.
---
[//]: # (dependabot-end)
Bumps the build-tools group in /studio with 1 update: [webpack](https://github.com/webpack/webpack).
Updates `webpack` from 5.105.2 to 5.105.3
Release notes

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

> v5.105.3
> --------
>
> ### Patch Changes
>
> * Context modules now handle rejections correctly. (by [`@​alexander-akait`](https://github.com/alexander-akait) in [#20455](https://redirect.github.com/webpack/webpack/pull/20455))
> * Only mark asset modules as side-effect-free when `experimental.futureDefaults` is set to true, so asset-copying use cases (e.g. `import "./x.png"`) won’t break unless the option is enabled. (by [`@​hai-x`](https://github.com/hai-x) in [#20535](https://redirect.github.com/webpack/webpack/pull/20535))
> * Add the missing **webpack\_exports** declaration in certain cases when bundling a JS entry together with non-JS entries (e.g., CSS entry or asset module entry). (by [`@​hai-x`](https://github.com/hai-x) in [#20463](https://redirect.github.com/webpack/webpack/pull/20463))
> * Fixed HMR failure for CSS modules with [`@​import`](https://github.com/import) when exportType !== "link". When exportType is not "link", CSS modules now behave like JavaScript modules and don't require special HMR handling, allowing [`@​import`](https://github.com/import) CSS to work correctly during hot module replacement. (by [`@​xiaoxiaojx`](https://github.com/xiaoxiaojx) in [#20514](https://redirect.github.com/webpack/webpack/pull/20514))
> * Fixed an issue where empty JavaScript files were generated for CSS-only entry points. The code now correctly checks if entry modules have JavaScript source types before determining whether to generate a JS file. (by [`@​xiaoxiaojx`](https://github.com/xiaoxiaojx) in [#20454](https://redirect.github.com/webpack/webpack/pull/20454))
> * Do not crash when a referenced chunk is not a runtime chunk. (by [`@​alexander-akait`](https://github.com/alexander-akait) in [#20461](https://redirect.github.com/webpack/webpack/pull/20461))
> * Fix some types. (by [`@​alexander-akait`](https://github.com/alexander-akait) in [#20412](https://redirect.github.com/webpack/webpack/pull/20412))
> * Ensure that missing module error are thrown after the interception handler (if present), allowing module interception to customize the module factory. (by [`@​hai-x`](https://github.com/hai-x) in [#20510](https://redirect.github.com/webpack/webpack/pull/20510))
> * Added `createRequire` support for ECMA modules. (by [`@​stefanbinoj`](https://github.com/stefanbinoj) in [#20497](https://redirect.github.com/webpack/webpack/pull/20497))
> * Added category for CJS reexport dependency to fix issues with ECMA modules. (by [`@​hai-x`](https://github.com/hai-x) in [#20444](https://redirect.github.com/webpack/webpack/pull/20444))
> * Implement immutable bytes for `bytes` import attribute to match tc39 spec. (by [`@​alexander-akait`](https://github.com/alexander-akait) in [#20481](https://redirect.github.com/webpack/webpack/pull/20481))
> * Fixed deterministic search for graph roots regardless of edge order. (by [`@​veeceey`](https://github.com/veeceey) in [#20452](https://redirect.github.com/webpack/webpack/pull/20452))


Changelog

*Sourced from [webpack's changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md).*

> 5.105.3
> -------
>
> ### Patch Changes
>
> * Context modules now handle rejections correctly. (by [`@​alexander-akait`](https://github.com/alexander-akait) in [#20455](https://redirect.github.com/webpack/webpack/pull/20455))
> * Only mark asset modules as side-effect-free when `experimental.futureDefaults` is set to true, so asset-copying use cases (e.g. `import "./x.png"`) won’t break unless the option is enabled. (by [`@​hai-x`](https://github.com/hai-x) in [#20535](https://redirect.github.com/webpack/webpack/pull/20535))
> * Add the missing **webpack\_exports** declaration in certain cases when bundling a JS entry together with non-JS entries (e.g., CSS entry or asset module entry). (by [`@​hai-x`](https://github.com/hai-x) in [#20463](https://redirect.github.com/webpack/webpack/pull/20463))
> * Fixed HMR failure for CSS modules with [`@​import`](https://github.com/import) when exportType !== "link". When exportType is not "link", CSS modules now behave like JavaScript modules and don't require special HMR handling, allowing [`@​import`](https://github.com/import) CSS to work correctly during hot module replacement. (by [`@​xiaoxiaojx`](https://github.com/xiaoxiaojx) in [#20514](https://redirect.github.com/webpack/webpack/pull/20514))
> * Fixed an issue where empty JavaScript files were generated for CSS-only entry points. The code now correctly checks if entry modules have JavaScript source types before determining whether to generate a JS file. (by [`@​xiaoxiaojx`](https://github.com/xiaoxiaojx) in [#20454](https://redirect.github.com/webpack/webpack/pull/20454))
> * Do not crash when a referenced chunk is not a runtime chunk. (by [`@​alexander-akait`](https://github.com/alexander-akait) in [#20461](https://redirect.github.com/webpack/webpack/pull/20461))
> * Fix some types. (by [`@​alexander-akait`](https://github.com/alexander-akait) in [#20412](https://redirect.github.com/webpack/webpack/pull/20412))
> * Ensure that missing module error are thrown after the interception handler (if present), allowing module interception to customize the module factory. (by [`@​hai-x`](https://github.com/hai-x) in [#20510](https://redirect.github.com/webpack/webpack/pull/20510))
> * Added `createRequire` support for ECMA modules. (by [`@​stefanbinoj`](https://github.com/stefanbinoj) in [#20497](https://redirect.github.com/webpack/webpack/pull/20497))
> * Added category for CJS reexport dependency to fix issues with ECMA modules. (by [`@​hai-x`](https://github.com/hai-x) in [#20444](https://redirect.github.com/webpack/webpack/pull/20444))
> * Implement immutable bytes for `bytes` import attribute to match tc39 spec. (by [`@​alexander-akait`](https://github.com/alexander-akait) in [#20481](https://redirect.github.com/webpack/webpack/pull/20481))
> * Fixed deterministic search for graph roots regardless of edge order. (by [`@​veeceey`](https://github.com/veeceey) in [#20452](https://redirect.github.com/webpack/webpack/pull/20452))


Commits

* [`714a0e3`](webpack/webpack@714a0e3) chore(release): new release ([#20448](https://redirect.github.com/webpack/webpack/issues/20448))
* [`c323b39`](webpack/webpack@c323b39) chore(deps-dev): bump nyc from 17.1.0 to 18.0.0 ([#20539](https://redirect.github.com/webpack/webpack/issues/20539))
* [`8a01dfe`](webpack/webpack@8a01dfe) refactor: deduplicate export presence logic in Harmony dependency classes ([#2](https://redirect.github.com/webpack/webpack/issues/2)...
* [`b9fc7b3`](webpack/webpack@b9fc7b3) chore(deps): bump test/test262-cases in the dependencies group ([#20541](https://redirect.github.com/webpack/webpack/issues/20541))
* [`f8a5ac3`](webpack/webpack@f8a5ac3) test: add coverage for nwjs exports condition and CSS modules with webworker ...
* [`59bf024`](webpack/webpack@59bf024) test: add coverage for external script in EnvironmentNotSupportAsyncWarning (...
* [`4c79ac2`](webpack/webpack@4c79ac2) test: add missing coverage for formatLocation and formatSize ([#20534](https://redirect.github.com/webpack/webpack/issues/20534))
* [`4f5c0a8`](webpack/webpack@4f5c0a8) fix: mark asset module as side-effect-free when futureDefaults ([#20535](https://redirect.github.com/webpack/webpack/issues/20535))
* [`87987ca`](webpack/webpack@87987ca) test: add test
* [`67c5aae`](webpack/webpack@67c5aae) test: add configCase for ESM prefetch/preload under neutral target ([#20524](https://redirect.github.com/webpack/webpack/issues/20524))
* Additional commits viewable in [compare view](webpack/webpack@v5.105.2...v5.105.3)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=webpack&package-manager=npm\_and\_yarn&previous-version=5.105.2&new-version=5.105.3)](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  major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore  minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore  ` will remove the ignore condition of the specified dependency and ignore conditions
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.

2 participants