Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

intent: coalesced roll-ups on the same (entity, via) share one query - a member's where: is silently dropped

Aperta
#7,905 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
java
Ambito
backend

Direzione di ricerca

Start by reading the coalesced roll-up generation path associated with #6187 and the where: handling added in #7542, then inspect EmployeeTimesheetProjectTimesheetRollupOnUpdate.java and its generated output. Reproduce with the two roll-ups in the issue and check whether each member's filter is applied or generation rejects differing filters with both roll-ups named; done means the filter cannot silently become a no-op.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

14.88.0 (also unchanged in 14.90.0). Roll-ups that share (entity, via) are coalesced into ONE handler per event (#6187). That handler queries the child rows with ONE Criteria. A roll-up where: (#7542) therefore applies only if it is on the member the shared query is built from. Every other member's filter is silently dropped.

Reproduction (base-timesheets, generated on 14.88.0):

rollups:
  - { name: timesheetHours,         entity: EmployeeTimesheet, via: ProjectTimesheet, field: totalHours,    op: sum, of: totalHours }
  - { name: timesheetApprovedHours, entity: EmployeeTimesheet, via: ProjectTimesheet, field: approvedHours, op: sum, of: totalHours,
      where: [{ field: Status, op: eq, value: APPROVED }] }

The .glue carries filter: [{op: eq, property: Status, value: 3}] on the ApprovedHours entries. The generated EmployeeTimesheetProjectTimesheetRollupOnUpdate.java, however, reads

rows = new EmployeeTimesheetRepository().findAll(Criteria.create().eq("ProjectTimesheet", entity.ProjectTimesheet));

and sums ApprovedHours over all rows, DRAFT included, so approvedHours == totalHours. Generation reports nothing: generate 200, guardrail and parity clean.

If the filtered member came first, the opposite would happen: the UNfiltered totals would silently become approved-only.

Expected, either of:

  • each member of a coalesced group filters its own rows (one query per distinct filter, or filter in Java per member), or
  • the parser refuses two roll-ups on the same (entity, via) whose where: differ, naming both.

The second is the minimum, so that a declared filter never becomes a no-op.

Found while building budget-versus-actual for BusinessIntents/base-projects + base-timesheets. The module works around it with a separate via relation, so every member of that group carries the same filter.

Lingua principale
Java
Stelle
278
Fork
97
Merge medio
17h 19m
PR unite (30g)
261

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di eclipse-dirigible/dirigible

Tutte le issue di eclipse-dirigible/dirigible

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.