The one column an aggregate summarises, or null when it summarises anything more complex.
An aggregate carries an expression and a value, never field metadata, so the column has to be
read out of the expression: MIN(IntakeDate) and MAX([Intake Date]) name one column, while
COUNT(*), SUM(Amount) + 1 and MIN(YEAR(IntakeDate)) do not. When the expression gives
nothing, the column the aggregate is pinned under is the fallback.
Parsed positionally rather than with a pattern: a regular expression over user-authored text is
where backtracking blow-ups live (CodeQL js/polynomial-redos).
The one column an aggregate summarises, or null when it summarises anything more complex.
An aggregate carries an expression and a value, never field metadata, so the column has to be read out of the expression:
MIN(IntakeDate)andMAX([Intake Date])name one column, whileCOUNT(*),SUM(Amount) + 1andMIN(YEAR(IntakeDate))do not. When the expression gives nothing, the column the aggregate is pinned under is the fallback.Parsed positionally rather than with a pattern: a regular expression over user-authored text is where backtracking blow-ups live (CodeQL js/polynomial-redos).