MCPcopy
hub / github.com/go-gorm/gorm / QuoteTo

Method QuoteTo

utils/tests/dummy_dialecter.go:42–88  ·  view source on GitHub ↗
(writer clause.Writer, str string)

Source from the content-addressed store, hash-verified

40}
41
42func (DummyDialector) QuoteTo(writer clause.Writer, str string) {
43 var (
44 underQuoted, selfQuoted bool
45 continuousBacktick int8
46 shiftDelimiter int8
47 )
48
49 for _, v := range []byte(str) {
50 switch v {
51 case '`':
52 continuousBacktick++
53 if continuousBacktick == 2 {
54 writer.WriteString("``")
55 continuousBacktick = 0
56 }
57 case '.':
58 if continuousBacktick > 0 || !selfQuoted {
59 shiftDelimiter = 0
60 underQuoted = false
61 continuousBacktick = 0
62 writer.WriteByte('`')
63 }
64 writer.WriteByte(v)
65 continue
66 default:
67 if shiftDelimiter-continuousBacktick <= 0 && !underQuoted {
68 writer.WriteByte('`')
69 underQuoted = true
70 if selfQuoted = continuousBacktick > 0; selfQuoted {
71 continuousBacktick -= 1
72 }
73 }
74
75 for ; continuousBacktick > 0; continuousBacktick -= 1 {
76 writer.WriteString("``")
77 }
78
79 writer.WriteByte(v)
80 }
81 shiftDelimiter++
82 }
83
84 if continuousBacktick > 0 && !selfQuoted {
85 writer.WriteString("``")
86 }
87 writer.WriteByte('`')
88}
89
90func (DummyDialector) Explain(sql string, vars ...interface{}) string {
91 return logger.ExplainSQL(sql, nil, `"`, vars...)

Callers

nothing calls this directly

Calls 2

WriteStringMethod · 0.65
WriteByteMethod · 0.65

Tested by

no test coverage detected