The GitHub Actions job "Required Checks" on texera.git/gh-readonly-queue/main/pr-5896-40526b8e1783e7782ce6043e7ca72840b7fbe04d has succeeded. Run started by GitHub user mengw15 (triggered by mengw15).
Head commit for run: 7c135ee0955d539de0f7905b88d8bc4e86cca5a4 / Tanishq Gandhi <[email protected]> feat(workflow-operator): support COUNT(*) in the Aggregate operator (#5896) ### What changes were proposed in this PR? This PR adds `COUNT(*)` support to the **Aggregate** operator, so users can count all rows without selecting a column — useful when there's no natural column to count. The existing **`count`** function now handles both cases via an optional attribute: - **`count` with an empty Attribute** → `COUNT(*)` — counts every row (including rows with nulls) - **`count` with a column** → counts that column's non-null values (unchanged) The Attribute stays **required for every other function** (`sum`, `average`, `min`, `max`, `concat`), enforced by a conditional JSON-schema rule and surfaced in the UI with the usual required marker. **Backend** - `count` counts all rows when the attribute is empty/blank, otherwise counts non-null values of the selected column. - Conditional-required rule: attribute is required unless the function is `count` (validated by Ajv, so an empty attribute on other functions marks the operator invalid). **Frontend** - The Attribute is a normal optional field for `count`; the required marker (red `*`) shows for all other functions. Description hints that an empty attribute counts all rows. **Docs** - Updated the Aggregate operator reference. #### Screenshots <img width="1371" height="603" alt="image" src="https://github.com/user-attachments/assets/b02cca86-aa69-4aff-a197-52ce1c683298" /> <img width="1318" height="618" alt="2C3CB4D9-7FA6-4098-B7F7-293651EEA7D9" src="https://github.com/user-attachments/assets/dd6c9330-c06f-48ed-bf11-70044d432aa6" /> ### Any related issues, documentation, discussions? Closes #3142. ### How was this PR tested? **Automated** (`AggregateOpSpec`, `AggregateOpDescSpec`): - `count` with an empty (or null) attribute counts all rows including nulls. - `count` with a column counts only non-null values. - `getAggregationAttribute` / schema propagation / executor tolerate an empty attribute (no input-column lookup; result typed `INTEGER`). - Existing `sum`/`average`/`min`/`max`/`concat`/`getFinal` behavior unchanged. All Aggregate tests pass: `sbt "WorkflowOperator/testOnly *aggregate*"`. **Manual (UI):** verified `count` + empty Attribute counts all rows (with and without Group By), `count` + a column counts non-null values, and non-count functions with an empty Attribute are invalid (Run disabled). ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Claude Opus 4.8) --------- Co-authored-by: Meng Wang <[email protected]> Report URL: https://github.com/apache/texera/actions/runs/28898253714 With regards, GitHub Actions via GitBox
