MCPcopy Create free account
hub / github.com/dolthub/doltgresql / ResolveType

Function ResolveType

postgres/parser/sem/tree/type_name.go:137–164  ·  view source on GitHub ↗

ResolveType converts a ResolvableTypeReference into a *types.T.

(
	ctx context.Context, ref ResolvableTypeReference, resolver TypeReferenceResolver,
)

Source from the content-addressed store, hash-verified

135
136// ResolveType converts a ResolvableTypeReference into a *types.T.
137func ResolveType(
138 ctx context.Context, ref ResolvableTypeReference, resolver TypeReferenceResolver,
139) (*types.T, error) {
140 switch t := ref.(type) {
141 case *types.T:
142 return t, nil
143 case *ArrayTypeReference:
144 typ, err := ResolveType(ctx, t.ElementType, resolver)
145 if err != nil {
146 return nil, err
147 }
148 return types.MakeArray(typ), nil
149 case *UnresolvedObjectName:
150 if resolver == nil {
151 // If we don't have a resolver, we can't actually resolve this
152 // name into a type.
153 return nil, pgerror.Newf(pgcode.UndefinedObject, "type %q does not exist", t)
154 }
155 return resolver.ResolveType(ctx, t)
156 case *OIDTypeReference:
157 if resolver == nil {
158 return nil, pgerror.Newf(pgcode.UndefinedObject, "type OID %d does not exist", t.OID)
159 }
160 return resolver.ResolveTypeByOID(ctx, t.OID)
161 default:
162 return nil, errors.AssertionFailedf("unknown resolvable type reference type %s", t)
163 }
164}
165
166// FormatTypeReference formats a ResolvableTypeReference.
167func (ctx *FmtCtx) FormatTypeReference(ref ResolvableTypeReference) {

Callers 3

TypeCheckMethod · 0.70
TypeCheckMethod · 0.70
TypeCheckMethod · 0.70

Calls 4

MakeArrayFunction · 0.92
NewfFunction · 0.92
ResolveTypeMethod · 0.65
ResolveTypeByOIDMethod · 0.65

Tested by

no test coverage detected