feat: Support Postgres json_agg/json_build_object aggregate functions - #4798
Open
wilkinson4 wants to merge 1 commit into
Open
wilkinson4 wants to merge 1 commit into
wilkinson4 wants to merge 1 commit into
Conversation
…ions Introduce json_build_object/1 with literal-map input and json_agg/1,2 with aggregate-local ordering. These functions make database-side JSON construction composable in Ecto queries without handwritten SQL fragments. Aggregating related rows into JSON can reduce repeated parent data transferred from the database and avoid application-side grouping and object assembly.
Member
|
Thanks for the PR but we will likely not go down this path given it will lead to |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Introduce
json_build_object/1with literal-map input andjson_agg/1,2with aggregate-local ordering.These functions make database-side JSON construction composable in Ecto queries without handwritten SQL fragments. Aggregating related rows into JSON can reduce repeated parent data transferred from the database and avoid application-side grouping and object assembly.
Sometimes it makes sense not to use preloads for performance reasons. It is nice to not have to use fragments when we don't have to. In these situations, the combined usage of
json_agg+json_build_objectPostgres aggregate functions has been a nice solution for thegroupingproblem when trying to build an array of objects for each row in the results.Example: