Fix bug preventing orderedAggregate
and distinctAggregator
from being used together (one approach)
#577
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains two commits.
The first commit adds a (failing) test case demonstrating the inability to combine
orderedAggregate
anddistinctAggregator
together, even in the limited cases allowed by PostgreSQL. The problem is that PostgreSQL only allows this if the expressions given in theORDER BY
clause match the expressions given as arguments to the aggregation function.The second commit fixes this bug. It does so by adding
Eq
andOrd
constraints toPrimExpr
and using them to detect identical expressions anywhere within theAggregate
, and when we rename the expressions we maintain aMap
of already-renamed expressions such that identical expressions will be renamed to the same symbol, fulfilling PostgreSQL's restriction.