Skip to content

[bugfix] #4958 & #4810 #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: develop-7.x.x
Choose a base branch
from

Conversation

Robin6939
Copy link
Contributor

@Robin6939 Robin6939 commented Jul 7, 2025

Description:

Issues:
Closes eXist-db/exist#4958
Closes eXist-db/exist#4810

What was wrong

The general comparisons engine only returns a node set for a comparison if the comparison is not empty.
If it is empty, it doesn’t return false, which is fine in most cases but can lead to issues like the ones I’ve fixed in this PR.

What I’ve done is: whenever an empty node set would be returned, I simply return false instead. This works in most cases, but not with the predicate engine. That’s because when general comparison is used, the context sequence indicates that the execution mode for the predicate engine must be set to "node" — i.e., it expects a node set instead of a boolean. I’ve made the necessary changes to handle that as well. I’m aware this might not be the ideal solution, but any alternative could would require significant changes across many functions.

Reference:

XPath 3.1 is explicit: a general comparison must return true or false, never a node sequence. See: 3.7.2 General comparison

Tests:

Added test cases for the same

Copy link

cla-bot bot commented Jul 7, 2025

Thank you for your pull request and welcome to our community. We require contributors to sign our Contributor License Agreement, and we don't seem to have the users @Robin6939 on file. In order for us to review and merge your code, please contact the project maintainers to get yourself added.

Copy link

cla-bot bot commented Jul 7, 2025

Thank you for your pull request and welcome to our community. We require contributors to sign our Contributor License Agreement, and we don't seem to have the users @Robin6939 on file. In order for us to review and merge your code, please contact the project maintainers to get yourself added.

@Robin6939 Robin6939 changed the title [bugfix] #4958 return false() from empty nodeSetCompare [bugfix] #4958 & #4810 Jul 7, 2025
Copy link

cla-bot bot commented Jul 8, 2025

Thank you for your pull request and welcome to our community. We require contributors to sign our Contributor License Agreement, and we don't seem to have the users @Robin6939 on file. In order for us to review and merge your code, please contact the project maintainers to get yourself added.

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.

1 participant