mirror of https://github.com/go-gorm/gorm.git
Fix wipes out MySQL global variables from the query, close #4515
This commit is contained in:
parent
2ec7043818
commit
76cd73cb82
|
@ -173,7 +173,12 @@ func (expr NamedExpr) Build(builder Builder) {
|
|||
}
|
||||
|
||||
if inName {
|
||||
builder.AddVar(builder, namedMap[string(name)])
|
||||
if nv, ok := namedMap[string(name)]; ok {
|
||||
builder.AddVar(builder, nv)
|
||||
} else {
|
||||
builder.WriteByte('@')
|
||||
builder.WriteString(string(name))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -60,6 +60,11 @@ func TestNamedExpr(t *testing.T) {
|
|||
Vars: []interface{}{sql.Named("name", "jinzhu")},
|
||||
Result: "name1 = ? AND name2 = ?",
|
||||
ExpectedVars: []interface{}{"jinzhu", "jinzhu"},
|
||||
}, {
|
||||
SQL: "name1 = @name AND name2 = @@name",
|
||||
Vars: []interface{}{map[string]interface{}{"name": "jinzhu"}},
|
||||
Result: "name1 = ? AND name2 = @@name",
|
||||
ExpectedVars: []interface{}{"jinzhu"},
|
||||
}, {
|
||||
SQL: "name1 = @name1 AND name2 = @name2 AND name3 = @name1",
|
||||
Vars: []interface{}{sql.Named("name1", "jinzhu"), sql.Named("name2", "jinzhu2")},
|
||||
|
@ -73,13 +78,13 @@ func TestNamedExpr(t *testing.T) {
|
|||
}, {
|
||||
SQL: "@@test AND name1 = @name1 AND name2 = @name2 AND name3 = @name1 @notexist",
|
||||
Vars: []interface{}{sql.Named("name1", "jinzhu"), sql.Named("name2", "jinzhu2")},
|
||||
Result: "@@test AND name1 = ? AND name2 = ? AND name3 = ? ?",
|
||||
ExpectedVars: []interface{}{"jinzhu", "jinzhu2", "jinzhu", nil},
|
||||
Result: "@@test AND name1 = ? AND name2 = ? AND name3 = ? @notexist",
|
||||
ExpectedVars: []interface{}{"jinzhu", "jinzhu2", "jinzhu"},
|
||||
}, {
|
||||
SQL: "@@test AND name1 = @Name1 AND name2 = @Name2 AND name3 = @Name1 @Notexist",
|
||||
SQL: "@@test AND name1 = @Name1 AND name2 = @Name2 AND name3 = @Name1 @notexist",
|
||||
Vars: []interface{}{NamedArgument{Name1: "jinzhu", Base: Base{Name2: "jinzhu2"}}},
|
||||
Result: "@@test AND name1 = ? AND name2 = ? AND name3 = ? ?",
|
||||
ExpectedVars: []interface{}{"jinzhu", "jinzhu2", "jinzhu", nil},
|
||||
Result: "@@test AND name1 = ? AND name2 = ? AND name3 = ? @notexist",
|
||||
ExpectedVars: []interface{}{"jinzhu", "jinzhu2", "jinzhu"},
|
||||
}, {
|
||||
SQL: "create table ? (? ?, ? ?)",
|
||||
Vars: []interface{}{},
|
||||
|
|
Loading…
Reference in New Issue