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

Function validateIdentifiers

server/analyzer/validate_create_table.go:51–92  ·  view source on GitHub ↗

validateIdentifiers validates the names of all schema elements for validity TODO: we use 64 character as the max length for an identifier, postgres uses 63

(ct *plan.CreateTable)

Source from the content-addressed store, hash-verified

49// validateIdentifiers validates the names of all schema elements for validity
50// TODO: we use 64 character as the max length for an identifier, postgres uses 63
51func validateIdentifiers(ct *plan.CreateTable) error {
52 err := analyzer.ValidateIdentifier(ct.Name())
53 if err != nil {
54 return err
55 }
56
57 colNames := make(map[string]bool)
58 for _, col := range ct.PkSchema().Schema {
59 err = analyzer.ValidateIdentifier(col.Name)
60 if err != nil {
61 return err
62 }
63 lower := strings.ToLower(col.Name)
64 if colNames[lower] {
65 return sql.ErrDuplicateColumn.New(col.Name)
66 }
67 colNames[lower] = true
68 }
69
70 for _, chDef := range ct.Checks() {
71 err = analyzer.ValidateIdentifier(chDef.Name)
72 if err != nil {
73 return err
74 }
75 }
76
77 for _, idxDef := range ct.Indexes() {
78 err = analyzer.ValidateIdentifier(idxDef.Name)
79 if err != nil {
80 return err
81 }
82 }
83
84 for _, fkDef := range ct.ForeignKeys() {
85 err = analyzer.ValidateIdentifier(fkDef.Name)
86 if err != nil {
87 return err
88 }
89 }
90
91 return nil
92}
93
94// validateIndexes validates that the index definitions being created are valid
95func validateIndexes(ctx *sql.Context, sch sql.Schema, idxDefs sql.IndexDefs) error {

Callers 1

validateCreateTableFunction · 0.85

Calls 3

NameMethod · 0.65
PkSchemaMethod · 0.65
IndexesMethod · 0.65

Tested by

no test coverage detected