提交 b271a14d 编写于 作者: G Ganlin Zhao

[TD-10797]<fix>: when column length is long, report 'invalid column name' error

上级 f4307cd2
......@@ -1485,6 +1485,7 @@ static bool validateTableColumnInfo(SArray* pFieldList, SSqlCmd* pCmd) {
const char* msg5 = "invalid binary/nchar column length";
const char* msg6 = "invalid column name";
const char* msg7 = "too many columns";
const char* msg8 = "invalid column name length";
// number of fields no less than 2
size_t numOfCols = taosArrayGetSize(pFieldList);
......@@ -1522,8 +1523,13 @@ static bool validateTableColumnInfo(SArray* pFieldList, SSqlCmd* pCmd) {
return false;
}
if (validateColumnName(pField->name) != TSDB_CODE_SUCCESS) {
invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
int32_t code = validateColumnName(pField->name);
if (code != TSDB_CODE_SUCCESS) {
if (code == TSDB_CODE_TSC_INVALID_COLUMN_LENGTH) {
invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg8);
} else {
invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
}
return false;
}
......@@ -6763,6 +6769,9 @@ int32_t validateLocalConfig(SMiscInfo* pOptions) {
}
int32_t validateColumnName(char* name) {
if (strlen(name) == 0) {
return TSDB_CODE_TSC_INVALID_COLUMN_LENGTH;
}
bool ret = taosIsKeyWordToken(name, (int32_t)strlen(name));
if (ret) {
return TSDB_CODE_TSC_INVALID_OPERATION;
......
......@@ -680,7 +680,7 @@ void tSetColumnInfo(TAOS_FIELD *pField, SStrToken *pName, TAOS_FIELD *pType) {
// column name is too long, set the it to be invalid.
if ((int32_t) pName->n >= maxLen) {
pName->n = -1;
pField->name[0] = 0;
} else {
strncpy(pField->name, pName->z, pName->n);
pField->name[pName->n] = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册