From 67f64afa8500098ff074c58b259a0bcfb144e7b5 Mon Sep 17 00:00:00 2001 From: Anker Jam Date: Sat, 19 Sep 2020 21:45:37 +0800 Subject: [PATCH] movement for 4198 --- pkg/client/orm/db.go | 9 +++++---- pkg/client/orm/db_mysql.go | 9 +++++---- pkg/client/orm/orm_test.go | 11 +++++++++++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/pkg/client/orm/db.go b/pkg/client/orm/db.go index 820435ca..2bd1308f 100644 --- a/pkg/client/orm/db.go +++ b/pkg/client/orm/db.go @@ -38,10 +38,11 @@ var ( var ( operators = map[string]bool{ - "exact": true, - "iexact": true, - "contains": true, - "icontains": true, + "exact": true, + "iexact": true, + "strictexact": true, + "contains": true, + "icontains": true, // "regex": true, // "iregex": true, "gt": true, diff --git a/pkg/client/orm/db_mysql.go b/pkg/client/orm/db_mysql.go index f602fd0a..f674ab2b 100644 --- a/pkg/client/orm/db_mysql.go +++ b/pkg/client/orm/db_mysql.go @@ -22,10 +22,11 @@ import ( // mysql operators. var mysqlOperators = map[string]string{ - "exact": "= ?", - "iexact": "LIKE ?", - "contains": "LIKE BINARY ?", - "icontains": "LIKE ?", + "exact": "= ?", + "iexact": "LIKE ?", + "strictexact": "= BINARY ?", + "contains": "LIKE BINARY ?", + "icontains": "LIKE ?", // "regex": "REGEXP BINARY ?", // "iregex": "REGEXP ?", "gt": "> ?", diff --git a/pkg/client/orm/orm_test.go b/pkg/client/orm/orm_test.go index 6a480d8c..bd92f46f 100644 --- a/pkg/client/orm/orm_test.go +++ b/pkg/client/orm/orm_test.go @@ -877,6 +877,17 @@ func TestOperators(t *testing.T) { throwFail(t, err) throwFail(t, AssertIs(num, 1)) + if IsMysql { + // Now only mysql support `strictexact` + num, err = qs.Filter("user_name__strictexact", "Slene").Count() + throwFail(t, err) + throwFail(t, AssertIs(num, 0)) + + num, err = qs.Filter("user_name__strictexact", "slene").Count() + throwFail(t, err) + throwFail(t, AssertIs(num, 1)) + } + num, err = qs.Filter("user_name__contains", "e").Count() throwFail(t, err) throwFail(t, AssertIs(num, 2))