MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / renderMerge

Function renderMerge

pkg/formatter/render.go:948–1047  ·  view source on GitHub ↗
(m *ast.MergeStatement, opts ast.FormatOptions)

Source from the content-addressed store, hash-verified

946}
947
948func renderMerge(m *ast.MergeStatement, opts ast.FormatOptions) string {
949 if m == nil {
950 return ""
951 }
952 f := newNodeFormatter(opts)
953 sb := f.sb
954
955 sb.WriteString(f.kw("MERGE INTO"))
956 sb.WriteString(" ")
957 sb.WriteString(tableRefSQL(&m.TargetTable, f))
958 if m.TargetAlias != "" {
959 sb.WriteString(" ")
960 sb.WriteString(m.TargetAlias)
961 }
962
963 sb.WriteString(f.clauseSep())
964 sb.WriteString(f.kw("USING"))
965 sb.WriteString(" ")
966 sb.WriteString(tableRefSQL(&m.SourceTable, f))
967 if m.SourceAlias != "" {
968 sb.WriteString(" ")
969 sb.WriteString(m.SourceAlias)
970 }
971
972 sb.WriteString(f.clauseSep())
973 sb.WriteString(f.kw("ON"))
974 sb.WriteString(" ")
975 sb.WriteString(exprSQL(m.OnCondition))
976
977 for _, when := range m.WhenClauses {
978 sb.WriteString(f.clauseSep())
979 sb.WriteString(f.kw("WHEN"))
980 sb.WriteString(" ")
981 switch when.Type {
982 case "MATCHED":
983 sb.WriteString(f.kw("MATCHED"))
984 case "NOT_MATCHED":
985 sb.WriteString(f.kw("NOT MATCHED"))
986 case "NOT_MATCHED_BY_SOURCE":
987 sb.WriteString(f.kw("NOT MATCHED BY SOURCE"))
988 default:
989 sb.WriteString(f.kw(when.Type))
990 }
991 if when.Condition != nil {
992 sb.WriteString(" ")
993 sb.WriteString(f.kw("AND"))
994 sb.WriteString(" ")
995 sb.WriteString(exprSQL(when.Condition))
996 }
997 sb.WriteString(" ")
998 sb.WriteString(f.kw("THEN"))
999
1000 if when.Action != nil {
1001 sb.WriteString(" ")
1002 switch when.Action.ActionType {
1003 case "UPDATE":
1004 sb.WriteString(f.kw("UPDATE"))
1005 sb.WriteString(" ")

Callers 1

FormatStatementFunction · 0.85

Calls 6

newNodeFormatterFunction · 0.85
kwMethod · 0.80
clauseSepMethod · 0.80
resultMethod · 0.80
tableRefSQLFunction · 0.70
exprSQLFunction · 0.70

Tested by

no test coverage detected