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))