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)
| 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 |
| 51 | func 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 |
| 95 | func validateIndexes(ctx *sql.Context, sch sql.Schema, idxDefs sql.IndexDefs) error { |
no test coverage detected