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);
|
||||
ASSERT(schema->type == TSDB_DATA_TYPE_BINARY || schema->type == TSDB_DATA_TYPE_NCHAR);
|
||||
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,
|
||||
name, schema->bytes);
|
||||
|
||||
|
@ -1504,6 +1505,7 @@ static int32_t mnodeChangeSuperTableTag(SMnodeMsg *pMsg) {
|
|||
SSchema *schema = (SSchema *) (pStable->schema + col + pStable->numOfColumns);
|
||||
ASSERT(schema->type == TSDB_DATA_TYPE_BINARY || schema->type == TSDB_DATA_TYPE_NCHAR);
|
||||
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,
|
||||
name, schema->bytes);
|
||||
|
||||
|
|
|
@ -7527,7 +7527,8 @@ static void doSetTagValueToResultBuf(char* output, const char* val, int16_t type
|
|||
if (IS_VAR_DATA_TYPE(type)) {
|
||||
// Binary data overflows for sort of unknown reasons. Let trim the overflow data
|
||||
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);
|
||||
varDataSetLen(output, len);
|
||||
} else {
|
||||
|
|
|
@ -148,7 +148,9 @@ int tsdbCreateTable(STsdbRepo *repo, STableCfg *pCfg) {
|
|||
return 0;
|
||||
|
||||
_err:
|
||||
tsdbFreeTable(super);
|
||||
if (newSuper) {
|
||||
tsdbFreeTable(super);
|
||||
}
|
||||
tsdbFreeTable(table);
|
||||
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);
|
||||
assert(type == pCol->type && bytes == pCol->bytes);
|
||||
assert(type == pCol->type && bytes >= pCol->bytes);
|
||||
|
||||
// if (val != NULL && IS_VAR_DATA_TYPE(type)) {
|
||||
// assert(varDataLen(val) < pCol->bytes);
|
||||
|
|
Loading…
Reference in New Issue