MCPcopy Create free account
hub / github.com/bytebase/bytebase / extractChangedResources

Function extractChangedResources

backend/plugin/parser/tidb/resource_change.go:21–63  ·  view source on GitHub ↗
(database string, _ string, dbMetadata *model.DatabaseMetadata, asts []base.AST, statement string)

Source from the content-addressed store, hash-verified

19}
20
21func extractChangedResources(database string, _ string, dbMetadata *model.DatabaseMetadata, asts []base.AST, statement string) (*base.ChangeSummary, error) {
22 changedResources := model.NewChangedResources(dbMetadata)
23 dmlCount := 0
24 insertCount := 0
25 var sampleDMLs []string
26 for _, ast := range asts {
27 tidbAST, ok := GetTiDBAST(ast)
28 if !ok {
29 return nil, errors.New("expected TiDB AST")
30 }
31 node := tidbAST.Node
32 err := getResourceChanges(database, node, statement, changedResources)
33 if err != nil {
34 return nil, err
35 }
36
37 switch n := node.(type) {
38 case *tidbast.InsertStmt:
39 if len(n.Lists) > 0 {
40 insertCount += len(n.Lists)
41 continue
42 }
43
44 dmlCount++
45 if len(sampleDMLs) < common.MaximumLintExplainSize {
46 sampleDMLs = append(sampleDMLs, trimStatement(n.Text()))
47 }
48 case *tidbast.UpdateStmt, *tidbast.DeleteStmt:
49 dmlCount++
50 if len(sampleDMLs) < common.MaximumLintExplainSize {
51 sampleDMLs = append(sampleDMLs, trimStatement(node.Text()))
52 }
53 default:
54 }
55 }
56
57 return &base.ChangeSummary{
58 ChangedResources: changedResources,
59 DMLCount: dmlCount,
60 SampleDMLS: sampleDMLs,
61 InsertCount: insertCount,
62 }, nil
63}
64
65// addTiDBObjectDatabase records a database-only write target for a non-table object DDL
66// (view/sequence) ONLY when its name carries an explicit database qualifier. An unqualified

Calls 4

NewChangedResourcesFunction · 0.92
GetTiDBASTFunction · 0.85
getResourceChangesFunction · 0.85
trimStatementFunction · 0.70