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

Function assignTableDef

server/ast/table_def.go:31–133  ·  view source on GitHub ↗

assignTableDef handles tree.TableDef nodes for *vitess.DDL targets. Some table defs, such as indexes, affect other defs, such as columns, and they're therefore dependent on columns being handled first. It is up to the caller to ensure that all defs have been ordered properly before calling. assignTa

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

Source from the content-addressed store, hash-verified

29// ensure that all defs have been ordered properly before calling. assignTableDefs handles the sort for you, so this
30// notice is only relevant when individually calling assignTableDef.
31func assignTableDef(ctx *Context, node tree.TableDef, target *vitess.DDL) error {
32 switch node := node.(type) {
33 case *tree.CheckConstraintTableDef:
34 if target.TableSpec == nil {
35 target.TableSpec = &vitess.TableSpec{}
36 }
37 expr, err := nodeExpr(ctx, node.Expr)
38 if err != nil {
39 return err
40 }
41 target.TableSpec.Constraints = append(target.TableSpec.Constraints, &vitess.ConstraintDefinition{
42 Name: string(node.Name),
43 Details: &vitess.CheckConstraintDefinition{
44 Expr: expr,
45 Enforced: true,
46 },
47 })
48 return nil
49 case *tree.ColumnTableDef:
50 if target.TableSpec == nil {
51 target.TableSpec = &vitess.TableSpec{}
52 }
53 columnDef, err := nodeColumnTableDef(ctx, node)
54 if err != nil {
55 return err
56 }
57 target.TableSpec.AddColumn(columnDef)
58 if node.References.Table != nil {
59 fkDef, err := nodeForeignKeyDefinitionFromColumnTableDef(ctx, node.Name, node)
60 if err != nil {
61 return err
62 }
63 target.TableSpec.Constraints = append(target.TableSpec.Constraints, &vitess.ConstraintDefinition{
64 Name: string(node.References.ConstraintName),
65 Details: fkDef,
66 })
67 }
68 return nil
69 case *tree.ForeignKeyConstraintTableDef:
70 if target.TableSpec == nil {
71 target.TableSpec = &vitess.TableSpec{}
72 }
73 fkDef, err := nodeForeignKeyConstraintTableDef(ctx, node, false)
74 if err != nil {
75 return err
76 }
77 target.TableSpec.Constraints = append(target.TableSpec.Constraints, &vitess.ConstraintDefinition{
78 Name: string(node.Name),
79 Details: fkDef,
80 })
81 return nil
82 case *tree.IndexTableDef:
83 if target.TableSpec == nil {
84 target.TableSpec = &vitess.TableSpec{}
85 }
86 indexDef, err := nodeIndexTableDef(ctx, node)
87 if err != nil {
88 return err

Callers 1

assignTableDefsFunction · 0.85

Calls 9

SliceToMapValuesFunction · 0.92
nodeExprFunction · 0.85
nodeColumnTableDefFunction · 0.85
nodeIndexTableDefFunction · 0.85
nodeTableNameFunction · 0.85
ErrorfMethod · 0.65
StringMethod · 0.65

Tested by

no test coverage detected