提交 e1935793 编写于 作者: wmmhello's avatar wmmhello

[TD-12252]<feature>(connector,query,insert,other,tools,taosAdapter):deal with escape character

上级 5cd29f4c
......@@ -390,6 +390,7 @@ int WCSPatternMatch(const uint32_t *patterStr, const uint32_t *str, size_t size,
uint32_t c, c1;
uint32_t matchOne = (uint32_t) L'_'; // "_"
uint32_t matchAll = (uint32_t) L'%'; // "%"
uint32_t escape = (uint32_t) L'\\'; // "\"
int32_t i = 0;
int32_t j = 0;
......@@ -427,6 +428,8 @@ int WCSPatternMatch(const uint32_t *patterStr, const uint32_t *str, size_t size,
c1 = str[j++];
if (j <= size) {
if (c == escape && patterStr[i] == matchOne && c1 == matchOne) { i++; continue; }
if (c == escape && patterStr[i] == matchAll && c1 == matchAll) { i++; continue; }
if (c == c1 || towlower(c) == towlower(c1) || (c == matchOne && c1 != 0)) {
continue;
}
......
......@@ -24,6 +24,7 @@ class TDTestCase:
case2: [TD-12334] '\' escape unknown
case3: [TD-11071] escape table creation problem
case4: [TD-6232] fix abnormal escaping results about '\'
case5: [TD-12815] like wildcards (% _) are not supported nchar type
'''
return
......@@ -105,7 +106,13 @@ class TDTestCase:
tdSql.query(r"select * from tt where i='9'")
tdSql.checkRows(1)
# [TD-12815] like wildcard(%, _) are not supported nchar
tdSql.execute(r"insert into tt values(1591070708000, 'h%d')")
tdSql.execute(r"insert into tt values(1591080708000, 'h_j')")
tdSql.query(r"select * from tt where i like 'h\%d'")
tdSql.checkRows(1)
tdSql.query(r"select * from tt where i like 'h\_j'")
tdSql.checkRows(1)
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册