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

Function nodeUpdate

server/ast/update.go:25–94  ·  view source on GitHub ↗

nodeUpdate handles *tree.Update nodes.

(ctx *Context, node *tree.Update)

Source from the content-addressed store, hash-verified

23
24// nodeUpdate handles *tree.Update nodes.
25func nodeUpdate(ctx *Context, node *tree.Update) (update *vitess.Update, err error) {
26 if node == nil {
27 return nil, nil
28 }
29 ctx.Auth().PushAuthType(auth.AuthType_UPDATE)
30 defer ctx.Auth().PopAuthType()
31
32 var returningExprs vitess.SelectExprs
33 if returning, ok := node.Returning.(*tree.ReturningExprs); ok {
34 returningExprs, err = nodeSelectExprs(ctx, tree.SelectExprs(*returning))
35 if err != nil {
36 return nil, err
37 }
38 }
39
40 with, err := nodeWith(ctx, node.With)
41 if err != nil {
42 return nil, err
43 }
44 table, err := nodeTableExpr(ctx, node.Table)
45 if err != nil {
46 return nil, err
47 }
48
49 tableExprs := vitess.TableExprs{table}
50 if len(node.From) > 0 {
51 vitessTableExprs := make(vitess.TableExprs, len(node.From))
52 for i, tableExpr := range node.From {
53 vitessTableExpr, err := nodeTableExpr(ctx, tableExpr)
54 if err != nil {
55 return nil, err
56 }
57 vitessTableExprs[i] = vitessTableExpr
58 }
59
60 tableExprs = []vitess.TableExpr{
61 &vitess.JoinTableExpr{
62 Join: vitess.JoinStr,
63 LeftExpr: buildJoinTableExpressionTree(ctx, vitessTableExprs),
64 RightExpr: table,
65 },
66 }
67 }
68
69 exprs, err := nodeUpdateExprs(ctx, node.Exprs)
70 if err != nil {
71 return nil, err
72 }
73 where, err := nodeWhere(ctx, node.Where)
74 if err != nil {
75 return nil, err
76 }
77 orderBy, err := nodeOrderBy(ctx, node.OrderBy)
78 if err != nil {
79 return nil, err
80 }
81 limit, err := nodeLimit(ctx, node.Limit)
82 if err != nil {

Callers 1

ConvertFunction · 0.85

Calls 12

SelectExprsTypeAlias · 0.92
nodeSelectExprsFunction · 0.85
nodeWithFunction · 0.85
nodeTableExprFunction · 0.85
nodeUpdateExprsFunction · 0.85
nodeWhereFunction · 0.85
nodeOrderByFunction · 0.85
nodeLimitFunction · 0.85
PushAuthTypeMethod · 0.80
AuthMethod · 0.80
PopAuthTypeMethod · 0.80

Tested by

no test coverage detected