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

Method TypeCheck

postgres/parser/sem/tree/type_check.go:1376–1403  ·  view source on GitHub ↗

TypeCheck implements the Expr interface.

(
	ctx context.Context, semaCtx *SemaContext, desired *types.T,
)

Source from the content-addressed store, hash-verified

1374
1375// TypeCheck implements the Expr interface.
1376func (expr *Array) TypeCheck(
1377 ctx context.Context, semaCtx *SemaContext, desired *types.T,
1378) (TypedExpr, error) {
1379 desiredParam := types.Any
1380 if desired.Family() == types.ArrayFamily {
1381 desiredParam = desired.ArrayContents()
1382 }
1383
1384 if len(expr.Exprs) == 0 {
1385 if desiredParam.Family() == types.AnyFamily {
1386 return nil, errAmbiguousArrayType
1387 }
1388 expr.typ = types.MakeArray(desiredParam)
1389 return expr, nil
1390 }
1391
1392 typedSubExprs, typ, err := TypeCheckSameTypedExprs(ctx, semaCtx, desiredParam, expr.Exprs...)
1393 if err != nil {
1394 return nil, err
1395 }
1396
1397 expr.typ = types.MakeArray(typ)
1398 for i := range typedSubExprs {
1399 expr.Exprs[i] = typedSubExprs[i]
1400 }
1401
1402 return expr, nil
1403}
1404
1405// TypeCheck implements the Expr interface.
1406func (expr *ArrayFlatten) TypeCheck(

Callers

nothing calls this directly

Calls 4

MakeArrayFunction · 0.92
TypeCheckSameTypedExprsFunction · 0.85
FamilyMethod · 0.80
ArrayContentsMethod · 0.80

Tested by

no test coverage detected