MCPcopy Create free account
hub / github.com/actiontech/dtle / Enter

Method Enter

driver/oracle/extractor/sql_parse.go:41–87  ·  view source on GitHub ↗
(in ast.Node)

Source from the content-addressed store, hash-verified

39}
40
41func (v *Stmt) Enter(in ast.Node) (ast.Node, bool) {
42 if node, ok := in.(*ast.TableName); ok {
43 v.Schema = node.Schema.String()
44 v.Table = node.Name.String()
45 }
46
47 if node, ok := in.(*ast.UpdateStmt); ok {
48 v.Operation = common.UpdateDML
49 v.Before = make(map[string]interface{}, 1)
50 if node.Where != nil {
51 if err := beforeData(v.logger, node.Where, v.Before); err != nil {
52 v.Error = errors.Wrap(err, "update sql restore column failed")
53 return node, true
54 }
55 }
56 }
57
58 if node, ok := in.(*ast.InsertStmt); ok {
59 v.Operation = common.InsertDML
60 v.Data = make(map[string]interface{}, 1)
61 for i, col := range node.Columns {
62 v.Columns = append(v.Columns, StringsBuilder("`", col.String(), "`"))
63 for _, lists := range node.Lists {
64 var columnValue strings.Builder
65 flags := format.RestoreStringWithoutDefaultCharset
66 err := lists[i].Restore(format.NewRestoreCtx(flags, &columnValue))
67 if err != nil {
68 v.Error = errors.Wrap(err, "inserl sql restore column value failed")
69 return in, true
70 }
71 v.NewColumnValues = append(v.NewColumnValues, columnsValueConverter(columnValue.String()))
72 }
73 }
74 }
75
76 if node, ok := in.(*ast.DeleteStmt); ok {
77 v.Operation = common.DeleteDML
78 v.Before = make(map[string]interface{}, 1)
79 if node.Where != nil {
80 if err := beforeData(v.logger, node.Where, v.Before); err != nil {
81 v.Error = errors.Wrap(err, "delete sql restore column failed")
82 return in, true
83 }
84 }
85 }
86 return in, false
87}
88
89func (v *Stmt) Leave(in ast.Node) (ast.Node, bool) {
90 return in, true

Callers

nothing calls this directly

Calls 4

beforeDataFunction · 0.85
StringsBuilderFunction · 0.85
columnsValueConverterFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected