From 37bce0c209653eb6962a3f137e585276d09b8cfa Mon Sep 17 00:00:00 2001 From: Clark McCauley Date: Fri, 20 May 2022 15:37:16 -0600 Subject: [PATCH 1/2] Fixed #5355. --- clause/expression.go | 2 +- clause/expression_test.go | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/clause/expression.go b/clause/expression.go index dde00b1d7..92ac7f223 100644 --- a/clause/expression.go +++ b/clause/expression.go @@ -127,7 +127,7 @@ func (expr NamedExpr) Build(builder Builder) { if v == '@' && !inName { inName = true name = []byte{} - } else if v == ' ' || v == ',' || v == ')' || v == '"' || v == '\'' || v == '`' || v == '\n' || v == ';' { + } else if v == ' ' || v == ',' || v == ')' || v == '"' || v == '\'' || v == '`' || v == '\r' || v == '\n' || v == ';' { if inName { if nv, ok := namedMap[string(name)]; ok { builder.AddVar(builder, nv) diff --git a/clause/expression_test.go b/clause/expression_test.go index 4826db381..049fdfd28 100644 --- a/clause/expression_test.go +++ b/clause/expression_test.go @@ -94,6 +94,16 @@ func TestNamedExpr(t *testing.T) { Vars: []interface{}{sql.Named("name", "jinzhu")}, Result: "name1 = ? AND name2 = ?;", ExpectedVars: []interface{}{"jinzhu", "jinzhu"}, + }, { + SQL: "name1 = @name1\r\n AND name2 = @name2", + Vars: []interface{}{map[string]interface{}{"name1": "jinzhu", "name2": "jinzhu"}}, + Result: "name1 = ?\r\n AND name2 = ?", + ExpectedVars: []interface{}{"jinzhu", "jinzhu"}, + }, { + SQL: "name1 = @name1\r\n AND name2 = @name2", + Vars: []interface{}{map[string]interface{}{"name1": "jinzhu", "name2": "jinzhu"}}, + Result: "name1 = ?\r\n AND name2 = ?", + ExpectedVars: []interface{}{"jinzhu", "jinzhu"}, }, { SQL: "?", Vars: []interface{}{clause.Column{Table: "table", Name: "col"}}, From a412a38a3753c52a152984f71b36319167e1dcb7 Mon Sep 17 00:00:00 2001 From: Clark McCauley Date: Sat, 21 May 2022 09:34:52 -0600 Subject: [PATCH 2/2] Fixed unit test to test both CRLF and CR line endings --- clause/expression_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clause/expression_test.go b/clause/expression_test.go index 049fdfd28..aaede61c5 100644 --- a/clause/expression_test.go +++ b/clause/expression_test.go @@ -100,9 +100,9 @@ func TestNamedExpr(t *testing.T) { Result: "name1 = ?\r\n AND name2 = ?", ExpectedVars: []interface{}{"jinzhu", "jinzhu"}, }, { - SQL: "name1 = @name1\r\n AND name2 = @name2", + SQL: "name1 = @name1\r AND name2 = @name2", Vars: []interface{}{map[string]interface{}{"name1": "jinzhu", "name2": "jinzhu"}}, - Result: "name1 = ?\r\n AND name2 = ?", + Result: "name1 = ?\r AND name2 = ?", ExpectedVars: []interface{}{"jinzhu", "jinzhu"}, }, { SQL: "?",