提交 82317294 编写于 作者: L lihui

[#1102]

上级 dfb29f75
...@@ -239,6 +239,7 @@ typedef struct STableDataBlocks { ...@@ -239,6 +239,7 @@ typedef struct STableDataBlocks {
int32_t rowSize; // row size for current table int32_t rowSize; // row size for current table
uint32_t nAllocSize; uint32_t nAllocSize;
uint32_t headerSize; // header for metadata (submit metadata)
uint32_t size; uint32_t size;
/* /*
......
...@@ -579,7 +579,8 @@ int32_t tscAllocateMemIfNeed(STableDataBlocks *pDataBlock, int32_t rowSize, int3 ...@@ -579,7 +579,8 @@ int32_t tscAllocateMemIfNeed(STableDataBlocks *pDataBlock, int32_t rowSize, int3
size_t remain = pDataBlock->nAllocSize - pDataBlock->size; size_t remain = pDataBlock->nAllocSize - pDataBlock->size;
const int factor = 5; const int factor = 5;
uint32_t nAllocSizeOld = pDataBlock->nAllocSize; uint32_t nAllocSizeOld = pDataBlock->nAllocSize;
assert(pDataBlock->headerSize >= 0);
// expand the allocated size // expand the allocated size
if (remain < rowSize * factor) { if (remain < rowSize * factor) {
while (remain < rowSize * factor) { while (remain < rowSize * factor) {
...@@ -595,12 +596,12 @@ int32_t tscAllocateMemIfNeed(STableDataBlocks *pDataBlock, int32_t rowSize, int3 ...@@ -595,12 +596,12 @@ int32_t tscAllocateMemIfNeed(STableDataBlocks *pDataBlock, int32_t rowSize, int3
//assert(false); //assert(false);
// do nothing // do nothing
pDataBlock->nAllocSize = nAllocSizeOld; pDataBlock->nAllocSize = nAllocSizeOld;
*numOfRows = (int32_t)(pDataBlock->nAllocSize) / rowSize; *numOfRows = (int32_t)(pDataBlock->nAllocSize - pDataBlock->headerSize) / rowSize;
return TSDB_CODE_CLI_OUT_OF_MEMORY; return TSDB_CODE_CLI_OUT_OF_MEMORY;
} }
} }
*numOfRows = (int32_t)(pDataBlock->nAllocSize) / rowSize; *numOfRows = (int32_t)(pDataBlock->nAllocSize - pDataBlock->headerSize) / rowSize;
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
...@@ -908,6 +909,7 @@ static int32_t tscParseSqlForCreateTableOnDemand(char **sqlstr, SSqlObj *pSql) { ...@@ -908,6 +909,7 @@ static int32_t tscParseSqlForCreateTableOnDemand(char **sqlstr, SSqlObj *pSql) {
createTable = true; createTable = true;
code = tscGetMeterMetaEx(pSql, pMeterMetaInfo->name, true); code = tscGetMeterMetaEx(pSql, pMeterMetaInfo->name, true);
if (TSDB_CODE_ACTION_IN_PROGRESS == code) return code;
} else { } else {
if (cstart != NULL) { if (cstart != NULL) {
sql = cstart; sql = cstart;
...@@ -1015,7 +1017,7 @@ int doParserInsertSql(SSqlObj *pSql, char *str) { ...@@ -1015,7 +1017,7 @@ int doParserInsertSql(SSqlObj *pSql, char *str) {
tscTrace("async insert and waiting to get meter meta, then continue parse sql from offset: %" PRId64, pos); tscTrace("async insert and waiting to get meter meta, then continue parse sql from offset: %" PRId64, pos);
return code; return code;
} }
tscTrace("async insert parse error, code:%d, %s", code, tsError[code]); tscError("async insert parse error, code:%d, %s", code, tsError[code]);
pSql->asyncTblPos = NULL; pSql->asyncTblPos = NULL;
goto _error_clean; // TODO: should _clean or _error_clean to async flow ???? goto _error_clean; // TODO: should _clean or _error_clean to async flow ????
} else { } else {
......
...@@ -598,6 +598,7 @@ int32_t tscCreateDataBlock(size_t initialSize, int32_t rowSize, int32_t startOff ...@@ -598,6 +598,7 @@ int32_t tscCreateDataBlock(size_t initialSize, int32_t rowSize, int32_t startOff
} }
dataBuf->nAllocSize = (uint32_t)initialSize; dataBuf->nAllocSize = (uint32_t)initialSize;
dataBuf->headerSize = startOffset; // the header size will always be the startOffset value, reserved for the subumit block header
dataBuf->pData = calloc(1, dataBuf->nAllocSize); dataBuf->pData = calloc(1, dataBuf->nAllocSize);
dataBuf->ordered = true; dataBuf->ordered = true;
dataBuf->prevTS = INT64_MIN; dataBuf->prevTS = INT64_MIN;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册