Make sure mysql select json object keys are escaped.

This commit is contained in:
go-jet 2026-05-04 12:34:29 +02:00
parent 1c2a595750
commit a1d7684fc1
4 changed files with 96 additions and 1 deletions

View file

@ -112,7 +112,8 @@ func (s *SQLBuilder) WriteString(str string) {
// WriteJsonObjKey serializes json object key
func (s *SQLBuilder) WriteJsonObjKey(key string) {
s.WriteString(fmt.Sprintf(`'%s', `, key))
s.WriteString(stringQuote(key))
s.WriteString(", ")
}
// WriteIdentifier adds identifier to output SQL

View file

@ -45,6 +45,14 @@ func TestArgToString(t *testing.T) {
}()
}
func TestWriteJsonObjKeyEscapesStringLiteral(t *testing.T) {
s := &SQLBuilder{Dialect: defaultDialect}
s.WriteJsonObjKey("author's name")
require.Equal(t, "'author''s name', ", s.Buff.String())
}
func TestFallTrough(t *testing.T) {
require.Equal(t, FallTrough([]SerializeOption{ShortName}), []SerializeOption{ShortName})
require.Equal(t, FallTrough([]SerializeOption{SkipNewLine}), []SerializeOption(nil))