Merge remote-tracking branch 'origin/develop' into feature/vnode
This commit is contained in:
commit
b2a503b707
|
@ -54,7 +54,7 @@ void doAsyncQuery(STscObj* pObj, SSqlObj* pSql, void (*fp)(), void* param, const
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
strtolower(pSql->sqlstr, sqlstr);
|
strntolower(pSql->sqlstr, sqlstr, sqlLen);
|
||||||
|
|
||||||
tscDebugL("%p SQL: %s", pSql, pSql->sqlstr);
|
tscDebugL("%p SQL: %s", pSql, pSql->sqlstr);
|
||||||
pSql->cmd.curSql = pSql->sqlstr;
|
pSql->cmd.curSql = pSql->sqlstr;
|
||||||
|
|
|
@ -263,12 +263,29 @@ TAOS_RES* taos_query(TAOS *taos, const char *sqlstr) {
|
||||||
return pSql;
|
return pSql;
|
||||||
}
|
}
|
||||||
TAOS_RES* taos_query_c(TAOS *taos, const char *sqlstr, uint32_t sqlLen) {
|
TAOS_RES* taos_query_c(TAOS *taos, const char *sqlstr, uint32_t sqlLen) {
|
||||||
char* buf = malloc(sqlLen + 1);
|
STscObj *pObj = (STscObj *)taos;
|
||||||
buf[sqlLen] = 0;
|
if (pObj == NULL || pObj->signature != pObj) {
|
||||||
strncpy(buf, sqlstr, sqlLen);
|
terrno = TSDB_CODE_TSC_DISCONNECTED;
|
||||||
TAOS_RES *res = taos_query(taos, buf);
|
return NULL;
|
||||||
free(buf);
|
}
|
||||||
return res;
|
|
||||||
|
if (sqlLen > tsMaxSQLStringLen) {
|
||||||
|
tscError("sql string exceeds max length:%d", tsMaxSQLStringLen);
|
||||||
|
terrno = TSDB_CODE_TSC_INVALID_SQL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
SSqlObj* pSql = calloc(1, sizeof(SSqlObj));
|
||||||
|
if (pSql == NULL) {
|
||||||
|
tscError("failed to malloc sqlObj");
|
||||||
|
terrno = TSDB_CODE_TSC_OUT_OF_MEMORY;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
doAsyncQuery(pObj, pSql, waitForQueryRsp, taos, sqlstr, sqlLen);
|
||||||
|
|
||||||
|
tsem_wait(&pSql->rspSem);
|
||||||
|
return pSql;
|
||||||
}
|
}
|
||||||
int taos_result_precision(TAOS_RES *res) {
|
int taos_result_precision(TAOS_RES *res) {
|
||||||
SSqlObj *pSql = (SSqlObj *)res;
|
SSqlObj *pSql = (SSqlObj *)res;
|
||||||
|
|
|
@ -133,6 +133,8 @@ char **strsplit(char *src, const char *delim, int32_t *num);
|
||||||
|
|
||||||
char* strtolower(char *dst, const char *src);
|
char* strtolower(char *dst, const char *src);
|
||||||
|
|
||||||
|
char* strntolower(char *dst, const char *src, int32_t n);
|
||||||
|
|
||||||
int64_t strnatoi(char *num, int32_t len);
|
int64_t strnatoi(char *num, int32_t len);
|
||||||
|
|
||||||
//char* strreplace(const char* str, const char* pattern, const char* rep);
|
//char* strreplace(const char* str, const char* pattern, const char* rep);
|
||||||
|
|
|
@ -234,6 +234,32 @@ char* strtolower(char *dst, const char *src) {
|
||||||
*p = 0;
|
*p = 0;
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
|
char* strntolower(char *dst, const char *src, int32_t n) {
|
||||||
|
int esc = 0;
|
||||||
|
char quote = 0, *p = dst, c;
|
||||||
|
|
||||||
|
assert(dst != NULL);
|
||||||
|
|
||||||
|
for (c = *src++; n-- > 0; c = *src++) {
|
||||||
|
if (esc) {
|
||||||
|
esc = 0;
|
||||||
|
} else if (quote) {
|
||||||
|
if (c == '\\') {
|
||||||
|
esc = 1;
|
||||||
|
} else if (c == quote) {
|
||||||
|
quote = 0;
|
||||||
|
}
|
||||||
|
} else if (c >= 'A' && c <= 'Z') {
|
||||||
|
c -= 'A' - 'a';
|
||||||
|
} else if (c == '\'' || c == '"') {
|
||||||
|
quote = c;
|
||||||
|
}
|
||||||
|
*p++ = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
*p = 0;
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
char *paGetToken(char *string, char **token, int32_t *tokenLen) {
|
char *paGetToken(char *string, char **token, int32_t *tokenLen) {
|
||||||
char quote = 0;
|
char quote = 0;
|
||||||
|
|
Loading…
Reference in New Issue