Support complex & array types in native query creation cli utility #742
+160
−51
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
The cli native query creation utility tries to figure out the argument & column types for the native query.
It currently assumes all columns & arguments are scalars, while the configuration supports array types & composite types.
This PR changes the utility to support composite types & array types.
How
We build on the existing system that uses sqlx utilities to describe a query. We get type info, then use the oid from that info to get a type name from the database.
We add an extra step, to check for arrays in the types, and if so get the underlying type before fetching an OID for that type.
We also add mapping to consider the type kind whether composite, scalar, or array, as we write the configuration.
We assume types are scalar if they're not composite nor array types. This matches previous behavior.
We also update a snapshot, which it turns out was wrong until this fix.