MCPcopy Create free account
hub / github.com/cockroachdb/cockroachdb-parser / processCollationOnType

Function processCollationOnType

pkg/sql/sem/tree/create.go:540–566  ·  view source on GitHub ↗
(
	name Name, ref ResolvableTypeReference, c ColumnCollation,
)

Source from the content-addressed store, hash-verified

538}
539
540func processCollationOnType(
541 name Name, ref ResolvableTypeReference, c ColumnCollation,
542) (*types.T, error) {
543 // At the moment, only string types can be collated. User defined types
544 // like enums don't support collations, so check this at parse time.
545 typ, ok := GetStaticallyKnownType(ref)
546 if !ok {
547 return nil, pgerror.Newf(pgcode.DatatypeMismatch,
548 "COLLATE declaration for non-string-typed column %q", name)
549 }
550 switch typ.Family() {
551 case types.StringFamily:
552 return types.MakeCollatedString(typ, string(c)), nil
553 case types.CollatedStringFamily:
554 return nil, pgerror.Newf(pgcode.Syntax,
555 "multiple COLLATE declarations for column %q", name)
556 case types.ArrayFamily:
557 elemTyp, err := processCollationOnType(name, typ.ArrayContents(), c)
558 if err != nil {
559 return nil, err
560 }
561 return types.MakeArray(elemTyp), nil
562 default:
563 return nil, pgerror.Newf(pgcode.DatatypeMismatch,
564 "COLLATE declaration for non-string-typed column %q", name)
565 }
566}
567
568// NewColumnTableDef constructs a column definition for a CreateTable statement.
569func NewColumnTableDef(

Callers 1

NewColumnTableDefFunction · 0.85

Calls 6

NewfFunction · 0.92
MakeCollatedStringFunction · 0.92
MakeArrayFunction · 0.92
GetStaticallyKnownTypeFunction · 0.85
FamilyMethod · 0.80
ArrayContentsMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…