Merge pull request #26585 from taosdata/enh/TD-30992/command
enh: return value: command
This commit is contained in:
commit
5328c6dbea
|
@ -885,7 +885,11 @@ void taos_init_imp(void) {
|
||||||
taosSetCoreDump(true);
|
taosSetCoreDump(true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
initTaskQueue();
|
if (initTaskQueue() != 0){
|
||||||
|
tscInitRes = -1;
|
||||||
|
tscError("failed to init task queue");
|
||||||
|
return;
|
||||||
|
}
|
||||||
fmFuncMgtInit();
|
fmFuncMgtInit();
|
||||||
nodesInitAllocatorSet();
|
nodesInitAllocatorSet();
|
||||||
|
|
||||||
|
|
|
@ -460,8 +460,14 @@ static void buildChildElement(cJSON* json, SVCreateTbReq* pCreateReq) {
|
||||||
} else {
|
} else {
|
||||||
buf = taosMemoryCalloc(pTagVal->nData + 3, 1);
|
buf = taosMemoryCalloc(pTagVal->nData + 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
RAW_NULL_CHECK(buf);
|
RAW_NULL_CHECK(buf);
|
||||||
RAW_RETURN_CHECK(dataConverToStr(buf, pTagVal->type, pTagVal->pData, pTagVal->nData, NULL));
|
if (!buf) goto end;
|
||||||
|
if(dataConverToStr(buf, pTagVal->type, pTagVal->pData, pTagVal->nData, NULL) != TSDB_CODE_SUCCESS) {
|
||||||
|
taosMemoryFree(buf);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
tvalue = cJSON_CreateString(buf);
|
tvalue = cJSON_CreateString(buf);
|
||||||
RAW_NULL_CHECK(tvalue);
|
RAW_NULL_CHECK(tvalue);
|
||||||
taosMemoryFree(buf);
|
taosMemoryFree(buf);
|
||||||
|
@ -729,7 +735,10 @@ static void processAlterTable(SMqMetaRsp* metaRsp, cJSON** pJson) {
|
||||||
buf = taosMemoryCalloc(vAlterTbReq.nTagVal + 3, 1);
|
buf = taosMemoryCalloc(vAlterTbReq.nTagVal + 3, 1);
|
||||||
}
|
}
|
||||||
RAW_NULL_CHECK(buf);
|
RAW_NULL_CHECK(buf);
|
||||||
RAW_RETURN_CHECK(dataConverToStr(buf, vAlterTbReq.tagType, vAlterTbReq.pTagVal, vAlterTbReq.nTagVal, NULL));
|
if(dataConverToStr(buf, vAlterTbReq.tagType, vAlterTbReq.pTagVal, vAlterTbReq.nTagVal, NULL) != TSDB_CODE_SUCCESS) {
|
||||||
|
taosMemoryFree(buf);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cJSON* colValue = cJSON_CreateString(buf);
|
cJSON* colValue = cJSON_CreateString(buf);
|
||||||
|
|
|
@ -23,6 +23,15 @@
|
||||||
#include "tglobal.h"
|
#include "tglobal.h"
|
||||||
#include "tgrant.h"
|
#include "tgrant.h"
|
||||||
|
|
||||||
|
#define COL_DATA_SET_VAL_AND_CHECK(pCol, rows, buf, isNull) \
|
||||||
|
do { \
|
||||||
|
int _code = colDataSetVal(pCol, rows, buf, isNull);\
|
||||||
|
if (TSDB_CODE_SUCCESS != _code) { \
|
||||||
|
terrno = _code; \
|
||||||
|
return _code; \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
extern SConfig* tsCfg;
|
extern SConfig* tsCfg;
|
||||||
|
|
||||||
static int32_t buildRetrieveTableRsp(SSDataBlock* pBlock, int32_t numOfCols, SRetrieveTableRsp** pRsp) {
|
static int32_t buildRetrieveTableRsp(SSDataBlock* pBlock, int32_t numOfCols, SRetrieveTableRsp** pRsp) {
|
||||||
|
@ -100,7 +109,7 @@ static int32_t buildDescResultDataBlock(SSDataBlock** pOutput) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
*pOutput = pBlock;
|
*pOutput = pBlock;
|
||||||
} else {
|
} else {
|
||||||
blockDataDestroy(pBlock);
|
(void)blockDataDestroy(pBlock);
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -108,7 +117,7 @@ static int32_t buildDescResultDataBlock(SSDataBlock** pOutput) {
|
||||||
static int32_t setDescResultIntoDataBlock(bool sysInfoUser, SSDataBlock* pBlock, int32_t numOfRows, STableMeta* pMeta,
|
static int32_t setDescResultIntoDataBlock(bool sysInfoUser, SSDataBlock* pBlock, int32_t numOfRows, STableMeta* pMeta,
|
||||||
int8_t biMode) {
|
int8_t biMode) {
|
||||||
int32_t blockCap = (biMode != 0) ? numOfRows + 1 : numOfRows;
|
int32_t blockCap = (biMode != 0) ? numOfRows + 1 : numOfRows;
|
||||||
blockDataEnsureCapacity(pBlock, blockCap);
|
QRY_ERR_RET(blockDataEnsureCapacity(pBlock, blockCap));
|
||||||
pBlock->info.rows = 0;
|
pBlock->info.rows = 0;
|
||||||
|
|
||||||
// field
|
// field
|
||||||
|
@ -138,11 +147,12 @@ static int32_t setDescResultIntoDataBlock(bool sysInfoUser, SSDataBlock* pBlock,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
STR_TO_VARSTR(buf, pMeta->schema[i].name);
|
STR_TO_VARSTR(buf, pMeta->schema[i].name);
|
||||||
colDataSetVal(pCol1, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol1, pBlock->info.rows, buf, false);
|
||||||
|
|
||||||
STR_TO_VARSTR(buf, tDataTypes[pMeta->schema[i].type].name);
|
STR_TO_VARSTR(buf, tDataTypes[pMeta->schema[i].type].name);
|
||||||
colDataSetVal(pCol2, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol2, pBlock->info.rows, buf, false);
|
||||||
int32_t bytes = getSchemaBytes(pMeta->schema + i);
|
int32_t bytes = getSchemaBytes(pMeta->schema + i);
|
||||||
colDataSetVal(pCol3, pBlock->info.rows, (const char*)&bytes, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol3, pBlock->info.rows, (const char*)&bytes, false);
|
||||||
if (TSDB_VIEW_TABLE != pMeta->tableType) {
|
if (TSDB_VIEW_TABLE != pMeta->tableType) {
|
||||||
if (i >= pMeta->tableInfo.numOfColumns) {
|
if (i >= pMeta->tableInfo.numOfColumns) {
|
||||||
STR_TO_VARSTR(buf, "TAG");
|
STR_TO_VARSTR(buf, "TAG");
|
||||||
|
@ -155,22 +165,22 @@ static int32_t setDescResultIntoDataBlock(bool sysInfoUser, SSDataBlock* pBlock,
|
||||||
} else {
|
} else {
|
||||||
STR_TO_VARSTR(buf, "VIEW COL");
|
STR_TO_VARSTR(buf, "VIEW COL");
|
||||||
}
|
}
|
||||||
colDataSetVal(pCol4, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol4, pBlock->info.rows, buf, false);
|
||||||
if (useCompress(pMeta->tableType) && pMeta->schemaExt) {
|
if (useCompress(pMeta->tableType) && pMeta->schemaExt) {
|
||||||
if (i < pMeta->tableInfo.numOfColumns) {
|
if (i < pMeta->tableInfo.numOfColumns) {
|
||||||
STR_TO_VARSTR(buf, columnEncodeStr(COMPRESS_L1_TYPE_U32(pMeta->schemaExt[i].compress)));
|
STR_TO_VARSTR(buf, columnEncodeStr(COMPRESS_L1_TYPE_U32(pMeta->schemaExt[i].compress)));
|
||||||
colDataSetVal(pCol5, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol5, pBlock->info.rows, buf, false);
|
||||||
STR_TO_VARSTR(buf, columnCompressStr(COMPRESS_L2_TYPE_U32(pMeta->schemaExt[i].compress)));
|
STR_TO_VARSTR(buf, columnCompressStr(COMPRESS_L2_TYPE_U32(pMeta->schemaExt[i].compress)));
|
||||||
colDataSetVal(pCol6, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol6, pBlock->info.rows, buf, false);
|
||||||
STR_TO_VARSTR(buf, columnLevelStr(COMPRESS_L2_TYPE_LEVEL_U32(pMeta->schemaExt[i].compress)));
|
STR_TO_VARSTR(buf, columnLevelStr(COMPRESS_L2_TYPE_LEVEL_U32(pMeta->schemaExt[i].compress)));
|
||||||
colDataSetVal(pCol7, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol7, pBlock->info.rows, buf, false);
|
||||||
} else {
|
} else {
|
||||||
STR_TO_VARSTR(buf, fillTagCol == 0 ? "" : "disabled");
|
STR_TO_VARSTR(buf, fillTagCol == 0 ? "" : "disabled");
|
||||||
colDataSetVal(pCol5, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol5, pBlock->info.rows, buf, false);
|
||||||
STR_TO_VARSTR(buf, fillTagCol == 0 ? "" : "disabled");
|
STR_TO_VARSTR(buf, fillTagCol == 0 ? "" : "disabled");
|
||||||
colDataSetVal(pCol6, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol6, pBlock->info.rows, buf, false);
|
||||||
STR_TO_VARSTR(buf, fillTagCol == 0 ? "" : "disabled");
|
STR_TO_VARSTR(buf, fillTagCol == 0 ? "" : "disabled");
|
||||||
colDataSetVal(pCol7, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol7, pBlock->info.rows, buf, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,13 +190,13 @@ static int32_t setDescResultIntoDataBlock(bool sysInfoUser, SSDataBlock* pBlock,
|
||||||
}
|
}
|
||||||
if (pMeta->tableType == TSDB_SUPER_TABLE && biMode != 0) {
|
if (pMeta->tableType == TSDB_SUPER_TABLE && biMode != 0) {
|
||||||
STR_TO_VARSTR(buf, "tbname");
|
STR_TO_VARSTR(buf, "tbname");
|
||||||
colDataSetVal(pCol1, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol1, pBlock->info.rows, buf, false);
|
||||||
STR_TO_VARSTR(buf, "VARCHAR");
|
STR_TO_VARSTR(buf, "VARCHAR");
|
||||||
colDataSetVal(pCol2, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol2, pBlock->info.rows, buf, false);
|
||||||
int32_t bytes = TSDB_TABLE_NAME_LEN - 1;
|
int32_t bytes = TSDB_TABLE_NAME_LEN - 1;
|
||||||
colDataSetVal(pCol3, pBlock->info.rows, (const char*)&bytes, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol3, pBlock->info.rows, (const char*)&bytes, false);
|
||||||
STR_TO_VARSTR(buf, "TAG");
|
STR_TO_VARSTR(buf, "TAG");
|
||||||
colDataSetVal(pCol4, pBlock->info.rows, buf, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol4, pBlock->info.rows, buf, false);
|
||||||
++(pBlock->info.rows);
|
++(pBlock->info.rows);
|
||||||
}
|
}
|
||||||
if (pBlock->info.rows <= 0) {
|
if (pBlock->info.rows <= 0) {
|
||||||
|
@ -212,7 +222,7 @@ static int32_t execDescribe(bool sysInfoUser, SNode* pStmt, SRetrieveTableRsp**
|
||||||
code = buildRetrieveTableRsp(pBlock, DESCRIBE_RESULT_COLS, pRsp);
|
code = buildRetrieveTableRsp(pBlock, DESCRIBE_RESULT_COLS, pRsp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
blockDataDestroy(pBlock);
|
(void)blockDataDestroy(pBlock);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,7 +244,7 @@ static int32_t buildCreateDBResultDataBlock(SSDataBlock** pOutput) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
*pOutput = pBlock;
|
*pOutput = pBlock;
|
||||||
} else {
|
} else {
|
||||||
blockDataDestroy(pBlock);
|
(void)blockDataDestroy(pBlock);
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -264,13 +274,17 @@ int64_t getValOfDiffPrecision(int8_t unit, int64_t val) {
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char* buildRetension(SArray* pRetension) {
|
static int32_t buildRetension(SArray* pRetension, char **ppRetentions ) {
|
||||||
size_t size = taosArrayGetSize(pRetension);
|
size_t size = taosArrayGetSize(pRetension);
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
return NULL;
|
*ppRetentions = NULL;
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* p1 = taosMemoryCalloc(1, 100);
|
char* p1 = taosMemoryCalloc(1, 100);
|
||||||
|
if(NULL == p1) {
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
int32_t len = 0;
|
int32_t len = 0;
|
||||||
|
|
||||||
for (int32_t i = 0; i < size; ++i) {
|
for (int32_t i = 0; i < size; ++i) {
|
||||||
|
@ -288,7 +302,8 @@ static char* buildRetension(SArray* pRetension) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return p1;
|
*ppRetentions = p1;
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char* cacheModelStr(int8_t cacheModel) {
|
static const char* cacheModelStr(int8_t cacheModel) {
|
||||||
|
@ -319,14 +334,14 @@ static const char* encryptAlgorithmStr(int8_t encryptAlgorithm) {
|
||||||
return TSDB_CACHE_MODEL_NONE_STR;
|
return TSDB_CACHE_MODEL_NONE_STR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbName, char* dbFName, SDbCfgInfo* pCfg) {
|
static int32_t setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbName, char* dbFName, SDbCfgInfo* pCfg) {
|
||||||
blockDataEnsureCapacity(pBlock, 1);
|
QRY_ERR_RET(blockDataEnsureCapacity(pBlock, 1));
|
||||||
pBlock->info.rows = 1;
|
pBlock->info.rows = 1;
|
||||||
|
|
||||||
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
|
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
|
||||||
char buf1[SHOW_CREATE_DB_RESULT_FIELD1_LEN] = {0};
|
char buf1[SHOW_CREATE_DB_RESULT_FIELD1_LEN] = {0};
|
||||||
STR_TO_VARSTR(buf1, dbName);
|
STR_TO_VARSTR(buf1, dbName);
|
||||||
colDataSetVal(pCol1, 0, buf1, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol1, 0, buf1, false);
|
||||||
|
|
||||||
SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1);
|
SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1);
|
||||||
char buf2[SHOW_CREATE_DB_RESULT_FIELD2_LEN] = {0};
|
char buf2[SHOW_CREATE_DB_RESULT_FIELD2_LEN] = {0};
|
||||||
|
@ -347,7 +362,8 @@ static void setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbName, ch
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* retentions = buildRetension(pCfg->pRetensions);
|
char* pRetentions = NULL;
|
||||||
|
QRY_ERR_RET(buildRetension(pCfg->pRetensions, &pRetentions));
|
||||||
int32_t dbFNameLen = strlen(dbFName);
|
int32_t dbFNameLen = strlen(dbFName);
|
||||||
int32_t hashPrefix = 0;
|
int32_t hashPrefix = 0;
|
||||||
if (pCfg->hashPrefix > 0) {
|
if (pCfg->hashPrefix > 0) {
|
||||||
|
@ -374,28 +390,30 @@ static void setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbName, ch
|
||||||
pCfg->keepTimeOffset, encryptAlgorithmStr(pCfg->encryptAlgorithm), pCfg->s3ChunkSize,
|
pCfg->keepTimeOffset, encryptAlgorithmStr(pCfg->encryptAlgorithm), pCfg->s3ChunkSize,
|
||||||
pCfg->s3KeepLocal, pCfg->s3Compact);
|
pCfg->s3KeepLocal, pCfg->s3Compact);
|
||||||
|
|
||||||
if (retentions) {
|
if (pRetentions) {
|
||||||
len += sprintf(buf2 + VARSTR_HEADER_SIZE + len, " RETENTIONS %s", retentions);
|
len += sprintf(buf2 + VARSTR_HEADER_SIZE + len, " RETENTIONS %s", pRetentions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
taosMemoryFree(retentions);
|
taosMemoryFree(pRetentions);
|
||||||
|
|
||||||
(varDataLen(buf2)) = len;
|
(varDataLen(buf2)) = len;
|
||||||
|
|
||||||
colDataSetVal(pCol2, 0, buf2, false);
|
COL_DATA_SET_VAL_AND_CHECK(pCol2, 0, buf2, false);
|
||||||
|
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t execShowCreateDatabase(SShowCreateDatabaseStmt* pStmt, SRetrieveTableRsp** pRsp) {
|
static int32_t execShowCreateDatabase(SShowCreateDatabaseStmt* pStmt, SRetrieveTableRsp** pRsp) {
|
||||||
SSDataBlock* pBlock = NULL;
|
SSDataBlock* pBlock = NULL;
|
||||||
int32_t code = buildCreateDBResultDataBlock(&pBlock);
|
int32_t code = buildCreateDBResultDataBlock(&pBlock);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
setCreateDBResultIntoDataBlock(pBlock, pStmt->dbName, pStmt->dbFName, pStmt->pCfg);
|
code = setCreateDBResultIntoDataBlock(pBlock, pStmt->dbName, pStmt->dbFName, pStmt->pCfg);
|
||||||
}
|
}
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = buildRetrieveTableRsp(pBlock, SHOW_CREATE_DB_RESULT_COLS, pRsp);
|
code = buildRetrieveTableRsp(pBlock, SHOW_CREATE_DB_RESULT_COLS, pRsp);
|
||||||
}
|
}
|
||||||
blockDataDestroy(pBlock);
|
(void)blockDataDestroy(pBlock);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -415,7 +433,7 @@ static int32_t buildCreateTbResultDataBlock(SSDataBlock** pOutput) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
*pOutput = pBlock;
|
*pOutput = pBlock;
|
||||||
} else {
|
} else {
|
||||||
blockDataDestroy(pBlock);
|
(void)blockDataDestroy(pBlock);
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -436,7 +454,7 @@ static int32_t buildCreateViewResultDataBlock(SSDataBlock** pOutput) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
*pOutput = pBlock;
|
*pOutput = pBlock;
|
||||||
} else {
|
} else {
|
||||||
blockDataDestroy(pBlock);
|
(void)blockDataDestroy(pBlock);
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -494,6 +512,7 @@ void appendTagNameFields(char* buf, int32_t* len, STableCfg* pCfg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t appendTagValues(char* buf, int32_t* len, STableCfg* pCfg) {
|
int32_t appendTagValues(char* buf, int32_t* len, STableCfg* pCfg) {
|
||||||
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
SArray* pTagVals = NULL;
|
SArray* pTagVals = NULL;
|
||||||
STag* pTag = (STag*)pCfg->pTags;
|
STag* pTag = (STag*)pCfg->pTags;
|
||||||
|
|
||||||
|
@ -511,11 +530,7 @@ int32_t appendTagValues(char* buf, int32_t* len, STableCfg* pCfg) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t code = tTagToValArray((const STag*)pCfg->pTags, &pTagVals);
|
QRY_ERR_RET(tTagToValArray((const STag*)pCfg->pTags, &pTagVals));
|
||||||
if (code) {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
int16_t valueNum = taosArrayGetSize(pTagVals);
|
int16_t valueNum = taosArrayGetSize(pTagVals);
|
||||||
int32_t num = 0;
|
int32_t num = 0;
|
||||||
int32_t j = 0;
|
int32_t j = 0;
|
||||||
|
@ -533,16 +548,18 @@ int32_t appendTagValues(char* buf, int32_t* len, STableCfg* pCfg) {
|
||||||
STagVal* pTagVal = (STagVal*)taosArrayGet(pTagVals, j);
|
STagVal* pTagVal = (STagVal*)taosArrayGet(pTagVals, j);
|
||||||
if (pSchema->colId > pTagVal->cid) {
|
if (pSchema->colId > pTagVal->cid) {
|
||||||
qError("tag value and column mismatch, schemaId:%d, valId:%d", pSchema->colId, pTagVal->cid);
|
qError("tag value and column mismatch, schemaId:%d, valId:%d", pSchema->colId, pTagVal->cid);
|
||||||
taosArrayDestroy(pTagVals);
|
code = TSDB_CODE_APP_ERROR;
|
||||||
return TSDB_CODE_APP_ERROR;
|
TAOS_CHECK_ERRNO(code);
|
||||||
} else if (pSchema->colId == pTagVal->cid) {
|
} else if (pSchema->colId == pTagVal->cid) {
|
||||||
char type = pTagVal->type;
|
char type = pTagVal->type;
|
||||||
int32_t tlen = 0;
|
int32_t tlen = 0;
|
||||||
|
|
||||||
if (IS_VAR_DATA_TYPE(type)) {
|
if (IS_VAR_DATA_TYPE(type)) {
|
||||||
dataConverToStr(buf + VARSTR_HEADER_SIZE + *len, type, pTagVal->pData, pTagVal->nData, &tlen);
|
code = dataConverToStr(buf + VARSTR_HEADER_SIZE + *len, type, pTagVal->pData, pTagVal->nData, &tlen);
|
||||||
|
TAOS_CHECK_ERRNO(code);
|
||||||
} else {
|
} else {
|
||||||
dataConverToStr(buf + VARSTR_HEADER_SIZE + *len, type, &pTagVal->i64, tDataTypes[type].bytes, &tlen);
|
code = dataConverToStr(buf + VARSTR_HEADER_SIZE + *len, type, &pTagVal->i64, tDataTypes[type].bytes, &tlen);
|
||||||
|
TAOS_CHECK_ERRNO(code);
|
||||||
}
|
}
|
||||||
*len += tlen;
|
*len += tlen;
|
||||||
j++;
|
j++;
|
||||||
|
@ -579,9 +596,10 @@ int32_t appendTagValues(char* buf, int32_t* len, STableCfg* pCfg) {
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_exit:
|
||||||
taosArrayDestroy(pTagVals);
|
taosArrayDestroy(pTagVals);
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
void appendTableOptions(char* buf, int32_t* len, SDbCfgInfo* pDbCfg, STableCfg* pCfg) {
|
void appendTableOptions(char* buf, int32_t* len, SDbCfgInfo* pDbCfg, STableCfg* pCfg) {
|
||||||
|
@ -646,20 +664,19 @@ void appendTableOptions(char* buf, int32_t* len, SDbCfgInfo* pDbCfg, STableCfg*
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t setCreateTBResultIntoDataBlock(SSDataBlock* pBlock, SDbCfgInfo* pDbCfg, char* tbName, STableCfg* pCfg) {
|
static int32_t setCreateTBResultIntoDataBlock(SSDataBlock* pBlock, SDbCfgInfo* pDbCfg, char* tbName, STableCfg* pCfg) {
|
||||||
int32_t code = 0;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
blockDataEnsureCapacity(pBlock, 1);
|
QRY_ERR_RET(blockDataEnsureCapacity(pBlock, 1));
|
||||||
pBlock->info.rows = 1;
|
pBlock->info.rows = 1;
|
||||||
|
|
||||||
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
|
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
|
||||||
char buf1[SHOW_CREATE_TB_RESULT_FIELD1_LEN] = {0};
|
char buf1[SHOW_CREATE_TB_RESULT_FIELD1_LEN] = {0};
|
||||||
STR_TO_VARSTR(buf1, tbName);
|
STR_TO_VARSTR(buf1, tbName);
|
||||||
colDataSetVal(pCol1, 0, buf1, false);
|
QRY_ERR_RET(colDataSetVal(pCol1, 0, buf1, false));
|
||||||
|
|
||||||
SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1);
|
SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1);
|
||||||
char* buf2 = taosMemoryMalloc(SHOW_CREATE_TB_RESULT_FIELD2_LEN);
|
char* buf2 = taosMemoryMalloc(SHOW_CREATE_TB_RESULT_FIELD2_LEN);
|
||||||
if (NULL == buf2) {
|
if (NULL == buf2) {
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
QRY_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
return terrno;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t len = 0;
|
int32_t len = 0;
|
||||||
|
@ -676,10 +693,7 @@ static int32_t setCreateTBResultIntoDataBlock(SSDataBlock* pBlock, SDbCfgInfo* p
|
||||||
appendTagNameFields(buf2, &len, pCfg);
|
appendTagNameFields(buf2, &len, pCfg);
|
||||||
len += sprintf(buf2 + VARSTR_HEADER_SIZE + len, ") TAGS (");
|
len += sprintf(buf2 + VARSTR_HEADER_SIZE + len, ") TAGS (");
|
||||||
code = appendTagValues(buf2, &len, pCfg);
|
code = appendTagValues(buf2, &len, pCfg);
|
||||||
if (code) {
|
TAOS_CHECK_ERRNO(code);
|
||||||
taosMemoryFree(buf2);
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
len += sprintf(buf2 + VARSTR_HEADER_SIZE + len, ")");
|
len += sprintf(buf2 + VARSTR_HEADER_SIZE + len, ")");
|
||||||
appendTableOptions(buf2, &len, pDbCfg, pCfg);
|
appendTableOptions(buf2, &len, pDbCfg, pCfg);
|
||||||
} else {
|
} else {
|
||||||
|
@ -691,29 +705,30 @@ static int32_t setCreateTBResultIntoDataBlock(SSDataBlock* pBlock, SDbCfgInfo* p
|
||||||
|
|
||||||
varDataLen(buf2) = (len > 65535) ? 65535 : len;
|
varDataLen(buf2) = (len > 65535) ? 65535 : len;
|
||||||
|
|
||||||
colDataSetVal(pCol2, 0, buf2, false);
|
code = colDataSetVal(pCol2, 0, buf2, false);
|
||||||
|
TAOS_CHECK_ERRNO(code);
|
||||||
|
|
||||||
|
_exit:
|
||||||
taosMemoryFree(buf2);
|
taosMemoryFree(buf2);
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t setCreateViewResultIntoDataBlock(SSDataBlock* pBlock, SShowCreateViewStmt* pStmt) {
|
static int32_t setCreateViewResultIntoDataBlock(SSDataBlock* pBlock, SShowCreateViewStmt* pStmt) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
blockDataEnsureCapacity(pBlock, 1);
|
QRY_ERR_RET(blockDataEnsureCapacity(pBlock, 1));
|
||||||
pBlock->info.rows = 1;
|
pBlock->info.rows = 1;
|
||||||
|
|
||||||
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
|
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
|
||||||
char buf1[SHOW_CREATE_VIEW_RESULT_FIELD1_LEN + 1] = {0};
|
char buf1[SHOW_CREATE_VIEW_RESULT_FIELD1_LEN + 1] = {0};
|
||||||
snprintf(varDataVal(buf1), TSDB_VIEW_FNAME_LEN + 4, "`%s`.`%s`", pStmt->dbName, pStmt->viewName);
|
snprintf(varDataVal(buf1), TSDB_VIEW_FNAME_LEN + 4, "`%s`.`%s`", pStmt->dbName, pStmt->viewName);
|
||||||
varDataSetLen(buf1, strlen(varDataVal(buf1)));
|
varDataSetLen(buf1, strlen(varDataVal(buf1)));
|
||||||
colDataSetVal(pCol1, 0, buf1, false);
|
QRY_ERR_RET(colDataSetVal(pCol1, 0, buf1, false));
|
||||||
|
|
||||||
SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1);
|
SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1);
|
||||||
char* buf2 = taosMemoryMalloc(SHOW_CREATE_VIEW_RESULT_FIELD2_LEN);
|
char* buf2 = taosMemoryMalloc(SHOW_CREATE_VIEW_RESULT_FIELD2_LEN);
|
||||||
if (NULL == buf2) {
|
if (NULL == buf2) {
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
QRY_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
return terrno;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SViewMeta* pMeta = pStmt->pViewMeta;
|
SViewMeta* pMeta = pStmt->pViewMeta;
|
||||||
|
@ -722,11 +737,10 @@ static int32_t setCreateViewResultIntoDataBlock(SSDataBlock* pBlock, SShowCreate
|
||||||
pStmt->dbName, pStmt->viewName, pMeta->querySql);
|
pStmt->dbName, pStmt->viewName, pMeta->querySql);
|
||||||
int32_t len = strlen(varDataVal(buf2));
|
int32_t len = strlen(varDataVal(buf2));
|
||||||
varDataLen(buf2) = (len > 65535) ? 65535 : len;
|
varDataLen(buf2) = (len > 65535) ? 65535 : len;
|
||||||
colDataSetVal(pCol2, 0, buf2, false);
|
code = colDataSetVal(pCol2, 0, buf2, false);
|
||||||
|
|
||||||
taosMemoryFree(buf2);
|
taosMemoryFree(buf2);
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t execShowCreateTable(SShowCreateTableStmt* pStmt, SRetrieveTableRsp** pRsp) {
|
static int32_t execShowCreateTable(SShowCreateTableStmt* pStmt, SRetrieveTableRsp** pRsp) {
|
||||||
|
@ -738,7 +752,7 @@ static int32_t execShowCreateTable(SShowCreateTableStmt* pStmt, SRetrieveTableRs
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = buildRetrieveTableRsp(pBlock, SHOW_CREATE_TB_RESULT_COLS, pRsp);
|
code = buildRetrieveTableRsp(pBlock, SHOW_CREATE_TB_RESULT_COLS, pRsp);
|
||||||
}
|
}
|
||||||
blockDataDestroy(pBlock);
|
(void)blockDataDestroy(pBlock);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -831,23 +845,39 @@ static int32_t buildLocalVariablesResultDataBlock(SSDataBlock** pOutput) {
|
||||||
pBlock->info.hasVarCol = true;
|
pBlock->info.hasVarCol = true;
|
||||||
|
|
||||||
pBlock->pDataBlock = taosArrayInit(SHOW_LOCAL_VARIABLES_RESULT_COLS, sizeof(SColumnInfoData));
|
pBlock->pDataBlock = taosArrayInit(SHOW_LOCAL_VARIABLES_RESULT_COLS, sizeof(SColumnInfoData));
|
||||||
|
if (NULL == pBlock->pDataBlock) {
|
||||||
|
taosMemoryFree(pBlock);
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
SColumnInfoData infoData = {0};
|
SColumnInfoData infoData = {0};
|
||||||
|
|
||||||
infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
|
infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
|
||||||
infoData.info.bytes = SHOW_LOCAL_VARIABLES_RESULT_FIELD1_LEN;
|
infoData.info.bytes = SHOW_LOCAL_VARIABLES_RESULT_FIELD1_LEN;
|
||||||
taosArrayPush(pBlock->pDataBlock, &infoData);
|
if(taosArrayPush(pBlock->pDataBlock, &infoData) == NULL) {
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
|
infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
|
||||||
infoData.info.bytes = SHOW_LOCAL_VARIABLES_RESULT_FIELD2_LEN;
|
infoData.info.bytes = SHOW_LOCAL_VARIABLES_RESULT_FIELD2_LEN;
|
||||||
taosArrayPush(pBlock->pDataBlock, &infoData);
|
if(taosArrayPush(pBlock->pDataBlock, &infoData) == NULL) {
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
|
infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
|
||||||
infoData.info.bytes = SHOW_LOCAL_VARIABLES_RESULT_FIELD3_LEN;
|
infoData.info.bytes = SHOW_LOCAL_VARIABLES_RESULT_FIELD3_LEN;
|
||||||
taosArrayPush(pBlock->pDataBlock, &infoData);
|
if(taosArrayPush(pBlock->pDataBlock, &infoData) == NULL) {
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
*pOutput = pBlock;
|
*pOutput = pBlock;
|
||||||
return TSDB_CODE_SUCCESS;
|
|
||||||
|
_exit:
|
||||||
|
if(terrno != TSDB_CODE_SUCCESS) {
|
||||||
|
taosMemoryFree(pBlock);
|
||||||
|
taosArrayDestroy(pBlock->pDataBlock);
|
||||||
|
}
|
||||||
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t execShowLocalVariables(SRetrieveTableRsp** pRsp) {
|
static int32_t execShowLocalVariables(SRetrieveTableRsp** pRsp) {
|
||||||
|
@ -859,7 +889,7 @@ static int32_t execShowLocalVariables(SRetrieveTableRsp** pRsp) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = buildRetrieveTableRsp(pBlock, SHOW_LOCAL_VARIABLES_RESULT_COLS, pRsp);
|
code = buildRetrieveTableRsp(pBlock, SHOW_LOCAL_VARIABLES_RESULT_COLS, pRsp);
|
||||||
}
|
}
|
||||||
blockDataDestroy(pBlock);
|
(void)blockDataDestroy(pBlock);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -880,14 +910,14 @@ static int32_t createSelectResultDataBlock(SNodeList* pProjects, SSDataBlock** p
|
||||||
infoData.info.type = pExpr->resType.type;
|
infoData.info.type = pExpr->resType.type;
|
||||||
infoData.info.bytes = pExpr->resType.bytes;
|
infoData.info.bytes = pExpr->resType.bytes;
|
||||||
}
|
}
|
||||||
blockDataAppendColInfo(pBlock, &infoData);
|
QRY_ERR_RET(blockDataAppendColInfo(pBlock, &infoData));
|
||||||
}
|
}
|
||||||
*pOutput = pBlock;
|
*pOutput = pBlock;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t buildSelectResultDataBlock(SNodeList* pProjects, SSDataBlock* pBlock) {
|
int32_t buildSelectResultDataBlock(SNodeList* pProjects, SSDataBlock* pBlock) {
|
||||||
blockDataEnsureCapacity(pBlock, 1);
|
QRY_ERR_RET(blockDataEnsureCapacity(pBlock, 1));
|
||||||
|
|
||||||
int32_t index = 0;
|
int32_t index = 0;
|
||||||
SNode* pProj = NULL;
|
SNode* pProj = NULL;
|
||||||
|
@ -896,9 +926,9 @@ int32_t buildSelectResultDataBlock(SNodeList* pProjects, SSDataBlock* pBlock) {
|
||||||
return TSDB_CODE_PAR_INVALID_SELECTED_EXPR;
|
return TSDB_CODE_PAR_INVALID_SELECTED_EXPR;
|
||||||
} else {
|
} else {
|
||||||
if (((SValueNode*)pProj)->isNull) {
|
if (((SValueNode*)pProj)->isNull) {
|
||||||
colDataSetVal(taosArrayGet(pBlock->pDataBlock, index++), 0, NULL, true);
|
QRY_ERR_RET(colDataSetVal(taosArrayGet(pBlock->pDataBlock, index++), 0, NULL, true));
|
||||||
} else {
|
} else {
|
||||||
colDataSetVal(taosArrayGet(pBlock->pDataBlock, index++), 0, nodesGetValueFromNode((SValueNode*)pProj), false);
|
QRY_ERR_RET(colDataSetVal(taosArrayGet(pBlock->pDataBlock, index++), 0, nodesGetValueFromNode((SValueNode*)pProj), false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -916,7 +946,7 @@ static int32_t execSelectWithoutFrom(SSelectStmt* pSelect, SRetrieveTableRsp** p
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = buildRetrieveTableRsp(pBlock, LIST_LENGTH(pSelect->pProjectionList), pRsp);
|
code = buildRetrieveTableRsp(pBlock, LIST_LENGTH(pSelect->pProjectionList), pRsp);
|
||||||
}
|
}
|
||||||
blockDataDestroy(pBlock);
|
(void)blockDataDestroy(pBlock);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -929,7 +959,7 @@ static int32_t execShowCreateView(SShowCreateViewStmt* pStmt, SRetrieveTableRsp*
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = buildRetrieveTableRsp(pBlock, SHOW_CREATE_VIEW_RESULT_COLS, pRsp);
|
code = buildRetrieveTableRsp(pBlock, SHOW_CREATE_VIEW_RESULT_COLS, pRsp);
|
||||||
}
|
}
|
||||||
blockDataDestroy(pBlock);
|
(void)blockDataDestroy(pBlock);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,7 @@ int32_t qExplainGenerateResNodeExecInfo(SPhysiNode *pNode, SArray **pExecInfo, S
|
||||||
return TSDB_CODE_APP_ERROR;
|
return TSDB_CODE_APP_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
taosArrayPush(*pExecInfo, rsp->subplanInfo + group->physiPlanExecIdx);
|
if(taosArrayPush(*pExecInfo, rsp->subplanInfo + group->physiPlanExecIdx) == NULL) return terrno;
|
||||||
} else {
|
} else {
|
||||||
for (int32_t i = 0; i < group->nodeNum; ++i) {
|
for (int32_t i = 0; i < group->nodeNum; ++i) {
|
||||||
rsp = taosArrayGet(group->nodeExecInfo, i);
|
rsp = taosArrayGet(group->nodeExecInfo, i);
|
||||||
|
@ -208,7 +208,7 @@ int32_t qExplainGenerateResNodeExecInfo(SPhysiNode *pNode, SArray **pExecInfo, S
|
||||||
return TSDB_CODE_APP_ERROR;
|
return TSDB_CODE_APP_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
taosArrayPush(*pExecInfo, rsp->subplanInfo + group->physiPlanExecIdx);
|
if(taosArrayPush(*pExecInfo, rsp->subplanInfo + group->physiPlanExecIdx) == NULL) return terrno;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1920,6 +1920,7 @@ _return:
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qExplainGetRspFromCtx(void *ctx, SRetrieveTableRsp **pRsp) {
|
int32_t qExplainGetRspFromCtx(void *ctx, SRetrieveTableRsp **pRsp) {
|
||||||
|
int32_t code = 0;
|
||||||
SExplainCtx *pCtx = (SExplainCtx *)ctx;
|
SExplainCtx *pCtx = (SExplainCtx *)ctx;
|
||||||
int32_t rowNum = taosArrayGetSize(pCtx->rows);
|
int32_t rowNum = taosArrayGetSize(pCtx->rows);
|
||||||
if (rowNum <= 0) {
|
if (rowNum <= 0) {
|
||||||
|
@ -1929,14 +1930,14 @@ int32_t qExplainGetRspFromCtx(void *ctx, SRetrieveTableRsp **pRsp) {
|
||||||
|
|
||||||
SSDataBlock *pBlock = createDataBlock();
|
SSDataBlock *pBlock = createDataBlock();
|
||||||
SColumnInfoData infoData = createColumnInfoData(TSDB_DATA_TYPE_VARCHAR, TSDB_EXPLAIN_RESULT_ROW_SIZE, 1);
|
SColumnInfoData infoData = createColumnInfoData(TSDB_DATA_TYPE_VARCHAR, TSDB_EXPLAIN_RESULT_ROW_SIZE, 1);
|
||||||
blockDataAppendColInfo(pBlock, &infoData);
|
QRY_ERR_JRET(blockDataAppendColInfo(pBlock, &infoData));
|
||||||
blockDataEnsureCapacity(pBlock, rowNum);
|
QRY_ERR_JRET(blockDataEnsureCapacity(pBlock, rowNum));
|
||||||
|
|
||||||
SColumnInfoData *pInfoData = taosArrayGet(pBlock->pDataBlock, 0);
|
SColumnInfoData *pInfoData = taosArrayGet(pBlock->pDataBlock, 0);
|
||||||
|
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
SQueryExplainRowInfo *row = taosArrayGet(pCtx->rows, i);
|
SQueryExplainRowInfo *row = taosArrayGet(pCtx->rows, i);
|
||||||
colDataSetVal(pInfoData, i, row->buf, false);
|
QRY_ERR_JRET(colDataSetVal(pInfoData, i, row->buf, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
pBlock->info.rows = rowNum;
|
pBlock->info.rows = rowNum;
|
||||||
|
@ -1946,8 +1947,7 @@ int32_t qExplainGetRspFromCtx(void *ctx, SRetrieveTableRsp **pRsp) {
|
||||||
SRetrieveTableRsp *rsp = (SRetrieveTableRsp *)taosMemoryCalloc(1, rspSize);
|
SRetrieveTableRsp *rsp = (SRetrieveTableRsp *)taosMemoryCalloc(1, rspSize);
|
||||||
if (NULL == rsp) {
|
if (NULL == rsp) {
|
||||||
qError("malloc SRetrieveTableRsp failed, size:%d", rspSize);
|
qError("malloc SRetrieveTableRsp failed, size:%d", rspSize);
|
||||||
blockDataDestroy(pBlock);
|
QRY_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
QRY_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rsp->completed = 1;
|
rsp->completed = 1;
|
||||||
|
@ -1961,10 +1961,11 @@ int32_t qExplainGetRspFromCtx(void *ctx, SRetrieveTableRsp **pRsp) {
|
||||||
|
|
||||||
SET_PAYLOAD_LEN(rsp->data, len, len);
|
SET_PAYLOAD_LEN(rsp->data, len, len);
|
||||||
|
|
||||||
|
_return:
|
||||||
blockDataDestroy(pBlock);
|
blockDataDestroy(pBlock);
|
||||||
|
|
||||||
*pRsp = rsp;
|
*pRsp = rsp;
|
||||||
return TSDB_CODE_SUCCESS;
|
QRY_RET(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qExplainPrepareCtx(SQueryPlan *pDag, SExplainCtx **pCtx) {
|
int32_t qExplainPrepareCtx(SQueryPlan *pDag, SExplainCtx **pCtx) {
|
||||||
|
@ -2099,32 +2100,30 @@ int32_t qExplainUpdateExecInfo(SExplainCtx *pCtx, SExplainRsp *pRspMsg, int32_t
|
||||||
group->nodeExecInfo = taosArrayInit(group->nodeNum, sizeof(SExplainRsp));
|
group->nodeExecInfo = taosArrayInit(group->nodeNum, sizeof(SExplainRsp));
|
||||||
if (NULL == group->nodeExecInfo) {
|
if (NULL == group->nodeExecInfo) {
|
||||||
qError("taosArrayInit %d explainExecInfo failed", group->nodeNum);
|
qError("taosArrayInit %d explainExecInfo failed", group->nodeNum);
|
||||||
tFreeSExplainRsp(pRspMsg);
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
taosWUnLockLatch(&group->lock);
|
TAOS_CHECK_ERRNO(code);
|
||||||
|
|
||||||
QRY_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group->physiPlanExecNum = pRspMsg->numOfPlans;
|
group->physiPlanExecNum = pRspMsg->numOfPlans;
|
||||||
} else if (taosArrayGetSize(group->nodeExecInfo) >= group->nodeNum) {
|
} else if (taosArrayGetSize(group->nodeExecInfo) >= group->nodeNum) {
|
||||||
qError("group execInfo already full, size:%d, nodeNum:%d", (int32_t)taosArrayGetSize(group->nodeExecInfo),
|
qError("group execInfo already full, size:%d, nodeNum:%d", (int32_t)taosArrayGetSize(group->nodeExecInfo),
|
||||||
group->nodeNum);
|
group->nodeNum);
|
||||||
tFreeSExplainRsp(pRspMsg);
|
code = TSDB_CODE_APP_ERROR;
|
||||||
taosWUnLockLatch(&group->lock);
|
TAOS_CHECK_ERRNO(code);
|
||||||
|
|
||||||
QRY_ERR_RET(TSDB_CODE_APP_ERROR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (group->physiPlanExecNum != pRspMsg->numOfPlans) {
|
if (group->physiPlanExecNum != pRspMsg->numOfPlans) {
|
||||||
qError("physiPlanExecNum %d mismatch with others %d in group %d", pRspMsg->numOfPlans, group->physiPlanExecNum,
|
qError("physiPlanExecNum %d mismatch with others %d in group %d", pRspMsg->numOfPlans, group->physiPlanExecNum,
|
||||||
groupId);
|
groupId);
|
||||||
tFreeSExplainRsp(pRspMsg);
|
code = TSDB_CODE_APP_ERROR;
|
||||||
taosWUnLockLatch(&group->lock);
|
TAOS_CHECK_ERRNO(code);
|
||||||
|
|
||||||
QRY_ERR_RET(TSDB_CODE_APP_ERROR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
taosArrayPush(group->nodeExecInfo, pRspMsg);
|
if(taosArrayPush(group->nodeExecInfo, pRspMsg) == NULL)
|
||||||
|
{
|
||||||
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
TAOS_CHECK_ERRNO(code);
|
||||||
|
}
|
||||||
|
|
||||||
groupDone = (taosArrayGetSize(group->nodeExecInfo) >= group->nodeNum);
|
groupDone = (taosArrayGetSize(group->nodeExecInfo) >= group->nodeNum);
|
||||||
|
|
||||||
|
@ -2140,6 +2139,11 @@ int32_t qExplainUpdateExecInfo(SExplainCtx *pCtx, SExplainRsp *pRspMsg, int32_t
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
|
_exit:
|
||||||
|
tFreeSExplainRsp(pRspMsg);
|
||||||
|
taosWUnLockLatch(&group->lock);
|
||||||
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qExecStaticExplain(SQueryPlan *pDag, SRetrieveTableRsp **pRsp) {
|
int32_t qExecStaticExplain(SQueryPlan *pDag, SRetrieveTableRsp **pRsp) {
|
||||||
|
|
|
@ -85,7 +85,10 @@ int32_t queryBuildTableMetaReqMsg(void *input, char **msg, int32_t msgSize, int3
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSTableInfoReq(NULL, 0, &infoReq);
|
int32_t bufLen = tSerializeSTableInfoReq(NULL, 0, &infoReq);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSTableInfoReq(pBuf, bufLen, &infoReq);
|
if(tSerializeSTableInfoReq(pBuf, bufLen, &infoReq) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -109,7 +112,10 @@ int32_t queryBuildUseDbMsg(void *input, char **msg, int32_t msgSize, int32_t *ms
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSUseDbReq(NULL, 0, &usedbReq);
|
int32_t bufLen = tSerializeSUseDbReq(NULL, 0, &usedbReq);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSUseDbReq(pBuf, bufLen, &usedbReq);
|
if(tSerializeSUseDbReq(pBuf, bufLen, &usedbReq) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -127,7 +133,10 @@ int32_t queryBuildQnodeListMsg(void *input, char **msg, int32_t msgSize, int32_t
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSQnodeListReq(NULL, 0, &qnodeListReq);
|
int32_t bufLen = tSerializeSQnodeListReq(NULL, 0, &qnodeListReq);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSQnodeListReq(pBuf, bufLen, &qnodeListReq);
|
if(tSerializeSQnodeListReq(pBuf, bufLen, &qnodeListReq) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -145,7 +154,10 @@ int32_t queryBuildDnodeListMsg(void *input, char **msg, int32_t msgSize, int32_t
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSDnodeListReq(NULL, 0, &dnodeListReq);
|
int32_t bufLen = tSerializeSDnodeListReq(NULL, 0, &dnodeListReq);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSDnodeListReq(pBuf, bufLen, &dnodeListReq);
|
if(tSerializeSDnodeListReq(pBuf, bufLen, &dnodeListReq) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -162,7 +174,10 @@ int32_t queryBuildGetSerVerMsg(void *input, char **msg, int32_t msgSize, int32_t
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSServerVerReq(NULL, 0, &req);
|
int32_t bufLen = tSerializeSServerVerReq(NULL, 0, &req);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSServerVerReq(pBuf, bufLen, &req);
|
if(tSerializeSServerVerReq(pBuf, bufLen, &req) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -180,7 +195,10 @@ int32_t queryBuildGetDBCfgMsg(void *input, char **msg, int32_t msgSize, int32_t
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSDbCfgReq(NULL, 0, &dbCfgReq);
|
int32_t bufLen = tSerializeSDbCfgReq(NULL, 0, &dbCfgReq);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSDbCfgReq(pBuf, bufLen, &dbCfgReq);
|
if(tSerializeSDbCfgReq(pBuf, bufLen, &dbCfgReq) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -198,7 +216,10 @@ int32_t queryBuildGetIndexMsg(void *input, char **msg, int32_t msgSize, int32_t
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSUserIndexReq(NULL, 0, &indexReq);
|
int32_t bufLen = tSerializeSUserIndexReq(NULL, 0, &indexReq);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSUserIndexReq(pBuf, bufLen, &indexReq);
|
if(tSerializeSUserIndexReq(pBuf, bufLen, &indexReq) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -216,11 +237,20 @@ int32_t queryBuildRetrieveFuncMsg(void *input, char **msg, int32_t msgSize, int3
|
||||||
funcReq.numOfFuncs = 1;
|
funcReq.numOfFuncs = 1;
|
||||||
funcReq.ignoreCodeComment = true;
|
funcReq.ignoreCodeComment = true;
|
||||||
funcReq.pFuncNames = taosArrayInit(1, strlen(input) + 1);
|
funcReq.pFuncNames = taosArrayInit(1, strlen(input) + 1);
|
||||||
taosArrayPush(funcReq.pFuncNames, input);
|
if (NULL == funcReq.pFuncNames) {
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
if (taosArrayPush(funcReq.pFuncNames, input) == NULL) {
|
||||||
|
taosArrayDestroy(funcReq.pFuncNames);
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSRetrieveFuncReq(NULL, 0, &funcReq);
|
int32_t bufLen = tSerializeSRetrieveFuncReq(NULL, 0, &funcReq);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSRetrieveFuncReq(pBuf, bufLen, &funcReq);
|
if(tSerializeSRetrieveFuncReq(pBuf, bufLen, &funcReq) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
taosArrayDestroy(funcReq.pFuncNames);
|
taosArrayDestroy(funcReq.pFuncNames);
|
||||||
|
|
||||||
|
@ -240,7 +270,9 @@ int32_t queryBuildGetUserAuthMsg(void *input, char **msg, int32_t msgSize, int32
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSGetUserAuthReq(NULL, 0, &req);
|
int32_t bufLen = tSerializeSGetUserAuthReq(NULL, 0, &req);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSGetUserAuthReq(pBuf, bufLen, &req);
|
if (tSerializeSGetUserAuthReq(pBuf, bufLen, &req) < 0) {
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -258,7 +290,10 @@ int32_t queryBuildGetTbIndexMsg(void *input, char **msg, int32_t msgSize, int32_
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSTableIndexReq(NULL, 0, &indexReq);
|
int32_t bufLen = tSerializeSTableIndexReq(NULL, 0, &indexReq);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSTableIndexReq(pBuf, bufLen, &indexReq);
|
if(tSerializeSTableIndexReq(pBuf, bufLen, &indexReq) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -279,7 +314,10 @@ int32_t queryBuildGetTbCfgMsg(void *input, char **msg, int32_t msgSize, int32_t
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSTableCfgReq(NULL, 0, &cfgReq);
|
int32_t bufLen = tSerializeSTableCfgReq(NULL, 0, &cfgReq);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSTableCfgReq(pBuf, bufLen, &cfgReq);
|
if(tSerializeSTableCfgReq(pBuf, bufLen, &cfgReq) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -297,7 +335,10 @@ int32_t queryBuildGetViewMetaMsg(void *input, char **msg, int32_t msgSize, int32
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSViewMetaReq(NULL, 0, &req);
|
int32_t bufLen = tSerializeSViewMetaReq(NULL, 0, &req);
|
||||||
void *pBuf = (*mallcFp)(bufLen);
|
void *pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeSViewMetaReq(pBuf, bufLen, &req);
|
if(tSerializeSViewMetaReq(pBuf, bufLen, &req) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -316,7 +357,10 @@ int32_t queryBuildGetTableTSMAMsg(void *input, char **msg, int32_t msgSize, int3
|
||||||
|
|
||||||
int32_t bufLen = tSerializeTableTSMAInfoReq(NULL, 0, &req);
|
int32_t bufLen = tSerializeTableTSMAInfoReq(NULL, 0, &req);
|
||||||
void * pBuf = (*mallcFp)(bufLen);
|
void * pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeTableTSMAInfoReq(pBuf, bufLen, &req);
|
if(tSerializeTableTSMAInfoReq(pBuf, bufLen, &req) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -335,7 +379,10 @@ int32_t queryBuildGetTSMAMsg(void *input, char **msg, int32_t msgSize, int32_t *
|
||||||
|
|
||||||
int32_t bufLen = tSerializeTableTSMAInfoReq(NULL, 0, &req);
|
int32_t bufLen = tSerializeTableTSMAInfoReq(NULL, 0, &req);
|
||||||
void * pBuf = (*mallcFp)(bufLen);
|
void * pBuf = (*mallcFp)(bufLen);
|
||||||
tSerializeTableTSMAInfoReq(pBuf, bufLen, &req);
|
if(tSerializeTableTSMAInfoReq(pBuf, bufLen, &req) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = bufLen;
|
*msgLen = bufLen;
|
||||||
|
@ -350,7 +397,10 @@ int32_t queryBuildGetStreamProgressMsg(void* input, char** msg, int32_t msgSize,
|
||||||
int32_t len = tSerializeStreamProgressReq(NULL, 0, input);
|
int32_t len = tSerializeStreamProgressReq(NULL, 0, input);
|
||||||
void* pBuf = (*mallcFp)(len);
|
void* pBuf = (*mallcFp)(len);
|
||||||
|
|
||||||
tSerializeStreamProgressReq(pBuf, len, input);
|
if(tSerializeStreamProgressReq(pBuf, len, input) < 0)
|
||||||
|
{
|
||||||
|
return TSDB_CODE_TSC_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
*msg = pBuf;
|
*msg = pBuf;
|
||||||
*msgLen = len;
|
*msgLen = len;
|
||||||
|
@ -713,6 +763,9 @@ int32_t queryProcessGetTbCfgRsp(void *output, char *msg, int32_t msgSize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
STableCfgRsp *out = taosMemoryCalloc(1, sizeof(STableCfgRsp));
|
STableCfgRsp *out = taosMemoryCalloc(1, sizeof(STableCfgRsp));
|
||||||
|
if(out == NULL) {
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
if (tDeserializeSTableCfgRsp(msg, msgSize, out) != 0) {
|
if (tDeserializeSTableCfgRsp(msg, msgSize, out) != 0) {
|
||||||
qError("tDeserializeSTableCfgRsp failed, msgSize:%d", msgSize);
|
qError("tDeserializeSTableCfgRsp failed, msgSize:%d", msgSize);
|
||||||
tFreeSTableCfgRsp(out);
|
tFreeSTableCfgRsp(out);
|
||||||
|
@ -731,6 +784,9 @@ int32_t queryProcessGetViewMetaRsp(void *output, char *msg, int32_t msgSize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SViewMetaRsp *out = taosMemoryCalloc(1, sizeof(SViewMetaRsp));
|
SViewMetaRsp *out = taosMemoryCalloc(1, sizeof(SViewMetaRsp));
|
||||||
|
if (out == NULL) {
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
if (tDeserializeSViewMetaRsp(msg, msgSize, out) != 0) {
|
if (tDeserializeSViewMetaRsp(msg, msgSize, out) != 0) {
|
||||||
qError("tDeserializeSViewMetaRsp failed, msgSize:%d", msgSize);
|
qError("tDeserializeSViewMetaRsp failed, msgSize:%d", msgSize);
|
||||||
tFreeSViewMetaRsp(out);
|
tFreeSViewMetaRsp(out);
|
||||||
|
|
Loading…
Reference in New Issue