Skip to content

Commit a6e6050

Browse files
committed
escape backslashed characters in comments
1 parent bf3109d commit a6e6050

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

enginetest/queries/create_table_queries.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,18 @@ var CreateTableQueries = []WriteQueryTest{
5252
SelectQuery: "SHOW CREATE TABLE tableWithColumnComment",
5353
ExpectedSelect: []sql.Row{{"tableWithColumnComment", "CREATE TABLE `tableWithColumnComment` (\n `pk` int COMMENT ''''\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}},
5454
},
55+
{
56+
WriteQuery: `create table tableWithColumnComment (pk int COMMENT "\'")`,
57+
ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}},
58+
SelectQuery: "SHOW CREATE TABLE tableWithColumnComment",
59+
ExpectedSelect: []sql.Row{{"tableWithColumnComment", "CREATE TABLE `tableWithColumnComment` (\n `pk` int COMMENT ''''\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}},
60+
},
61+
{
62+
WriteQuery: `create table tableWithColumnComment (pk int COMMENT "newline \n | return \r | backslash \\ | NUL \0 \x00")`,
63+
ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}},
64+
SelectQuery: "SHOW CREATE TABLE tableWithColumnComment",
65+
ExpectedSelect: []sql.Row{{"tableWithColumnComment", "CREATE TABLE `tableWithColumnComment` (\n `pk` int COMMENT 'newline \\n | return \\r | backslash \\\\ | NUL \\0 x00'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}},
66+
},
5567
{
5668
WriteQuery: `create table floattypedefs (a float(10), b float(10, 2), c double(10, 2))`,
5769
ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}},

sql/parser.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,14 +134,12 @@ func RemoveSpaceAndDelimiter(query string, d rune) string {
134134
}
135135

136136
func EscapeSpecialCharactersInComment(comment string) string {
137-
panic("here!")
138137
commentString := comment
139138
commentString = strings.ReplaceAll(commentString, "'", "''")
140139
commentString = strings.ReplaceAll(commentString, "\\", "\\\\")
141140
commentString = strings.ReplaceAll(commentString, "\"", "\\\"")
142141
commentString = strings.ReplaceAll(commentString, "\n", "\\n")
143142
commentString = strings.ReplaceAll(commentString, "\r", "\\r")
144-
145143
commentString = strings.ReplaceAll(commentString, "\x00", "\\0")
146144
return commentString
147145
}
@@ -152,7 +150,6 @@ var _ SchemaFormatter = &MySqlSchemaFormatter{}
152150

153151
// GenerateCreateTableStatement implements the SchemaFormatter interface.
154152
func (m *MySqlSchemaFormatter) GenerateCreateTableStatement(tblName string, colStmts []string, temp, autoInc, tblCharsetName, tblCollName, comment string) string {
155-
panic("here! 1")
156153
if comment != "" {
157154
// Escape any single quotes in the comment and add the COMMENT keyword
158155
comment = fmt.Sprintf(" COMMENT='%s'", EscapeSpecialCharactersInComment(comment))
@@ -176,7 +173,6 @@ func (m *MySqlSchemaFormatter) GenerateCreateTableStatement(tblName string, colS
176173

177174
// GenerateCreateTableColumnDefinition implements the SchemaFormatter interface.
178175
func (m *MySqlSchemaFormatter) GenerateCreateTableColumnDefinition(col *Column, colDefault, onUpdate string, tableCollation CollationID) string {
179-
panic("here! 2")
180176
var colTypeString string
181177
if collationType, ok := col.Type.(TypeWithCollation); ok {
182178
colTypeString = collationType.StringWithTableCollation(tableCollation)

0 commit comments

Comments
 (0)