Skip to content

The queue note named the wrong reason the isnull filter was dead - #1800

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/queue-note-names-the-real-mechanism
Sep 4, 2026
Merged

The queue note named the wrong reason the isnull filter was dead#1800
rubenvdlinde merged 1 commit into
developmentfrom
fix/queue-note-names-the-real-mechanism

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

The Queue page's note said assignee_isnull=true fails because SearchQueryHandler::cleanQuery compares the value with === true.

That is a real defect in that method, and it is not why the filter was dead.

cleanQuery() has no production callers at all. What normalises a suffixed parameter is buildSearchQuery()'s underscore-to-nested reconstruction, and isnull was missing from MagicSearchHandler::COMPARISON_OPERATORS — so the filter contributed no condition rather than an inverted one.

Measured over HTTP: both _isnull=true and _isnull=false returned 0 rows. That is the tell. An inverted operator would have answered correctly for one of them.

Fixed in openregister isnull-filter-operator. The IS NULL sentinel stays here because it also works on instances that do not yet carry that change.

No behaviour change

The filter itself was, and remains, correct. Verified on a live instance seeded to be discriminating: 9 cases, 3 assigned, 2 closed, queue = 4.

Documentation only.

…as dead

The Queue page's note said `assignee_isnull=true` fails because
`SearchQueryHandler::cleanQuery` compares the value with `=== true`. That is a
real defect in that method, and it is not why the filter was dead.

`cleanQuery()` has no production callers at all. What normalises a suffixed
parameter is `buildSearchQuery()`'s underscore-to-nested reconstruction, and
`isnull` was missing from `MagicSearchHandler::COMPARISON_OPERATORS` — so the
filter contributed no condition rather than an inverted one. Measured over HTTP:
both `_isnull=true` and `_isnull=false` returned 0 rows, which is the tell. An
inverted operator would have answered correctly for one of them.

Fixed in openregister `isnull-filter-operator`. The `IS NULL` sentinel stays here
because it also works on instances that do not yet carry that change.

No behaviour change: the filter itself was, and remains, correct.
@rubenvdlinde
rubenvdlinde merged commit c5c045f into development Sep 4, 2026
32 of 34 checks passed
@rubenvdlinde
rubenvdlinde deleted the fix/queue-note-names-the-real-mechanism branch September 4, 2026 07:15
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ 37ddc1e

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
check-vue3-compile
test-l10n
format
check-schema-l10n
check-l10n-js
composer ✅ 106/106
npm ✅ 540/540
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman ⏭️
Playwright ⏭️ deferred — runs on the promotion into beta/main, not on a pull request into development
Hydra gates

Quality workflow — 2026-09-04 09:00 UTC

Download the full PDF report from the workflow artifacts.

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