-
Couldn't load subscription status.
- Fork 108
Open
Description
Summary
Wrapping an aggregate in another expression (e.g., coalesce(count(item.property), 0)) throws during compilation. Using the plain aggregate (count(item.property)) succeeds. Oddly, the wrapped form does work inside a live query, so behavior is inconsistent.
Repro
Building the subquery outside of the hook threw the error:
const vehicleDispatchCountSubquery = new Query()
.from({ vehicleDispatch: vehicleDispatchCollection })
.groupBy(({ vehicleDispatch }) => vehicleDispatch.dispatchId)
.select(({ vehicleDispatch }) => ({
dispatchId: vehicleDispatch.dispatchId,
vehicleDispatchCount: coalesce(count(vehicleDispatch.id), 0),
}))However, just using count(vehicleDispatch.id) without coalesce no longer throws the error.
Alternatively, within a useLiveQuery() nesting works without error:
export const useDispatchSidebarData = (date: string) =>
useLiveQuery(
q => {
const vdCountSubquery = q
.from({ vehicleDispatch: vehicleDispatchCollection })
.groupBy(({ vehicleDispatch }) => vehicleDispatch.dispatchId)
.select(({ vehicleDispatch }) => ({
dispatchId: vehicleDispatch.dispatchId,
vehicleDispatchCount: coalesce(count(vehicleDispatch.id)),
}))
.distinct()
return q
.from({ dispatch: dispatchCollection })
.where(({ dispatch }) => eq(dispatch.date, date))
.leftJoin({ vdCount: vdCountSubquery }, ({ dispatch, vdCount }) => eq(dispatch.id, vdCount.dispatchId))
.select(({ dispatch, vdCount }) => ({
...dispatch,
vehicleDispatchCount: vdCount?.vehicleDispatchCount,
}))
},
[date]
)Error
QueryCompilationError: Unknown expression type: agg
at compileExpressionInternal (…/chunk-TT3G3ME3.js:703:13)
at …/chunk-TT3G3ME3.js:751:14
at Array.map (<anonymous>)
at compileFunction (…/chunk-TT3G3ME3.js:750:34)
Environment
Running in docker -> node:20-alpine -> node v20.19.5
{
"@electric-sql/client": "^1.1.0",
"@electric-sql/react": "^1.0.15",
...
"@tanstack/electric-db-collection": "^0.1.38",
"@tanstack/query-core": "^5.90.5",
"@tanstack/query-db-collection": "^0.2.36",
"@tanstack/react-db": "^0.1.36",
...
"zod": "^4.1.12"
"react": "^19.2.0",
"react-dom": "^19.2.0",
"vite": "^7.1.12",
...
"babel-plugin-react-compiler": "^1.0.0",
}
Possible Cause
We may not yet support an aggregate expression wrapped by other expressions. Do open an issue, we should fix that.
Metadata
Metadata
Assignees
Labels
No labels