Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

checks: a relation kept from the stored row (calculatedActionOnUpdate keep) is read from the payload - leaving it out bypasses agree/forbidWhen

Open
#7,831 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
22/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
java
Domain
backend

Research direction

Start from the generated controller's row-level check path, where agree, forbidWhen and compare read the payload, and from SalesInvoiceProformaKeepAction, which restores Proforma after the check runs. Look at how #7673 made checks read stored system-owned fields, and extend that to kept, readOnly columns. Done when a PUT that omits a kept relation is refused by the same agree: [Proforma, Customer] check as one that echoes it.

Written by the indexing model from the issue text.

Description

A row-level check (agree, forbidWhen, compare) is evaluated by the generated controller on the PAYLOAD. A relation that the record keeps from its stored row on update (calculatedActionOnUpdate: <Keep>Action, the "system-written, never picked" pattern) can be left out of the payload. The check then sees it unset and skips, and the keep action restores it right after. So the check never sees the value the row is saved with.

Found while fixing BusinessIntents/base-sales-invoices#205 on 14.81.0 (hunt run 37984537906). SalesInvoice.Proforma is kept by SalesInvoiceProformaKeepAction, and the new check is agree: [Proforma, Customer] onProperty Customer (#7677):

PUT SalesInvoice/27 {...row, Customer: <other>}                  -> 400 "bills the proforma's customer"   (Proforma echoed)
PUT SalesInvoice/27 {...row, Proforma: null, Customer: <other>}  -> 200, stored Proforma 2 + the other customer

Expected: the checks read the value the row is SAVED with. For a kept, readOnly or system-owned column that is the stored value, not the payload's absence, in the same way #7673 made checks read stored system-owned fields. Then the second PUT is refused like the first.

Dominant language
Java
Stars
278
Forks
97
Avg merge
18h 57m
Merged PRs (30d)
249

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from eclipse-dirigible/dirigible

All issues in eclipse-dirigible/dirigible

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.