docs: explain scanning array_agg (and other PG arrays) into Go slices#2539
Merged
Conversation
Users hitting a query that uses `array_agg` (or any PG array-returning expression) and who try to scan its result into a struct field often see "unable to assign to *[]int64" and assume the feature is missing. The two-step recipe from jackc#1900 — scan the array scalar into a slice with `QueryRow` / slice-typed `Scan`, and compose slice fields into structs via `CollectRows` / `RowToStructByName` — is the canonical answer but isn't currently discoverable from the package docs. Add a short paragraph with both forms to the PostgreSQL Data Types section of `doc.go` so `go doc pgx` / pkg.go.dev surface the recipe. Closes jackc#1900 Signed-off-by: Ali <alliasgher123@gmail.com>
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.
Description
Users hitting a query that uses
array_agg(or any PG array-returning expression) and who try to scan its result into a Go slice often seescan error: can't scan into dest[0]: unable to assign to *[]int64and assume the feature isn't supported. The two-step recipe from #1900 — scan the array scalar into a slice withQueryRow/ slice-typedScan, then compose slice fields into structs viaCollectRows+RowToStructByName— is the canonical answer but isn't currently discoverable from the package docs.This PR adds a short paragraph with both forms to the PostgreSQL Data Types section of
doc.gosogo doc pgx/ pkg.go.dev surface the recipe. Docs-only change; no behavior impact.Closes #1900