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

Function extractChangedResources

backend/plugin/parser/pg/resource_change.go:20–214  ·  view source on GitHub ↗
(database string, currentSchema string, dbMetadata *model.DatabaseMetadata, asts []base.AST, _ string)

Source from the content-addressed store, hash-verified

18}
19
20func extractChangedResources(database string, currentSchema string, dbMetadata *model.DatabaseMetadata, asts []base.AST, _ string) (*base.ChangeSummary, error) {
21 changedResources := model.NewChangedResources(dbMetadata)
22 searchPath := dbMetadata.GetSearchPath()
23 if currentSchema != "" {
24 searchPath = []string{currentSchema}
25 }
26 if len(searchPath) == 0 {
27 searchPath = []string{"public"}
28 }
29
30 if len(asts) == 0 {
31 return &base.ChangeSummary{
32 ChangedResources: changedResources,
33 DMLCount: 0,
34 SampleDMLS: []string{},
35 InsertCount: 0,
36 }, nil
37 }
38
39 var dmlCount, insertCount int
40 var sampleDMLs []string
41
42 for _, unifiedAST := range asts {
43 omniAST, ok := unifiedAST.(*OmniAST)
44 if !ok {
45 return nil, errors.New("expected OmniAST for PostgreSQL")
46 }
47 if omniAST.Node == nil {
48 continue
49 }
50
51 switch n := omniAST.Node.(type) {
52 case *ast.VariableSetStmt:
53 if strings.EqualFold(n.Name, "search_path") && n.Args != nil {
54 var newSearchPath []string
55 for _, arg := range n.Args.Items {
56 if ac, ok := arg.(*ast.A_Const); ok {
57 if s, ok := ac.Val.(*ast.String); ok {
58 newSearchPath = append(newSearchPath, s.Str)
59 }
60 }
61 }
62 if len(newSearchPath) > 0 {
63 searchPath = newSearchPath
64 }
65 }
66
67 case *ast.CreateStmt:
68 if n.Relation != nil {
69 db, schema, table := extractRangeVarNames(n.Relation, database, searchPath)
70 changedResources.AddTable(db, schema, &storepb.ChangedResourceTable{Name: table}, false)
71 }
72
73 case *ast.DropStmt:
74 objType := ast.ObjectType(n.RemoveType)
75 switch objType {
76 case ast.OBJECT_INDEX:
77 handleDropIndexOmni(n, database, searchPath, dbMetadata, changedResources)

Calls 9

AddTableMethod · 0.95
NewChangedResourcesFunction · 0.92
extractRangeVarNamesFunction · 0.85
handleDropIndexOmniFunction · 0.85
handleDropTableOmniFunction · 0.85
getOmniStatementTextFunction · 0.85
omniIntoClauseFunction · 0.85
GetSearchPathMethod · 0.45
SearchObjectMethod · 0.45