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.
The idea is to use the recent
pg_type
fields (e.g.typarray
to detect arrays), and::regclass
to parse type names.The previous code had several drawbacks:
Map
for navigating between oids, names, and other information. It is hard to maintain, and it is hard to invalidate the caches.= ANY(current_schemas(..)) order by oid limit 1
might produce wrong oids.The PR uses
where oid = ?::regtype
approach to lookup types with the full support of identifier quoting.We do not need that many cache maps, so the invalidation with the new approach would be easier.
This is an early draft, and it might make sense to make
PgType
into different subclasses. For instance, there might bePgArrayType extends PgType
, andPgArray { PgArrayType getType(); }
.TODO:
schema_path
changes, create, drop statementsint4
PgType
to a top-level, and add subtypes (e.g.PgArrayType
for use inPgArray
)