20 lines
571 B
Go
20 lines
571 B
Go
package mysql
|
|
|
|
import "testing"
|
|
|
|
func TestSQLSplitterPreservesQuotedSemicolons(t *testing.T) {
|
|
sql := "-- comment;\nCREATE TABLE `x;y` (v VARCHAR(10)); INSERT INTO `x;y` VALUES ('a;''b'); /* ignore ; */"
|
|
s, err := splitSQL(sql)
|
|
if err != nil || len(s) != 2 {
|
|
t.Fatalf("split=%v err=%v", s, err)
|
|
}
|
|
if s[1] != "INSERT INTO `x;y` VALUES ('a;''b')" {
|
|
t.Fatal(s[1])
|
|
}
|
|
for _, bad := range []string{"SELECT 'broken;", "/*broken", "/*! DROP TABLE x */", "DELIMITER $$", "-- empty"} {
|
|
if _, err := splitSQL(bad); err == nil {
|
|
t.Fatalf("accepted %q", bad)
|
|
}
|
|
}
|
|
}
|