提交 1d77a5b0 编写于 作者: S shenglian zhou

[TD-5484]<fix>:nchar/binary tag length exceed limit error when alter table

上级 c82eecdd
...@@ -712,9 +712,8 @@ void tSetColumnType(TAOS_FIELD *pField, SStrToken *type) { ...@@ -712,9 +712,8 @@ void tSetColumnType(TAOS_FIELD *pField, SStrToken *type) {
} else { } else {
int32_t bytes = -(int32_t)(type->type); int32_t bytes = -(int32_t)(type->type);
if (bytes > (TSDB_MAX_NCHAR_LEN - VARSTR_HEADER_SIZE) / TSDB_NCHAR_SIZE) { if (bytes > (TSDB_MAX_NCHAR_LEN - VARSTR_HEADER_SIZE) / TSDB_NCHAR_SIZE) {
// we have to postpone reporting the error because it cannot be done here // overflowed. set bytes to -1 so that error can be reported
// as pField->bytes is int16_t, use 'TSDB_MAX_NCHAR_LEN + 1' to avoid overflow bytes = -1;
bytes = TSDB_MAX_NCHAR_LEN + 1;
} else { } else {
bytes = bytes * TSDB_NCHAR_SIZE + VARSTR_HEADER_SIZE; bytes = bytes * TSDB_NCHAR_SIZE + VARSTR_HEADER_SIZE;
} }
...@@ -727,8 +726,8 @@ void tSetColumnType(TAOS_FIELD *pField, SStrToken *type) { ...@@ -727,8 +726,8 @@ void tSetColumnType(TAOS_FIELD *pField, SStrToken *type) {
} else { } else {
int32_t bytes = -(int32_t)(type->type); int32_t bytes = -(int32_t)(type->type);
if (bytes > TSDB_MAX_BINARY_LEN - VARSTR_HEADER_SIZE) { if (bytes > TSDB_MAX_BINARY_LEN - VARSTR_HEADER_SIZE) {
// refer comment for NCHAR above // overflowed. set bytes to -1 so that error can be reported
bytes = TSDB_MAX_BINARY_LEN + 1; bytes = -1;
} else { } else {
bytes += VARSTR_HEADER_SIZE; bytes += VARSTR_HEADER_SIZE;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册