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

Function assignTableDefs

server/ast/table_def.go:158–181  ·  view source on GitHub ↗

assignTableDefs handles tree.TableDefs nodes for *vitess.DDL targets. This also sorts table defs by whether they're dependent on other table defs evaluating first. Some table defs, such as indexes, affect other defs, such as columns, and they're therefore dependent on columns being handled first.

(ctx *Context, node tree.TableDefs, target *vitess.DDL)

Source from the content-addressed store, hash-verified

156// dependent on other table defs evaluating first. Some table defs, such as indexes, affect other defs, such as columns,
157// and they're therefore dependent on columns being handled first.
158func assignTableDefs(ctx *Context, node tree.TableDefs, target *vitess.DDL) error {
159 sortedNode := make(tree.TableDefs, len(node))
160 copy(sortedNode, node)
161 sort.Slice(sortedNode, func(i, j int) bool {
162 var cmps [2]int
163 for cmpsIdx := range []tree.TableDef{sortedNode[i], sortedNode[j]} {
164 switch sortedNode[i].(type) {
165 case *tree.IndexTableDef:
166 cmps[cmpsIdx] = 1
167 case *tree.UniqueConstraintTableDef:
168 cmps[cmpsIdx] = 2
169 default:
170 cmps[cmpsIdx] = 0
171 }
172 }
173 return cmps[0] < cmps[1]
174 })
175 for i := range sortedNode {
176 if err := assignTableDef(ctx, sortedNode[i], target); err != nil {
177 return err
178 }
179 }
180 return nil
181}

Callers 1

nodeCreateTableFunction · 0.85

Calls 1

assignTableDefFunction · 0.85

Tested by

no test coverage detected