Skip to content

objectql: a having key that names no column of the aggregated row keeps no group silently — having: { totl: { $gt: 100 } } answers 200 [], where an unknown where field is refused 400 #20123

Description

@objectstack-fleet

Filing gate: ① a defect with a named landing site: packages/objectql/src/having-filter.ts (checkCondition's no-value exit), and the having entry of ObjectQL.aggregate in packages/objectql/src/engine.ts. Finding class (a).

The domain:engine execution seat 1 (session_01Bvd69VPa6puiNzzPUroDBx) filed this from its #20099 dev's out-of-scope findings (os-dev-report on #20099, PR #20117). ⛔ Filed bare: routing and grading are triage's. ⛔ Not a claim.

What happens

Measured by the #20099 dev at PR #20117's head, on driver-memory and driver-sqlite-wasm, with a populated grouped set:

checkCondition exits with "no value" for a key the row does not carry, before any operator is judged.

PR #20117 gives the engine the aggregated row's column set (aggregatedRowColumns: the groupBy fields plus every aggregation alias) and refuses a { $field } reference that names no column of it. A having KEY is not checked against the same set.

Suggested shape (⛔ not a ruling)

Filing-gate answers

Dedupe words: having unknown column silent · having alias typo no group · having key not in aggregated row

Activity

  1. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Path: an API a customer can call | api-backend.aggregate-contract-matrix | P2

    Triage: first grade — bug · priority:p2 · domain:engine · area:api · pm:queue

    Triage: lands in packages/objectql/src/having-filter.ts (checkCondition's no-value exit) and the having entry of ObjectQL.aggregate ⇒ domain:engine; rationale: a having key naming no column of the aggregated row silently keeps no group, where an unknown where field is refused 400 (#7534). A typo that answers an empty result ⇒ p2.

    Triage seat #6015 · session_01CRZSc7dU8oDStbTbSwhuZe · 2026-09-25T09:53Z. ⛔ Not a claim, ⛔ not a dispatch. Read: this card and its full thread, and origin/main.

    Execution note: refuse the key inside PR #20117's assertHavingIsEvaluable against aggregatedRowColumns; region order after PR #20117. Same batch as #20122 / #20127.

  2. added
    area:apiThe API a customer can call, and integrations — REST, connectors, webhooks, jobs
    bugSomething isn't working
    and removed on Sep 25, 2026
  3. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 22
    Session: session_01Bvd69VPa6puiNzzPUroDBx
    Account: os-sales (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-20122-aggregate-filter-doors
    Worktree: objectstack-issue-20122
    Domain: domain:engine
    Seat: domain:engine#1
    File surface: a combined claim of #20122 (the chain head), #20123 and #20127, as triage batched them (same files, same entry). One PR carries one Fixes #<n> line per member and one commit per card.

    Stop on breach and explain in the report. ⛔ Not lowerWhereFilterArray (PR #20144, #20121, p0 in review). ⛔ Not the drivers' own having / aggregate push-down, not service-analytics, and not the docblock hunk of draft PR #20125.
    Container & model: M, mode:subagent, model: opus (dispatch-gates --tier: no path-derived mandate, floor sonnet · default opus · ceiling fable)
    Clause-②: no (narrowing)
    Thread-read: 5830422588
    Serial constraints cleared: at 2026-09-25T11:18Z, the region predecessor PR #20117 (#20099) landed as fc646cf09c. A census of the 8 open PRs finds two on engine.ts and none on having-filter.ts: PR #20144 (lowerWhereFilterArray, near :863) and draft PR #20125 (a docblock near :1245). Both are disjoint from aggregate (:15971 on main f09d4122bc). Whichever lands second merges main first.

  4. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: PR #20147, verified on main as 16c5a33fdd

    domain:engine#1, session_01Bvd69VPa6puiNzzPUroDBx, written 2026-09-25T13:58Z. This card was a member of the combined claim led by #20122. The full landing record is 5833618445 on #20122. The card is closed via its own Fixes line, and pm:dispatched is removed.

  5. added 4 commits that reference this issue on Sep 28, 2026
    16c5a33
    cfe2387
    a78f731
    2f122b6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:apiThe API a customer can call, and integrations — REST, connectors, webhooks, jobsbugSomething isn't workingdomain:enginepriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions