[fix db/table name]
This commit is contained in:
parent
9b5a52a3aa
commit
cfc22dec75
|
@ -795,22 +795,19 @@ void tscColumnInfoReserve(SSqlCmd* pCmd, int32_t size) { _cf_ensureSpace(&pCmd->
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int32_t validateQuoteToken(SSQLToken* pToken) {
|
static int32_t validateQuoteToken(SSQLToken* pToken) {
|
||||||
strdequote(pToken->z);
|
pToken->n = strdequote(pToken->z);
|
||||||
strtrim(pToken->z);
|
strtrim(pToken->z);
|
||||||
pToken->n = (uint32_t)strlen(pToken->z);
|
pToken->n = (uint32_t)strlen(pToken->z);
|
||||||
|
|
||||||
int32_t k = tSQLGetToken(pToken->z, &pToken->type);
|
int32_t k = tSQLGetToken(pToken->z, &pToken->type);
|
||||||
|
|
||||||
if (k != pToken->n) {
|
|
||||||
if (pToken->type == TK_STRING) {
|
if (pToken->type == TK_STRING) {
|
||||||
return tscValidateName(pToken);
|
return tscValidateName(pToken);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (pToken->type != TK_ID) {
|
if (k != pToken->n || pToken->type != TK_ID) {
|
||||||
return TSDB_CODE_INVALID_SQL;
|
return TSDB_CODE_INVALID_SQL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -822,7 +819,20 @@ int32_t tscValidateName(SSQLToken* pToken) {
|
||||||
char* sep = strnchrNoquote(pToken->z, TS_PATH_DELIMITER[0], pToken->n);
|
char* sep = strnchrNoquote(pToken->z, TS_PATH_DELIMITER[0], pToken->n);
|
||||||
if (sep == NULL) { // single part
|
if (sep == NULL) { // single part
|
||||||
if (pToken->type == TK_STRING) {
|
if (pToken->type == TK_STRING) {
|
||||||
|
pToken->n = strdequote(pToken->z);
|
||||||
|
strtrim(pToken->z);
|
||||||
|
pToken->n = (uint32_t)strlen(pToken->z);
|
||||||
|
int len = tSQLGetToken(pToken->z, &pToken->type);
|
||||||
|
if (len == pToken->n){
|
||||||
return validateQuoteToken(pToken);
|
return validateQuoteToken(pToken);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sep = strnchrNoquote(pToken->z, TS_PATH_DELIMITER[0], pToken->n);
|
||||||
|
if (sep == NULL) {
|
||||||
|
return TSDB_CODE_INVALID_SQL;
|
||||||
|
}
|
||||||
|
return tscValidateName(pToken);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (isNumber(pToken)) {
|
if (isNumber(pToken)) {
|
||||||
return TSDB_CODE_INVALID_SQL;
|
return TSDB_CODE_INVALID_SQL;
|
||||||
|
@ -832,6 +842,11 @@ int32_t tscValidateName(SSQLToken* pToken) {
|
||||||
int32_t oldLen = pToken->n;
|
int32_t oldLen = pToken->n;
|
||||||
char* pStr = pToken->z;
|
char* pStr = pToken->z;
|
||||||
|
|
||||||
|
if (pToken->type == TK_SPACE) {
|
||||||
|
strtrim(pToken->z);
|
||||||
|
pToken->n = (uint32_t)strlen(pToken->z);
|
||||||
|
}
|
||||||
|
|
||||||
pToken->n = tSQLGetToken(pToken->z, &pToken->type);
|
pToken->n = tSQLGetToken(pToken->z, &pToken->type);
|
||||||
if (pToken->z[pToken->n] != TS_PATH_DELIMITER[0]) {
|
if (pToken->z[pToken->n] != TS_PATH_DELIMITER[0]) {
|
||||||
return TSDB_CODE_INVALID_SQL;
|
return TSDB_CODE_INVALID_SQL;
|
||||||
|
|
|
@ -272,6 +272,10 @@ int tSQLKeywordCode(const char* z, int n) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Return the length of the token that begins at z[0].
|
||||||
|
** Store the token type in *type before returning.
|
||||||
|
*/
|
||||||
uint32_t tSQLGetToken(char* z, uint32_t* tokenType) {
|
uint32_t tSQLGetToken(char* z, uint32_t* tokenType) {
|
||||||
int i;
|
int i;
|
||||||
switch (*z) {
|
switch (*z) {
|
||||||
|
@ -398,19 +402,26 @@ uint32_t tSQLGetToken(char* z, uint32_t* tokenType) {
|
||||||
case '\'':
|
case '\'':
|
||||||
case '"': {
|
case '"': {
|
||||||
int delim = z[0];
|
int delim = z[0];
|
||||||
|
bool strEnd = false;
|
||||||
for (i = 1; z[i]; i++) {
|
for (i = 1; z[i]; i++) {
|
||||||
if (z[i] == delim) {
|
if (z[i] == delim) {
|
||||||
if (z[i + 1] == delim) {
|
if (z[i + 1] == delim) {
|
||||||
i++;
|
i++;
|
||||||
} else {
|
} else {
|
||||||
|
strEnd = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (z[i]) i++;
|
if (z[i]) i++;
|
||||||
|
|
||||||
|
if (strEnd){
|
||||||
*tokenType = TK_STRING;
|
*tokenType = TK_STRING;
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
case '.': {
|
case '.': {
|
||||||
*tokenType = TK_DOT;
|
*tokenType = TK_DOT;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
Loading…
Reference in New Issue