From 259af4032c32fc32f501287031d31b8c331705ff Mon Sep 17 00:00:00 2001 From: xywang Date: Mon, 24 Jan 2022 18:34:01 +0800 Subject: [PATCH] [TS-1159]: fixed a bug for alter operation --- src/client/src/tscSQLParser.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 56796089c9..d0e2306ce6 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -3444,6 +3444,13 @@ static int16_t doGetColumnIndex(SQueryInfo* pQueryInfo, int32_t index, SStrToken pToken->n = stringProcess(pToken->z, pToken->n); } + //handle Escape character backstick + if (pToken->z && pToken->z[0] == TS_BACKQUOTE_CHAR && pToken->z[pToken->n - 1] == TS_BACKQUOTE_CHAR) { + memmove(pToken->z, pToken->z + 1, pToken->n - 1); + pToken->z[pToken->n - TS_BACKQUOTE_CHAR_SIZE] = '\0'; + pToken->n -= TS_BACKQUOTE_CHAR_SIZE; + } + for (int16_t i = 0; i < numOfCols; ++i) { if (pToken->n != strlen(pSchema[i].name)) { continue; @@ -3535,7 +3542,10 @@ int32_t getTableIndexImpl(SStrToken* pTableToken, SQueryInfo* pQueryInfo, SColum int32_t getTableIndexByName(SStrToken* pToken, SQueryInfo* pQueryInfo, SColumnIndex* pIndex) { SStrToken tableToken = {0}; - extractTableNameFromToken(pToken, &tableToken); + + if (pToken->z && (pToken->z[0] != TS_BACKQUOTE_CHAR || pToken->z[pToken->n - 1] != TS_BACKQUOTE_CHAR)) { + extractTableNameFromToken(pToken, &tableToken); + } if (getTableIndexImpl(&tableToken, pQueryInfo, pIndex) != TSDB_CODE_SUCCESS) { return TSDB_CODE_TSC_INVALID_OPERATION; @@ -7142,12 +7152,6 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { SColumnIndex columnIndex = COLUMN_INDEX_INITIALIZER; SStrToken name = {.type = TK_STRING, .z = pItem->name, .n = (uint32_t)strlen(pItem->name)}; - //handle Escape character backstick - if (name.z[0] == TS_BACKQUOTE_CHAR && name.z[name.n - 1] == TS_BACKQUOTE_CHAR) { - memmove(name.z, name.z + 1, name.n); - name.z[name.n - TS_BACKQUOTE_CHAR_SIZE] = '\0'; - name.n -= TS_BACKQUOTE_CHAR_SIZE; - } if (getColumnIndexByName(&name, pQueryInfo, &columnIndex, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) { return invalidOperationMsg(pMsg, msg17); } @@ -7188,6 +7192,13 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { return invalidOperationMsg(pMsg, msg24); } + //handle Escape character backstick + if (name.z && name.z[0] == TS_BACKQUOTE_CHAR && name.z[name.n - 1] == TS_BACKQUOTE_CHAR) { + memmove(name.z, name.z + 1, name.n - 1); + name.z[name.n - TS_BACKQUOTE_CHAR_SIZE] = '\0'; + name.n -= TS_BACKQUOTE_CHAR_SIZE; + } + TAOS_FIELD f = tscCreateField(pColSchema->type, name.z, pItem->bytes); tscFieldInfoAppend(&pQueryInfo->fieldsInfo, &f); } -- GitLab