Merge pull request #6501 from taosdata/feature/TD-4394
[TD-4394]fix core when select data after modify tag width
This commit is contained in:
commit
4066fb7c50
|
@ -1475,6 +1475,7 @@ static int32_t mnodeChangeSuperTableColumn(SMnodeMsg *pMsg) {
|
||||||
SSchema *schema = (SSchema *) (pStable->schema + col);
|
SSchema *schema = (SSchema *) (pStable->schema + col);
|
||||||
ASSERT(schema->type == TSDB_DATA_TYPE_BINARY || schema->type == TSDB_DATA_TYPE_NCHAR);
|
ASSERT(schema->type == TSDB_DATA_TYPE_BINARY || schema->type == TSDB_DATA_TYPE_NCHAR);
|
||||||
schema->bytes = pAlter->schema[0].bytes;
|
schema->bytes = pAlter->schema[0].bytes;
|
||||||
|
pStable->sversion++;
|
||||||
mInfo("msg:%p, app:%p stable %s, start to modify column %s len to %d", pMsg, pMsg->rpcMsg.ahandle, pStable->info.tableId,
|
mInfo("msg:%p, app:%p stable %s, start to modify column %s len to %d", pMsg, pMsg->rpcMsg.ahandle, pStable->info.tableId,
|
||||||
name, schema->bytes);
|
name, schema->bytes);
|
||||||
|
|
||||||
|
@ -1504,6 +1505,7 @@ static int32_t mnodeChangeSuperTableTag(SMnodeMsg *pMsg) {
|
||||||
SSchema *schema = (SSchema *) (pStable->schema + col + pStable->numOfColumns);
|
SSchema *schema = (SSchema *) (pStable->schema + col + pStable->numOfColumns);
|
||||||
ASSERT(schema->type == TSDB_DATA_TYPE_BINARY || schema->type == TSDB_DATA_TYPE_NCHAR);
|
ASSERT(schema->type == TSDB_DATA_TYPE_BINARY || schema->type == TSDB_DATA_TYPE_NCHAR);
|
||||||
schema->bytes = pAlter->schema[0].bytes;
|
schema->bytes = pAlter->schema[0].bytes;
|
||||||
|
pStable->tversion++;
|
||||||
mInfo("msg:%p, app:%p stable %s, start to modify tag len %s to %d", pMsg, pMsg->rpcMsg.ahandle, pStable->info.tableId,
|
mInfo("msg:%p, app:%p stable %s, start to modify tag len %s to %d", pMsg, pMsg->rpcMsg.ahandle, pStable->info.tableId,
|
||||||
name, schema->bytes);
|
name, schema->bytes);
|
||||||
|
|
||||||
|
|
|
@ -7527,7 +7527,8 @@ static void doSetTagValueToResultBuf(char* output, const char* val, int16_t type
|
||||||
if (IS_VAR_DATA_TYPE(type)) {
|
if (IS_VAR_DATA_TYPE(type)) {
|
||||||
// Binary data overflows for sort of unknown reasons. Let trim the overflow data
|
// Binary data overflows for sort of unknown reasons. Let trim the overflow data
|
||||||
if (varDataTLen(val) > bytes) {
|
if (varDataTLen(val) > bytes) {
|
||||||
int32_t len = bytes - VARSTR_HEADER_SIZE; // remain available space
|
int32_t maxLen = bytes - VARSTR_HEADER_SIZE;
|
||||||
|
int32_t len = (varDataLen(val) > maxLen)? maxLen:varDataLen(val);
|
||||||
memcpy(varDataVal(output), varDataVal(val), len);
|
memcpy(varDataVal(output), varDataVal(val), len);
|
||||||
varDataSetLen(output, len);
|
varDataSetLen(output, len);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -148,7 +148,9 @@ int tsdbCreateTable(STsdbRepo *repo, STableCfg *pCfg) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
_err:
|
_err:
|
||||||
tsdbFreeTable(super);
|
if (newSuper) {
|
||||||
|
tsdbFreeTable(super);
|
||||||
|
}
|
||||||
tsdbFreeTable(table);
|
tsdbFreeTable(table);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -211,7 +213,7 @@ void *tsdbGetTableTagVal(const void* pTable, int32_t colId, int16_t type, int16_
|
||||||
}
|
}
|
||||||
|
|
||||||
char *val = tdGetKVRowValOfCol(((STable*)pTable)->tagVal, colId);
|
char *val = tdGetKVRowValOfCol(((STable*)pTable)->tagVal, colId);
|
||||||
assert(type == pCol->type && bytes == pCol->bytes);
|
assert(type == pCol->type && bytes >= pCol->bytes);
|
||||||
|
|
||||||
// if (val != NULL && IS_VAR_DATA_TYPE(type)) {
|
// if (val != NULL && IS_VAR_DATA_TYPE(type)) {
|
||||||
// assert(varDataLen(val) < pCol->bytes);
|
// assert(varDataLen(val) < pCol->bytes);
|
||||||
|
|
Loading…
Reference in New Issue