Remove unnecessary DISTINCT ON
expressions from introspection SQL.
#260
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.
What
There are two:
These are both unnecessary.
This work was inspired by CockroachDB failing to respect ordering within CTEs.
How
The first, selecting only one relation per name, was there to avoid having to deal with multiple relations of the same name in distinct schemas, but we now support schemas (and prefix all relations with their schema name), so this is unnecessary and possibly dangerous.
The second, selecting only one aggregate function per input type, is not necessary because we only support aggregate functions which take a single argument, and therefore there can only be one per input type anyway, i.e. you cannot have two aggregate functions of the same name with the same input type(s) and different return types (return type polymorphism) in PostgreSQL.
We therefore simplify these queries to avoid having to use
DISTINCT ON
at all.