enh: improve unit tests
This commit is contained in:
parent
c6701221d6
commit
ad7f9b274b
|
@ -225,7 +225,7 @@ typedef struct SAlterUserStmt {
|
||||||
|
|
||||||
typedef struct SDropUserStmt {
|
typedef struct SDropUserStmt {
|
||||||
ENodeType type;
|
ENodeType type;
|
||||||
char useName[TSDB_USER_LEN];
|
char userName[TSDB_USER_LEN];
|
||||||
} SDropUserStmt;
|
} SDropUserStmt;
|
||||||
|
|
||||||
typedef struct SCreateDnodeStmt {
|
typedef struct SCreateDnodeStmt {
|
||||||
|
|
|
@ -117,7 +117,7 @@ typedef enum ENodeType {
|
||||||
// Statement nodes are used in parser and planner module.
|
// Statement nodes are used in parser and planner module.
|
||||||
QUERY_NODE_SET_OPERATOR = 100,
|
QUERY_NODE_SET_OPERATOR = 100,
|
||||||
QUERY_NODE_SELECT_STMT,
|
QUERY_NODE_SELECT_STMT,
|
||||||
QUERY_NODE_VNODE_MODIF_STMT,
|
QUERY_NODE_VNODE_MODIFY_STMT,
|
||||||
QUERY_NODE_CREATE_DATABASE_STMT,
|
QUERY_NODE_CREATE_DATABASE_STMT,
|
||||||
QUERY_NODE_DROP_DATABASE_STMT,
|
QUERY_NODE_DROP_DATABASE_STMT,
|
||||||
QUERY_NODE_ALTER_DATABASE_STMT,
|
QUERY_NODE_ALTER_DATABASE_STMT,
|
||||||
|
|
|
@ -364,7 +364,7 @@ typedef struct SVgDataBlocks {
|
||||||
typedef void (*FFreeDataBlockHash)(SHashObj*);
|
typedef void (*FFreeDataBlockHash)(SHashObj*);
|
||||||
typedef void (*FFreeDataBlockArray)(SArray*);
|
typedef void (*FFreeDataBlockArray)(SArray*);
|
||||||
|
|
||||||
typedef struct SVnodeModifOpStmt {
|
typedef struct SVnodeModifyOpStmt {
|
||||||
ENodeType nodeType;
|
ENodeType nodeType;
|
||||||
ENodeType sqlNodeType;
|
ENodeType sqlNodeType;
|
||||||
SArray* pDataBlocks; // data block for each vgroup, SArray<SVgDataBlocks*>.
|
SArray* pDataBlocks; // data block for each vgroup, SArray<SVgDataBlocks*>.
|
||||||
|
@ -388,7 +388,7 @@ typedef struct SVnodeModifOpStmt {
|
||||||
FFreeDataBlockArray freeArrayFunc;
|
FFreeDataBlockArray freeArrayFunc;
|
||||||
bool usingTableProcessing;
|
bool usingTableProcessing;
|
||||||
bool fileProcessing;
|
bool fileProcessing;
|
||||||
} SVnodeModifOpStmt;
|
} SVnodeModifyOpStmt;
|
||||||
|
|
||||||
typedef struct SExplainOptions {
|
typedef struct SExplainOptions {
|
||||||
ENodeType type;
|
ENodeType type;
|
||||||
|
|
|
@ -76,7 +76,7 @@ static void deregisterRequest(SRequestObj *pRequest) {
|
||||||
"current:%d, app current:%d",
|
"current:%d, app current:%d",
|
||||||
pRequest->self, pTscObj->id, pRequest->requestId, duration / 1000.0, num, currentInst);
|
pRequest->self, pTscObj->id, pRequest->requestId, duration / 1000.0, num, currentInst);
|
||||||
|
|
||||||
if (QUERY_NODE_VNODE_MODIF_STMT == pRequest->stmtType) {
|
if (QUERY_NODE_VNODE_MODIFY_STMT == pRequest->stmtType) {
|
||||||
// tscPerf("insert duration %" PRId64 "us: syntax:%" PRId64 "us, ctg:%" PRId64 "us, semantic:%" PRId64
|
// tscPerf("insert duration %" PRId64 "us: syntax:%" PRId64 "us, ctg:%" PRId64 "us, semantic:%" PRId64
|
||||||
// "us, exec:%" PRId64 "us",
|
// "us, exec:%" PRId64 "us",
|
||||||
// duration, pRequest->metric.syntaxEnd - pRequest->metric.syntaxStart,
|
// duration, pRequest->metric.syntaxEnd - pRequest->metric.syntaxStart,
|
||||||
|
|
|
@ -875,7 +875,7 @@ int32_t handleQueryExecRsp(SRequestObj* pRequest) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool incompletaFileParsing(SNode* pStmt) {
|
static bool incompletaFileParsing(SNode* pStmt) {
|
||||||
return QUERY_NODE_VNODE_MODIF_STMT != nodeType(pStmt) ? false : ((SVnodeModifOpStmt*)pStmt)->fileProcessing;
|
return QUERY_NODE_VNODE_MODIFY_STMT != nodeType(pStmt) ? false : ((SVnodeModifyOpStmt*)pStmt)->fileProcessing;
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo refacto the error code mgmt
|
// todo refacto the error code mgmt
|
||||||
|
@ -954,7 +954,7 @@ SRequestObj* launchQueryImpl(SRequestObj* pRequest, SQuery* pQuery, bool keepQue
|
||||||
if (pQuery->pRoot && !pRequest->inRetry) {
|
if (pQuery->pRoot && !pRequest->inRetry) {
|
||||||
STscObj* pTscObj = pRequest->pTscObj;
|
STscObj* pTscObj = pRequest->pTscObj;
|
||||||
SAppClusterSummary* pActivity = &pTscObj->pAppInfo->summary;
|
SAppClusterSummary* pActivity = &pTscObj->pAppInfo->summary;
|
||||||
if (QUERY_NODE_VNODE_MODIF_STMT == pQuery->pRoot->type) {
|
if (QUERY_NODE_VNODE_MODIFY_STMT == pQuery->pRoot->type) {
|
||||||
atomic_add_fetch_64((int64_t*)&pActivity->numOfInsertsReq, 1);
|
atomic_add_fetch_64((int64_t*)&pActivity->numOfInsertsReq, 1);
|
||||||
} else if (QUERY_NODE_SELECT_STMT == pQuery->pRoot->type) {
|
} else if (QUERY_NODE_SELECT_STMT == pQuery->pRoot->type) {
|
||||||
atomic_add_fetch_64((int64_t*)&pActivity->numOfQueryReq, 1);
|
atomic_add_fetch_64((int64_t*)&pActivity->numOfQueryReq, 1);
|
||||||
|
@ -1059,7 +1059,7 @@ static int32_t asyncExecSchQuery(SRequestObj* pRequest, SQuery* pQuery, SMetaDat
|
||||||
}
|
}
|
||||||
if (TSDB_CODE_SUCCESS == code && !pRequest->validateOnly) {
|
if (TSDB_CODE_SUCCESS == code && !pRequest->validateOnly) {
|
||||||
SArray* pNodeList = NULL;
|
SArray* pNodeList = NULL;
|
||||||
if (QUERY_NODE_VNODE_MODIF_STMT != nodeType(pQuery->pRoot)) {
|
if (QUERY_NODE_VNODE_MODIFY_STMT != nodeType(pQuery->pRoot)) {
|
||||||
buildAsyncExecNodeList(pRequest, &pNodeList, pMnodeList, pResultMeta);
|
buildAsyncExecNodeList(pRequest, &pNodeList, pMnodeList, pResultMeta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1211,7 +1211,8 @@ static void destroyVgHash(void* data) {
|
||||||
taosMemoryFreeClear(vgData->data);
|
taosMemoryFreeClear(vgData->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
int taos_write_raw_block_with_fields(TAOS* taos, int rows, char* pData, const char* tbname, TAOS_FIELD *fields, int numFields){
|
int taos_write_raw_block_with_fields(TAOS* taos, int rows, char* pData, const char* tbname, TAOS_FIELD* fields,
|
||||||
|
int numFields) {
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
STableMeta* pTableMeta = NULL;
|
STableMeta* pTableMeta = NULL;
|
||||||
SQuery* pQuery = NULL;
|
SQuery* pQuery = NULL;
|
||||||
|
@ -1267,14 +1268,14 @@ int taos_write_raw_block_with_fields(TAOS* taos, int rows, char* pData, const ch
|
||||||
uint16_t fLen = 0;
|
uint16_t fLen = 0;
|
||||||
int32_t rowSize = 0;
|
int32_t rowSize = 0;
|
||||||
int16_t nVar = 0;
|
int16_t nVar = 0;
|
||||||
for (int i = 0; i < pTableMeta->tableInfo.numOfColumns; i++) {
|
for (int i = 0; i < pTableMeta->tableInfo.numOfColumns; i++) {
|
||||||
SSchema* schema = pTableMeta->schema + i;
|
SSchema* schema = pTableMeta->schema + i;
|
||||||
fLen += TYPE_BYTES[schema->type];
|
fLen += TYPE_BYTES[schema->type];
|
||||||
rowSize += schema->bytes;
|
rowSize += schema->bytes;
|
||||||
if (IS_VAR_DATA_TYPE(schema->type)) {
|
if (IS_VAR_DATA_TYPE(schema->type)) {
|
||||||
nVar++;
|
nVar++;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fLen -= sizeof(TSKEY);
|
fLen -= sizeof(TSKEY);
|
||||||
|
|
||||||
|
@ -1294,7 +1295,8 @@ int taos_write_raw_block_with_fields(TAOS* taos, int rows, char* pData, const ch
|
||||||
tdSRowSetTpInfo(&rb, numOfCols, fLen);
|
tdSRowSetTpInfo(&rb, numOfCols, fLen);
|
||||||
int32_t dataLen = 0;
|
int32_t dataLen = 0;
|
||||||
|
|
||||||
// | version | total length | total rows | total columns | flag seg| block group id | column schema | each column length |
|
// | version | total length | total rows | total columns | flag seg| block group id | column schema | each column
|
||||||
|
// length |
|
||||||
char* pStart = pData + getVersion1BlockMetaSize(pData, numFields);
|
char* pStart = pData + getVersion1BlockMetaSize(pData, numFields);
|
||||||
int32_t* colLength = (int32_t*)pStart;
|
int32_t* colLength = (int32_t*)pStart;
|
||||||
pStart += sizeof(int32_t) * numFields;
|
pStart += sizeof(int32_t) * numFields;
|
||||||
|
@ -1326,9 +1328,9 @@ int taos_write_raw_block_with_fields(TAOS* taos, int rows, char* pData, const ch
|
||||||
for (int32_t k = 0; k < numOfCols; k++) {
|
for (int32_t k = 0; k < numOfCols; k++) {
|
||||||
const SSchema* pColumn = &pTableMeta->schema[k];
|
const SSchema* pColumn = &pTableMeta->schema[k];
|
||||||
int32_t* index = taosHashGet(schemaHash, pColumn->name, strlen(pColumn->name));
|
int32_t* index = taosHashGet(schemaHash, pColumn->name, strlen(pColumn->name));
|
||||||
if (!index) { // add none
|
if (!index) { // add none
|
||||||
tdAppendColValToRow(&rb, pColumn->colId, pColumn->type, TD_VTYPE_NONE, NULL, false, offset, k);
|
tdAppendColValToRow(&rb, pColumn->colId, pColumn->type, TD_VTYPE_NONE, NULL, false, offset, k);
|
||||||
}else{
|
} else {
|
||||||
if (IS_VAR_DATA_TYPE(pColumn->type)) {
|
if (IS_VAR_DATA_TYPE(pColumn->type)) {
|
||||||
if (pCol[*index].offset[j] != -1) {
|
if (pCol[*index].offset[j] != -1) {
|
||||||
char* data = pCol[*index].pData + pCol[*index].offset[j];
|
char* data = pCol[*index].pData + pCol[*index].offset[j];
|
||||||
|
@ -1377,13 +1379,13 @@ int taos_write_raw_block_with_fields(TAOS* taos, int rows, char* pData, const ch
|
||||||
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
||||||
pQuery->haveResultSet = false;
|
pQuery->haveResultSet = false;
|
||||||
pQuery->msgType = TDMT_VND_SUBMIT;
|
pQuery->msgType = TDMT_VND_SUBMIT;
|
||||||
pQuery->pRoot = (SNode*)nodesMakeNode(QUERY_NODE_VNODE_MODIF_STMT);
|
pQuery->pRoot = (SNode*)nodesMakeNode(QUERY_NODE_VNODE_MODIFY_STMT);
|
||||||
if (NULL == pQuery->pRoot) {
|
if (NULL == pQuery->pRoot) {
|
||||||
uError("create pQuery->pRoot error");
|
uError("create pQuery->pRoot error");
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
SVnodeModifOpStmt* nodeStmt = (SVnodeModifOpStmt*)(pQuery->pRoot);
|
SVnodeModifyOpStmt* nodeStmt = (SVnodeModifyOpStmt*)(pQuery->pRoot);
|
||||||
nodeStmt->pDataBlocks = taosArrayInit(1, POINTER_BYTES);
|
nodeStmt->pDataBlocks = taosArrayInit(1, POINTER_BYTES);
|
||||||
|
|
||||||
SVgDataBlocks* dst = taosMemoryCalloc(1, sizeof(SVgDataBlocks));
|
SVgDataBlocks* dst = taosMemoryCalloc(1, sizeof(SVgDataBlocks));
|
||||||
|
@ -1406,7 +1408,7 @@ int taos_write_raw_block_with_fields(TAOS* taos, int rows, char* pData, const ch
|
||||||
launchQueryImpl(pRequest, pQuery, true, NULL);
|
launchQueryImpl(pRequest, pQuery, true, NULL);
|
||||||
code = pRequest->code;
|
code = pRequest->code;
|
||||||
|
|
||||||
end:
|
end:
|
||||||
taosMemoryFreeClear(pTableMeta);
|
taosMemoryFreeClear(pTableMeta);
|
||||||
qDestroyQuery(pQuery);
|
qDestroyQuery(pQuery);
|
||||||
taosMemoryFree(subReq);
|
taosMemoryFree(subReq);
|
||||||
|
@ -1495,7 +1497,8 @@ int taos_write_raw_block(TAOS* taos, int rows, char* pData, const char* tbname)
|
||||||
tdSRowSetTpInfo(&rb, numOfCols, fLen);
|
tdSRowSetTpInfo(&rb, numOfCols, fLen);
|
||||||
int32_t dataLen = 0;
|
int32_t dataLen = 0;
|
||||||
|
|
||||||
// | version | total length | total rows | total columns | flag seg| block group id | column schema | each column length |
|
// | version | total length | total rows | total columns | flag seg| block group id | column schema | each column
|
||||||
|
// length |
|
||||||
char* pStart = pData + getVersion1BlockMetaSize(pData, numOfCols);
|
char* pStart = pData + getVersion1BlockMetaSize(pData, numOfCols);
|
||||||
int32_t* colLength = (int32_t*)pStart;
|
int32_t* colLength = (int32_t*)pStart;
|
||||||
pStart += sizeof(int32_t) * numOfCols;
|
pStart += sizeof(int32_t) * numOfCols;
|
||||||
|
@ -1568,13 +1571,13 @@ int taos_write_raw_block(TAOS* taos, int rows, char* pData, const char* tbname)
|
||||||
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
||||||
pQuery->haveResultSet = false;
|
pQuery->haveResultSet = false;
|
||||||
pQuery->msgType = TDMT_VND_SUBMIT;
|
pQuery->msgType = TDMT_VND_SUBMIT;
|
||||||
pQuery->pRoot = (SNode*)nodesMakeNode(QUERY_NODE_VNODE_MODIF_STMT);
|
pQuery->pRoot = (SNode*)nodesMakeNode(QUERY_NODE_VNODE_MODIFY_STMT);
|
||||||
if (NULL == pQuery->pRoot) {
|
if (NULL == pQuery->pRoot) {
|
||||||
uError("create pQuery->pRoot error");
|
uError("create pQuery->pRoot error");
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
SVnodeModifOpStmt* nodeStmt = (SVnodeModifOpStmt*)(pQuery->pRoot);
|
SVnodeModifyOpStmt* nodeStmt = (SVnodeModifyOpStmt*)(pQuery->pRoot);
|
||||||
nodeStmt->pDataBlocks = taosArrayInit(1, POINTER_BYTES);
|
nodeStmt->pDataBlocks = taosArrayInit(1, POINTER_BYTES);
|
||||||
|
|
||||||
SVgDataBlocks* dst = taosMemoryCalloc(1, sizeof(SVgDataBlocks));
|
SVgDataBlocks* dst = taosMemoryCalloc(1, sizeof(SVgDataBlocks));
|
||||||
|
@ -1825,13 +1828,13 @@ static int32_t tmqWriteRawDataImpl(TAOS* taos, void* data, int32_t dataLen) {
|
||||||
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
||||||
pQuery->haveResultSet = false;
|
pQuery->haveResultSet = false;
|
||||||
pQuery->msgType = TDMT_VND_SUBMIT;
|
pQuery->msgType = TDMT_VND_SUBMIT;
|
||||||
pQuery->pRoot = (SNode*)nodesMakeNode(QUERY_NODE_VNODE_MODIF_STMT);
|
pQuery->pRoot = (SNode*)nodesMakeNode(QUERY_NODE_VNODE_MODIFY_STMT);
|
||||||
if (NULL == pQuery->pRoot) {
|
if (NULL == pQuery->pRoot) {
|
||||||
uError("create pQuery->pRoot error");
|
uError("create pQuery->pRoot error");
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
SVnodeModifOpStmt* nodeStmt = (SVnodeModifOpStmt*)(pQuery->pRoot);
|
SVnodeModifyOpStmt* nodeStmt = (SVnodeModifyOpStmt*)(pQuery->pRoot);
|
||||||
|
|
||||||
int32_t numOfVg = taosHashGetSize(pVgHash);
|
int32_t numOfVg = taosHashGetSize(pVgHash);
|
||||||
nodeStmt->pDataBlocks = taosArrayInit(numOfVg, POINTER_BYTES);
|
nodeStmt->pDataBlocks = taosArrayInit(numOfVg, POINTER_BYTES);
|
||||||
|
@ -1873,7 +1876,6 @@ end:
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, int32_t dataLen) {
|
static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, int32_t dataLen) {
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
SHashObj* pVgHash = NULL;
|
SHashObj* pVgHash = NULL;
|
||||||
|
@ -2131,13 +2133,13 @@ static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, int32_t dataLen)
|
||||||
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
||||||
pQuery->haveResultSet = false;
|
pQuery->haveResultSet = false;
|
||||||
pQuery->msgType = TDMT_VND_SUBMIT;
|
pQuery->msgType = TDMT_VND_SUBMIT;
|
||||||
pQuery->pRoot = (SNode*)nodesMakeNode(QUERY_NODE_VNODE_MODIF_STMT);
|
pQuery->pRoot = (SNode*)nodesMakeNode(QUERY_NODE_VNODE_MODIFY_STMT);
|
||||||
if (NULL == pQuery->pRoot) {
|
if (NULL == pQuery->pRoot) {
|
||||||
uError("create pQuery->pRoot error");
|
uError("create pQuery->pRoot error");
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
SVnodeModifOpStmt* nodeStmt = (SVnodeModifOpStmt*)(pQuery->pRoot);
|
SVnodeModifyOpStmt* nodeStmt = (SVnodeModifyOpStmt*)(pQuery->pRoot);
|
||||||
|
|
||||||
int32_t numOfVg = taosHashGetSize(pVgHash);
|
int32_t numOfVg = taosHashGetSize(pVgHash);
|
||||||
nodeStmt->pDataBlocks = taosArrayInit(numOfVg, POINTER_BYTES);
|
nodeStmt->pDataBlocks = taosArrayInit(numOfVg, POINTER_BYTES);
|
||||||
|
@ -2167,7 +2169,7 @@ static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, int32_t dataLen)
|
||||||
launchQueryImpl(pRequest, pQuery, true, NULL);
|
launchQueryImpl(pRequest, pQuery, true, NULL);
|
||||||
code = pRequest->code;
|
code = pRequest->code;
|
||||||
|
|
||||||
end:
|
end:
|
||||||
tDeleteSTaosxRsp(&rspObj.rsp);
|
tDeleteSTaosxRsp(&rspObj.rsp);
|
||||||
rspObj.resInfo.pRspMsg = NULL;
|
rspObj.resInfo.pRspMsg = NULL;
|
||||||
doFreeReqResultInfo(&rspObj.resInfo);
|
doFreeReqResultInfo(&rspObj.resInfo);
|
||||||
|
|
|
@ -163,9 +163,9 @@ typedef struct {
|
||||||
|
|
||||||
SMLProtocolType protocol;
|
SMLProtocolType protocol;
|
||||||
int8_t precision;
|
int8_t precision;
|
||||||
bool dataFormat; // true means that the name and order of keys in each line are the same(only for influx protocol)
|
bool dataFormat; // true means that the name and order of keys in each line are the same(only for influx protocol)
|
||||||
bool isRawLine;
|
bool isRawLine;
|
||||||
int32_t ttl;
|
int32_t ttl;
|
||||||
|
|
||||||
SHashObj *childTables;
|
SHashObj *childTables;
|
||||||
SHashObj *superTables;
|
SHashObj *superTables;
|
||||||
|
@ -183,20 +183,20 @@ typedef struct {
|
||||||
SHashObj *dumplicateKey; // for dumplicate key
|
SHashObj *dumplicateKey; // for dumplicate key
|
||||||
SArray *colsContainer; // for cols parse, if dataFormat == false
|
SArray *colsContainer; // for cols parse, if dataFormat == false
|
||||||
|
|
||||||
cJSON *root; // for parse json
|
cJSON *root; // for parse json
|
||||||
} SSmlHandle;
|
} SSmlHandle;
|
||||||
//=================================================================================================
|
//=================================================================================================
|
||||||
|
|
||||||
//=================================================================================================
|
//=================================================================================================
|
||||||
static volatile int64_t linesSmlHandleId = 0;
|
static volatile int64_t linesSmlHandleId = 0;
|
||||||
static int64_t smlGenId() {
|
static int64_t smlGenId() {
|
||||||
int64_t id;
|
int64_t id;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
id = atomic_add_fetch_64(&linesSmlHandleId, 1);
|
id = atomic_add_fetch_64(&linesSmlHandleId, 1);
|
||||||
} while (id == 0);
|
} while (id == 0);
|
||||||
|
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool smlDoubleToInt64OverFlow(double num) {
|
static inline bool smlDoubleToInt64OverFlow(double num) {
|
||||||
|
@ -606,7 +606,7 @@ static int32_t smlModifyDBSchemas(SSmlHandle *info) {
|
||||||
end:
|
end:
|
||||||
taosHashCleanup(hashTmp);
|
taosHashCleanup(hashTmp);
|
||||||
taosMemoryFreeClear(pTableMeta);
|
taosMemoryFreeClear(pTableMeta);
|
||||||
// catalogRefreshTableMeta(info->pCatalog, &conn, &pName, 1);
|
// catalogRefreshTableMeta(info->pCatalog, &conn, &pName, 1);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1534,7 +1534,7 @@ static SSmlHandle *smlBuildSmlInfo(STscObj *pTscObj, SRequestObj *request, SMLPr
|
||||||
info->pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
info->pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
||||||
info->pQuery->haveResultSet = false;
|
info->pQuery->haveResultSet = false;
|
||||||
info->pQuery->msgType = TDMT_VND_SUBMIT;
|
info->pQuery->msgType = TDMT_VND_SUBMIT;
|
||||||
info->pQuery->pRoot = (SNode *)nodesMakeNode(QUERY_NODE_VNODE_MODIF_STMT);
|
info->pQuery->pRoot = (SNode *)nodesMakeNode(QUERY_NODE_VNODE_MODIFY_STMT);
|
||||||
if (NULL == info->pQuery->pRoot) {
|
if (NULL == info->pQuery->pRoot) {
|
||||||
uError("SML:0x%" PRIx64 " create info->pQuery->pRoot error", info->id);
|
uError("SML:0x%" PRIx64 " create info->pQuery->pRoot error", info->id);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -2079,7 +2079,8 @@ static int32_t smlParseJSONString(SSmlHandle *info, cJSON *root, SSmlTableInfo *
|
||||||
|
|
||||||
static int32_t smlParseInfluxLine(SSmlHandle *info, const char *sql, const int len) {
|
static int32_t smlParseInfluxLine(SSmlHandle *info, const char *sql, const int len) {
|
||||||
SSmlLineInfo elements = {0};
|
SSmlLineInfo elements = {0};
|
||||||
uDebug("SML:0x%" PRIx64 " smlParseInfluxLine raw:%d, len:%d, sql:%s", info->id, info->isRawLine, len, (info->isRawLine ? "rawdata" : sql));
|
uDebug("SML:0x%" PRIx64 " smlParseInfluxLine raw:%d, len:%d, sql:%s", info->id, info->isRawLine, len,
|
||||||
|
(info->isRawLine ? "rawdata" : sql));
|
||||||
|
|
||||||
int ret = smlParseInfluxString(sql, sql + len, &elements, &info->msgBuf);
|
int ret = smlParseInfluxString(sql, sql + len, &elements, &info->msgBuf);
|
||||||
if (ret != TSDB_CODE_SUCCESS) {
|
if (ret != TSDB_CODE_SUCCESS) {
|
||||||
|
@ -2371,15 +2372,16 @@ static int32_t smlInsertData(SSmlHandle *info) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void smlPrintStatisticInfo(SSmlHandle *info) {
|
static void smlPrintStatisticInfo(SSmlHandle *info) {
|
||||||
uError("SML:0x%" PRIx64
|
uError(
|
||||||
" smlInsertLines result, code:%d,lineNum:%d,stable num:%d,ctable num:%d,create stable num:%d,alter stable tag num:%d,alter stable col num:%d \
|
"SML:0x%" PRIx64
|
||||||
|
" smlInsertLines result, code:%d,lineNum:%d,stable num:%d,ctable num:%d,create stable num:%d,alter stable tag num:%d,alter stable col num:%d \
|
||||||
parse cost:%" PRId64 ",schema cost:%" PRId64 ",bind cost:%" PRId64 ",rpc cost:%" PRId64 ",total cost:%" PRId64
|
parse cost:%" PRId64 ",schema cost:%" PRId64 ",bind cost:%" PRId64 ",rpc cost:%" PRId64 ",total cost:%" PRId64
|
||||||
"",
|
"",
|
||||||
info->id, info->cost.code, info->cost.lineNum, info->cost.numOfSTables, info->cost.numOfCTables,
|
info->id, info->cost.code, info->cost.lineNum, info->cost.numOfSTables, info->cost.numOfCTables,
|
||||||
info->cost.numOfCreateSTables, info->cost.numOfAlterTagSTables, info->cost.numOfAlterColSTables,
|
info->cost.numOfCreateSTables, info->cost.numOfAlterTagSTables, info->cost.numOfAlterColSTables,
|
||||||
info->cost.schemaTime - info->cost.parseTime,
|
info->cost.schemaTime - info->cost.parseTime, info->cost.insertBindTime - info->cost.schemaTime,
|
||||||
info->cost.insertBindTime - info->cost.schemaTime, info->cost.insertRpcTime - info->cost.insertBindTime,
|
info->cost.insertRpcTime - info->cost.insertBindTime, info->cost.endTime - info->cost.insertRpcTime,
|
||||||
info->cost.endTime - info->cost.insertRpcTime, info->cost.endTime - info->cost.parseTime);
|
info->cost.endTime - info->cost.parseTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t smlParseLine(SSmlHandle *info, char *lines[], char *rawLine, char *rawLineEnd, int numLines) {
|
static int32_t smlParseLine(SSmlHandle *info, char *lines[], char *rawLine, char *rawLineEnd, int numLines) {
|
||||||
|
@ -2593,7 +2595,7 @@ TAOS_RES *taos_schemaless_insert_inner(SRequestObj *request, char *lines[], char
|
||||||
}
|
}
|
||||||
|
|
||||||
info->isRawLine = (rawLine == NULL);
|
info->isRawLine = (rawLine == NULL);
|
||||||
info->ttl = ttl;
|
info->ttl = ttl;
|
||||||
|
|
||||||
int32_t perBatch = tsSmlBatchSize;
|
int32_t perBatch = tsSmlBatchSize;
|
||||||
|
|
||||||
|
@ -2684,16 +2686,19 @@ TAOS_RES *taos_schemaless_insert(TAOS *taos, char *lines[], int numLines, int pr
|
||||||
return taos_schemaless_insert_ttl_with_reqid(taos, lines, numLines, protocol, precision, TSDB_DEFAULT_TABLE_TTL, 0);
|
return taos_schemaless_insert_ttl_with_reqid(taos, lines, numLines, protocol, precision, TSDB_DEFAULT_TABLE_TTL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TAOS_RES *taos_schemaless_insert_ttl(TAOS *taos, char *lines[], int numLines, int protocol, int precision, int32_t ttl) {
|
TAOS_RES *taos_schemaless_insert_ttl(TAOS *taos, char *lines[], int numLines, int protocol, int precision,
|
||||||
|
int32_t ttl) {
|
||||||
return taos_schemaless_insert_ttl_with_reqid(taos, lines, numLines, protocol, precision, ttl, 0);
|
return taos_schemaless_insert_ttl_with_reqid(taos, lines, numLines, protocol, precision, ttl, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TAOS_RES *taos_schemaless_insert_with_reqid(TAOS *taos, char *lines[], int numLines, int protocol, int precision, int64_t reqid) {
|
TAOS_RES *taos_schemaless_insert_with_reqid(TAOS *taos, char *lines[], int numLines, int protocol, int precision,
|
||||||
return taos_schemaless_insert_ttl_with_reqid(taos, lines, numLines, protocol, precision, TSDB_DEFAULT_TABLE_TTL, reqid);
|
int64_t reqid) {
|
||||||
|
return taos_schemaless_insert_ttl_with_reqid(taos, lines, numLines, protocol, precision, TSDB_DEFAULT_TABLE_TTL,
|
||||||
|
reqid);
|
||||||
}
|
}
|
||||||
|
|
||||||
TAOS_RES *taos_schemaless_insert_raw_ttl_with_reqid(TAOS *taos, char *lines, int len, int32_t *totalRows, int protocol,
|
TAOS_RES *taos_schemaless_insert_raw_ttl_with_reqid(TAOS *taos, char *lines, int len, int32_t *totalRows, int protocol,
|
||||||
int precision, int32_t ttl, int64_t reqid) {
|
int precision, int32_t ttl, int64_t reqid) {
|
||||||
if (NULL == taos) {
|
if (NULL == taos) {
|
||||||
terrno = TSDB_CODE_TSC_DISCONNECTED;
|
terrno = TSDB_CODE_TSC_DISCONNECTED;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -2727,13 +2732,18 @@ TAOS_RES *taos_schemaless_insert_raw_ttl_with_reqid(TAOS *taos, char *lines, int
|
||||||
return taos_schemaless_insert_inner(request, NULL, lines, lines + len, numLines, protocol, precision, ttl);
|
return taos_schemaless_insert_inner(request, NULL, lines, lines + len, numLines, protocol, precision, ttl);
|
||||||
}
|
}
|
||||||
|
|
||||||
TAOS_RES *taos_schemaless_insert_raw_with_reqid(TAOS *taos, char *lines, int len, int32_t *totalRows, int protocol, int precision, int64_t reqid) {
|
TAOS_RES *taos_schemaless_insert_raw_with_reqid(TAOS *taos, char *lines, int len, int32_t *totalRows, int protocol,
|
||||||
return taos_schemaless_insert_raw_ttl_with_reqid(taos, lines, len, totalRows, protocol, precision, TSDB_DEFAULT_TABLE_TTL, reqid);
|
int precision, int64_t reqid) {
|
||||||
|
return taos_schemaless_insert_raw_ttl_with_reqid(taos, lines, len, totalRows, protocol, precision,
|
||||||
|
TSDB_DEFAULT_TABLE_TTL, reqid);
|
||||||
}
|
}
|
||||||
TAOS_RES *taos_schemaless_insert_raw_ttl(TAOS *taos, char *lines, int len, int32_t *totalRows, int protocol, int precision, int32_t ttl) {
|
TAOS_RES *taos_schemaless_insert_raw_ttl(TAOS *taos, char *lines, int len, int32_t *totalRows, int protocol,
|
||||||
|
int precision, int32_t ttl) {
|
||||||
return taos_schemaless_insert_raw_ttl_with_reqid(taos, lines, len, totalRows, protocol, precision, ttl, 0);
|
return taos_schemaless_insert_raw_ttl_with_reqid(taos, lines, len, totalRows, protocol, precision, ttl, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TAOS_RES *taos_schemaless_insert_raw(TAOS *taos, char *lines, int len, int32_t *totalRows, int protocol, int precision) {
|
TAOS_RES *taos_schemaless_insert_raw(TAOS *taos, char *lines, int len, int32_t *totalRows, int protocol,
|
||||||
return taos_schemaless_insert_raw_ttl_with_reqid(taos, lines, len, totalRows, protocol, precision, TSDB_DEFAULT_TABLE_TTL, 0);
|
int precision) {
|
||||||
|
return taos_schemaless_insert_raw_ttl_with_reqid(taos, lines, len, totalRows, protocol, precision,
|
||||||
|
TSDB_DEFAULT_TABLE_TTL, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ const char* nodesNodeName(ENodeType type) {
|
||||||
return "SetOperator";
|
return "SetOperator";
|
||||||
case QUERY_NODE_SELECT_STMT:
|
case QUERY_NODE_SELECT_STMT:
|
||||||
return "SelectStmt";
|
return "SelectStmt";
|
||||||
case QUERY_NODE_VNODE_MODIF_STMT:
|
case QUERY_NODE_VNODE_MODIFY_STMT:
|
||||||
return "VnodeModifStmt";
|
return "VnodeModifStmt";
|
||||||
case QUERY_NODE_CREATE_DATABASE_STMT:
|
case QUERY_NODE_CREATE_DATABASE_STMT:
|
||||||
return "CreateDatabaseStmt";
|
return "CreateDatabaseStmt";
|
||||||
|
@ -141,12 +141,18 @@ const char* nodesNodeName(ENodeType type) {
|
||||||
return "CreateQnodeStmt";
|
return "CreateQnodeStmt";
|
||||||
case QUERY_NODE_DROP_QNODE_STMT:
|
case QUERY_NODE_DROP_QNODE_STMT:
|
||||||
return "DropQnodeStmt";
|
return "DropQnodeStmt";
|
||||||
|
case QUERY_NODE_DROP_SNODE_STMT:
|
||||||
|
return "DropSnodeStmt";
|
||||||
|
case QUERY_NODE_DROP_MNODE_STMT:
|
||||||
|
return "DropMnodeStmt";
|
||||||
case QUERY_NODE_CREATE_TOPIC_STMT:
|
case QUERY_NODE_CREATE_TOPIC_STMT:
|
||||||
return "CreateTopicStmt";
|
return "CreateTopicStmt";
|
||||||
case QUERY_NODE_DROP_TOPIC_STMT:
|
case QUERY_NODE_DROP_TOPIC_STMT:
|
||||||
return "DropTopicStmt";
|
return "DropTopicStmt";
|
||||||
case QUERY_NODE_ALTER_LOCAL_STMT:
|
case QUERY_NODE_ALTER_LOCAL_STMT:
|
||||||
return "AlterLocalStmt";
|
return "AlterLocalStmt";
|
||||||
|
case QUERY_NODE_DROP_STREAM_STMT:
|
||||||
|
return "DropStreamStmt";
|
||||||
case QUERY_NODE_SPLIT_VGROUP_STMT:
|
case QUERY_NODE_SPLIT_VGROUP_STMT:
|
||||||
return "SplitVgroupStmt";
|
return "SplitVgroupStmt";
|
||||||
case QUERY_NODE_SHOW_DNODES_STMT:
|
case QUERY_NODE_SHOW_DNODES_STMT:
|
||||||
|
@ -161,6 +167,8 @@ const char* nodesNodeName(ENodeType type) {
|
||||||
return "ShowSnodesStmt";
|
return "ShowSnodesStmt";
|
||||||
case QUERY_NODE_SHOW_BNODES_STMT:
|
case QUERY_NODE_SHOW_BNODES_STMT:
|
||||||
return "ShowBnodesStmt";
|
return "ShowBnodesStmt";
|
||||||
|
case QUERY_NODE_SHOW_CLUSTER_STMT:
|
||||||
|
return "ShowClusterStmt";
|
||||||
case QUERY_NODE_SHOW_DATABASES_STMT:
|
case QUERY_NODE_SHOW_DATABASES_STMT:
|
||||||
return "ShowDatabaseStmt";
|
return "ShowDatabaseStmt";
|
||||||
case QUERY_NODE_SHOW_FUNCTIONS_STMT:
|
case QUERY_NODE_SHOW_FUNCTIONS_STMT:
|
||||||
|
@ -189,10 +197,26 @@ const char* nodesNodeName(ENodeType type) {
|
||||||
return "ShowQueriesStmt";
|
return "ShowQueriesStmt";
|
||||||
case QUERY_NODE_SHOW_VARIABLES_STMT:
|
case QUERY_NODE_SHOW_VARIABLES_STMT:
|
||||||
return "ShowVariablesStmt";
|
return "ShowVariablesStmt";
|
||||||
|
case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
|
||||||
|
return "ShowDnodeVariablesStmt";
|
||||||
|
case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
|
||||||
|
return "ShowTransactionsStmt";
|
||||||
|
case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
|
||||||
|
return "ShowSubscriptionsStmt";
|
||||||
case QUERY_NODE_SHOW_VNODES_STMT:
|
case QUERY_NODE_SHOW_VNODES_STMT:
|
||||||
return "ShowVnodeStmt";
|
return "ShowVnodeStmt";
|
||||||
case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
|
case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
|
||||||
return "ShowUserPrivilegesStmt";
|
return "ShowUserPrivilegesStmt";
|
||||||
|
case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
|
||||||
|
return "ShowCreateDatabasesStmt";
|
||||||
|
case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
|
||||||
|
return "ShowCreateTablesStmt";
|
||||||
|
case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
|
||||||
|
return "ShowCreateStablesStmt";
|
||||||
|
case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
|
||||||
|
return "ShowTableDistributedStmt";
|
||||||
|
case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
|
||||||
|
return "ShowLocalVariablesStmt";
|
||||||
case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
|
case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
|
||||||
return "ShowTableTagsStmt";
|
return "ShowTableTagsStmt";
|
||||||
case QUERY_NODE_DELETE_STMT:
|
case QUERY_NODE_DELETE_STMT:
|
||||||
|
@ -3581,6 +3605,51 @@ static int32_t jsonToTempTableNode(const SJson* pJson, void* pObj) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* jkJoinTableJoinType = "JoinType";
|
||||||
|
static const char* jkJoinTableLeft = "Left";
|
||||||
|
static const char* jkJoinTableRight = "Right";
|
||||||
|
static const char* jkJoinTableOnCond = "OnCond";
|
||||||
|
|
||||||
|
static int32_t joinTableNodeToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SJoinTableNode* pNode = (const SJoinTableNode*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tableNodeToJson(pObj, pJson);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddIntegerToObject(pJson, jkJoinTableJoinType, pNode->joinType);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddObject(pJson, jkJoinTableLeft, nodeToJson, pNode->pLeft);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddObject(pJson, jkJoinTableRight, nodeToJson, pNode->pRight);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddObject(pJson, jkJoinTableOnCond, nodeToJson, pNode->pOnCond);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToJoinTableNode(const SJson* pJson, void* pObj) {
|
||||||
|
SJoinTableNode* pNode = (SJoinTableNode*)pObj;
|
||||||
|
|
||||||
|
int32_t code = jsonToTableNode(pJson, pObj);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
tjsonGetNumberValue(pJson, jkJoinTableJoinType, pNode->joinType, code);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = jsonToNodeObject(pJson, jkJoinTableLeft, &pNode->pLeft);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = jsonToNodeObject(pJson, jkJoinTableRight, &pNode->pRight);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = jsonToNodeObject(pJson, jkJoinTableOnCond, &pNode->pOnCond);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
static const char* jkGroupingSetType = "GroupingSetType";
|
static const char* jkGroupingSetType = "GroupingSetType";
|
||||||
static const char* jkGroupingSetParameter = "Parameters";
|
static const char* jkGroupingSetParameter = "Parameters";
|
||||||
|
|
||||||
|
@ -4410,6 +4479,39 @@ static int32_t jsonToSelectStmt(const SJson* pJson, void* pObj) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* jkVnodeModifyOpStmtSqlNodeType = "SqlNodeType";
|
||||||
|
static const char* jkVnodeModifyOpStmtTotalRowsNum = "TotalRowsNum";
|
||||||
|
static const char* jkVnodeModifyOpStmtTotalTbNum = "TotalTbNum";
|
||||||
|
|
||||||
|
static int32_t vnodeModifyStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SVnodeModifyOpStmt* pNode = (const SVnodeModifyOpStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalRowsNum, pNode->totalRowsNum);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalTbNum, pNode->totalTbNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToVnodeModifyStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SVnodeModifyOpStmt* pNode = (SVnodeModifyOpStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
|
tjsonGetNumberValue(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType, code);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalRowsNum, &pNode->totalRowsNum);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalTbNum, &pNode->totalTbNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
static const char* jkAlterDatabaseStmtDbName = "DbName";
|
static const char* jkAlterDatabaseStmtDbName = "DbName";
|
||||||
static const char* jkAlterDatabaseStmtOptions = "Options";
|
static const char* jkAlterDatabaseStmtOptions = "Options";
|
||||||
|
|
||||||
|
@ -4460,6 +4562,82 @@ static int32_t jsonToTrimDatabaseStmt(const SJson* pJson, void* pObj) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* jkDropTableClauseDbName = "DbName";
|
||||||
|
static const char* jkDropTableClauseTableName = "TableName";
|
||||||
|
static const char* jkDropTableClauseIgnoreNotExists = "IgnoreNotExists";
|
||||||
|
|
||||||
|
static int32_t dropTableClauseToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SDropTableClause* pNode = (const SDropTableClause*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddStringToObject(pJson, jkDropTableClauseDbName, pNode->dbName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddStringToObject(pJson, jkDropTableClauseTableName, pNode->tableName);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddBoolToObject(pJson, jkDropTableClauseIgnoreNotExists, pNode->ignoreNotExists);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToDropTableClause(const SJson* pJson, void* pObj) {
|
||||||
|
SDropTableClause* pNode = (SDropTableClause*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonGetStringValue(pJson, jkDropTableClauseDbName, pNode->dbName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetStringValue(pJson, jkDropTableClauseTableName, pNode->tableName);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetBoolValue(pJson, jkDropTableClauseIgnoreNotExists, &pNode->ignoreNotExists);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char* jkDropTableStmtTables = "Tables";
|
||||||
|
|
||||||
|
static int32_t dropTableStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SDropTableStmt* pNode = (const SDropTableStmt*)pObj;
|
||||||
|
return nodeListToJson(pJson, jkDropTableStmtTables, pNode->pTables);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToDropTableStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SDropTableStmt* pNode = (SDropTableStmt*)pObj;
|
||||||
|
return jsonToNodeList(pJson, jkDropTableStmtTables, &pNode->pTables);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char* jkDropSuperTableStmtDbName = "DbName";
|
||||||
|
static const char* jkDropSuperTableStmtTableName = "TableName";
|
||||||
|
static const char* jkDropSuperTableStmtIgnoreNotExists = "IgnoreNotExists";
|
||||||
|
|
||||||
|
static int32_t dropStableStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SDropSuperTableStmt* pNode = (const SDropSuperTableStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtIgnoreNotExists, pNode->ignoreNotExists);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToDropStableStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SDropSuperTableStmt* pNode = (SDropSuperTableStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetStringValue(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
static const char* jkAlterTableStmtDbName = "DbName";
|
static const char* jkAlterTableStmtDbName = "DbName";
|
||||||
static const char* jkAlterTableStmtTableName = "TableName";
|
static const char* jkAlterTableStmtTableName = "TableName";
|
||||||
static const char* jkAlterTableStmtAlterType = "AlterType";
|
static const char* jkAlterTableStmtAlterType = "AlterType";
|
||||||
|
@ -4527,6 +4705,18 @@ static int32_t jsonToAlterTableStmt(const SJson* pJson, void* pObj) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* jkDropUserStmtUserName = "UserName";
|
||||||
|
|
||||||
|
static int32_t dropUserStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SDropUserStmt* pNode = (const SDropUserStmt*)pObj;
|
||||||
|
return tjsonAddStringToObject(pJson, jkDropUserStmtUserName, pNode->userName);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToDropUserStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SDropUserStmt* pNode = (SDropUserStmt*)pObj;
|
||||||
|
return tjsonGetStringValue(pJson, jkDropUserStmtUserName, pNode->userName);
|
||||||
|
}
|
||||||
|
|
||||||
static const char* jkUseDatabaseStmtDbName = "DbName";
|
static const char* jkUseDatabaseStmtDbName = "DbName";
|
||||||
|
|
||||||
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
|
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
@ -4571,6 +4761,69 @@ static int32_t jsonToAlterDnodeStmt(const SJson* pJson, void* pObj) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* jkDropComponentNodeStmtDnodeId = "DnodeId";
|
||||||
|
|
||||||
|
static int32_t dropComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SDropComponentNodeStmt* pNode = (const SDropComponentNodeStmt*)pObj;
|
||||||
|
return tjsonAddIntegerToObject(pJson, jkDropComponentNodeStmtDnodeId, pNode->dnodeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToDropComponentNodeStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SDropComponentNodeStmt* pNode = (SDropComponentNodeStmt*)pObj;
|
||||||
|
return tjsonGetIntValue(pJson, jkDropComponentNodeStmtDnodeId, &pNode->dnodeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t dropQnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToDropQnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t dropSnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToDropSnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t dropMnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToDropMnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static const char* jkDropDnodeStmtDnodeId = "DnodeId";
|
||||||
|
static const char* jkDropDnodeStmtFqdn = "Fqdn";
|
||||||
|
static const char* jkDropDnodeStmtPort = "Port";
|
||||||
|
static const char* jkDropDnodeStmtForce = "Force";
|
||||||
|
|
||||||
|
static int32_t dropDnodeStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SDropDnodeStmt* pNode = (const SDropDnodeStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtDnodeId, pNode->dnodeId);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddStringToObject(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtPort, pNode->port);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtForce, pNode->force);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToDropDnodeStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SDropDnodeStmt* pNode = (SDropDnodeStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonGetIntValue(pJson, jkDropDnodeStmtDnodeId, &pNode->dnodeId);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetStringValue(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetIntValue(pJson, jkDropDnodeStmtPort, &pNode->port);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetBoolValue(pJson, jkDropDnodeStmtForce, &pNode->force);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
static const char* jkCreateTopicStmtTopicName = "TopicName";
|
static const char* jkCreateTopicStmtTopicName = "TopicName";
|
||||||
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
|
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
|
||||||
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
|
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
|
||||||
|
@ -4610,6 +4863,56 @@ static int32_t jsonToCreateTopicStmt(const SJson* pJson, void* pObj) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* jkDropTopicStmtTopicName = "TopicName";
|
||||||
|
static const char* jkDropTopicStmtIgnoreNotExists = "IgnoreNotExists";
|
||||||
|
|
||||||
|
static int32_t dropTopicStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SDropTopicStmt* pNode = (const SDropTopicStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddStringToObject(pJson, jkDropTopicStmtTopicName, pNode->topicName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddBoolToObject(pJson, jkDropTopicStmtIgnoreNotExists, pNode->ignoreNotExists);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToDropTopicStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SDropTopicStmt* pNode = (SDropTopicStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonGetStringValue(pJson, jkDropTopicStmtTopicName, pNode->topicName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetBoolValue(pJson, jkDropTopicStmtIgnoreNotExists, &pNode->ignoreNotExists);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char* jkDropStreamStmtStreamName = "StreamName";
|
||||||
|
static const char* jkDropStreamStmtIgnoreNotExists = "IgnoreNotExists";
|
||||||
|
|
||||||
|
static int32_t dropStreamStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SDropStreamStmt* pNode = (const SDropStreamStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddStringToObject(pJson, jkDropStreamStmtStreamName, pNode->streamName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddBoolToObject(pJson, jkDropStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToDropStreamStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SDropStreamStmt* pNode = (SDropStreamStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonGetStringValue(pJson, jkDropStreamStmtStreamName, pNode->streamName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetBoolValue(pJson, jkDropStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
|
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
|
||||||
|
|
||||||
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
|
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
@ -4654,10 +4957,42 @@ static int32_t jsonToShowStmt(const SJson* pJson, void* pObj) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t showDnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowDnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t showMnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowMnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t showQnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowQnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t showClusterStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowClusterStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
static int32_t showDatabasesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
static int32_t showDatabasesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
static int32_t jsonToShowDatabasesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
static int32_t jsonToShowDatabasesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t showFunctionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowFunctionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t showIndexesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowIndexesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t showStablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowStablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t showStreamsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowStreamsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
static int32_t showTablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
static int32_t showTablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
static int32_t jsonToShowTablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
static int32_t jsonToShowTablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
@ -4674,10 +5009,47 @@ static int32_t showVgroupsStmtToJson(const void* pObj, SJson* pJson) { return sh
|
||||||
|
|
||||||
static int32_t jsonToShowVgroupsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
static int32_t jsonToShowVgroupsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t showConsumersStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowConsumersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
static int32_t showVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
static int32_t showVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
static int32_t jsonToShowVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
static int32_t jsonToShowVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
|
||||||
|
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
|
||||||
|
|
||||||
|
static int32_t showDnodeVariablesStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SShowDnodeVariablesStmt* pNode = (const SShowDnodeVariablesStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToShowDnodeVariablesStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SShowDnodeVariablesStmt* pNode = (SShowDnodeVariablesStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t showTransactionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowTransactionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static int32_t showSubscriptionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowSubscriptionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
|
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
|
||||||
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
|
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
|
||||||
|
|
||||||
|
@ -4707,6 +5079,80 @@ static int32_t showUserPrivilegesStmtToJson(const void* pObj, SJson* pJson) { re
|
||||||
|
|
||||||
static int32_t jsonToShowUserPrivilegesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
static int32_t jsonToShowUserPrivilegesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
|
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
|
||||||
|
|
||||||
|
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
|
||||||
|
return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToShowCreateDatabaseStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SShowCreateDatabaseStmt* pNode = (SShowCreateDatabaseStmt*)pObj;
|
||||||
|
return tjsonGetStringValue(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char* jkShowCreateTableStmtDbName = "DbName";
|
||||||
|
static const char* jkShowCreateTableStmtTableName = "TableName";
|
||||||
|
|
||||||
|
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonGetStringValue(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetStringValue(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
return showCreateTableStmtToJson(pObj, pJson);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToShowCreateStableStmt(const SJson* pJson, void* pObj) {
|
||||||
|
return jsonToShowCreateTableStmt(pJson, pObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char* jkShowTableDistributedStmtDbName = "DbName";
|
||||||
|
static const char* jkShowTableDistributedStmtTableName = "TableName";
|
||||||
|
|
||||||
|
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
|
||||||
|
SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t showLocalVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
|
||||||
|
|
||||||
|
static int32_t jsonToShowLocalVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
|
||||||
|
|
||||||
static const char* jkShowTableTagsStmtDbName = "DbName";
|
static const char* jkShowTableTagsStmtDbName = "DbName";
|
||||||
static const char* jkShowTableTagsStmtTbName = "TbName";
|
static const char* jkShowTableTagsStmtTbName = "TbName";
|
||||||
static const char* jkShowTableTagsStmtTags = "Tags";
|
static const char* jkShowTableTagsStmtTags = "Tags";
|
||||||
|
@ -4823,7 +5269,7 @@ static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
|
||||||
case QUERY_NODE_TEMP_TABLE:
|
case QUERY_NODE_TEMP_TABLE:
|
||||||
return tempTableNodeToJson(pObj, pJson);
|
return tempTableNodeToJson(pObj, pJson);
|
||||||
case QUERY_NODE_JOIN_TABLE:
|
case QUERY_NODE_JOIN_TABLE:
|
||||||
break;
|
return joinTableNodeToJson(pObj, pJson);
|
||||||
case QUERY_NODE_GROUPING_SET:
|
case QUERY_NODE_GROUPING_SET:
|
||||||
return groupingSetNodeToJson(pObj, pJson);
|
return groupingSetNodeToJson(pObj, pJson);
|
||||||
case QUERY_NODE_ORDER_BY_EXPR:
|
case QUERY_NODE_ORDER_BY_EXPR:
|
||||||
|
@ -4866,7 +5312,8 @@ static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
|
||||||
return setOperatorToJson(pObj, pJson);
|
return setOperatorToJson(pObj, pJson);
|
||||||
case QUERY_NODE_SELECT_STMT:
|
case QUERY_NODE_SELECT_STMT:
|
||||||
return selectStmtToJson(pObj, pJson);
|
return selectStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_VNODE_MODIF_STMT:
|
case QUERY_NODE_VNODE_MODIFY_STMT:
|
||||||
|
return vnodeModifyStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_CREATE_DATABASE_STMT:
|
case QUERY_NODE_CREATE_DATABASE_STMT:
|
||||||
break;
|
break;
|
||||||
case QUERY_NODE_ALTER_DATABASE_STMT:
|
case QUERY_NODE_ALTER_DATABASE_STMT:
|
||||||
|
@ -4875,18 +5322,54 @@ static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
|
||||||
return trimDatabaseStmtToJson(pObj, pJson);
|
return trimDatabaseStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_CREATE_TABLE_STMT:
|
case QUERY_NODE_CREATE_TABLE_STMT:
|
||||||
break;
|
break;
|
||||||
|
case QUERY_NODE_DROP_TABLE_CLAUSE:
|
||||||
|
return dropTableClauseToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_DROP_TABLE_STMT:
|
||||||
|
return dropTableStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_DROP_SUPER_TABLE_STMT:
|
||||||
|
return dropStableStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_ALTER_TABLE_STMT:
|
case QUERY_NODE_ALTER_TABLE_STMT:
|
||||||
return alterTableStmtToJson(pObj, pJson);
|
return alterTableStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_DROP_USER_STMT:
|
||||||
|
return dropUserStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_USE_DATABASE_STMT:
|
case QUERY_NODE_USE_DATABASE_STMT:
|
||||||
return useDatabaseStmtToJson(pObj, pJson);
|
return useDatabaseStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_DROP_DNODE_STMT:
|
||||||
|
return dropDnodeStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_ALTER_DNODE_STMT:
|
case QUERY_NODE_ALTER_DNODE_STMT:
|
||||||
return alterDnodeStmtToJson(pObj, pJson);
|
return alterDnodeStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_DROP_QNODE_STMT:
|
||||||
|
return dropQnodeStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_DROP_SNODE_STMT:
|
||||||
|
return dropSnodeStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_DROP_MNODE_STMT:
|
||||||
|
return dropMnodeStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_CREATE_TOPIC_STMT:
|
case QUERY_NODE_CREATE_TOPIC_STMT:
|
||||||
return createTopicStmtToJson(pObj, pJson);
|
return createTopicStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_DROP_TOPIC_STMT:
|
||||||
|
return dropTopicStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_DROP_STREAM_STMT:
|
||||||
|
return dropStreamStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_SPLIT_VGROUP_STMT:
|
case QUERY_NODE_SPLIT_VGROUP_STMT:
|
||||||
return splitVgroupStmtToJson(pObj, pJson);
|
return splitVgroupStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_DNODES_STMT:
|
||||||
|
return showDnodesStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_MNODES_STMT:
|
||||||
|
return showMnodesStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_QNODES_STMT:
|
||||||
|
return showQnodesStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_CLUSTER_STMT:
|
||||||
|
return showClusterStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_SHOW_DATABASES_STMT:
|
case QUERY_NODE_SHOW_DATABASES_STMT:
|
||||||
return showDatabasesStmtToJson(pObj, pJson);
|
return showDatabasesStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_FUNCTIONS_STMT:
|
||||||
|
return showFunctionsStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_INDEXES_STMT:
|
||||||
|
return showIndexesStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_STABLES_STMT:
|
||||||
|
return showStablesStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_STREAMS_STMT:
|
||||||
|
return showStreamsStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_SHOW_TABLES_STMT:
|
case QUERY_NODE_SHOW_TABLES_STMT:
|
||||||
return showTablesStmtToJson(pObj, pJson);
|
return showTablesStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_SHOW_TAGS_STMT:
|
case QUERY_NODE_SHOW_TAGS_STMT:
|
||||||
|
@ -4895,12 +5378,30 @@ static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
|
||||||
return showUsersStmtToJson(pObj, pJson);
|
return showUsersStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
||||||
return showVgroupsStmtToJson(pObj, pJson);
|
return showVgroupsStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_CONSUMERS_STMT:
|
||||||
|
return showConsumersStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_SHOW_VARIABLES_STMT:
|
case QUERY_NODE_SHOW_VARIABLES_STMT:
|
||||||
return showVariablesStmtToJson(pObj, pJson);
|
return showVariablesStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
|
||||||
|
return showDnodeVariablesStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
|
||||||
|
return showTransactionsStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
|
||||||
|
return showSubscriptionsStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_SHOW_VNODES_STMT:
|
case QUERY_NODE_SHOW_VNODES_STMT:
|
||||||
return showVnodesStmtToJson(pObj, pJson);
|
return showVnodesStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
|
case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
|
||||||
return showUserPrivilegesStmtToJson(pObj, pJson);
|
return showUserPrivilegesStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
|
||||||
|
return showCreateDatabaseStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
|
||||||
|
return showCreateTableStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
|
||||||
|
return showCreateStableStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
|
||||||
|
return showTableDistributedStmtToJson(pObj, pJson);
|
||||||
|
case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
|
||||||
|
return showLocalVariablesStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
|
case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
|
||||||
return showTableTagsStmtToJson(pObj, pJson);
|
return showTableTagsStmtToJson(pObj, pJson);
|
||||||
case QUERY_NODE_DELETE_STMT:
|
case QUERY_NODE_DELETE_STMT:
|
||||||
|
@ -5023,6 +5524,8 @@ static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
|
||||||
return jsonToRealTableNode(pJson, pObj);
|
return jsonToRealTableNode(pJson, pObj);
|
||||||
case QUERY_NODE_TEMP_TABLE:
|
case QUERY_NODE_TEMP_TABLE:
|
||||||
return jsonToTempTableNode(pJson, pObj);
|
return jsonToTempTableNode(pJson, pObj);
|
||||||
|
case QUERY_NODE_JOIN_TABLE:
|
||||||
|
return jsonToJoinTableNode(pJson, pObj);
|
||||||
case QUERY_NODE_GROUPING_SET:
|
case QUERY_NODE_GROUPING_SET:
|
||||||
return jsonToGroupingSetNode(pJson, pObj);
|
return jsonToGroupingSetNode(pJson, pObj);
|
||||||
case QUERY_NODE_ORDER_BY_EXPR:
|
case QUERY_NODE_ORDER_BY_EXPR:
|
||||||
|
@ -5061,22 +5564,60 @@ static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
|
||||||
return jsonToSetOperator(pJson, pObj);
|
return jsonToSetOperator(pJson, pObj);
|
||||||
case QUERY_NODE_SELECT_STMT:
|
case QUERY_NODE_SELECT_STMT:
|
||||||
return jsonToSelectStmt(pJson, pObj);
|
return jsonToSelectStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_VNODE_MODIFY_STMT:
|
||||||
|
return jsonToVnodeModifyStmt(pJson, pObj);
|
||||||
case QUERY_NODE_ALTER_DATABASE_STMT:
|
case QUERY_NODE_ALTER_DATABASE_STMT:
|
||||||
return jsonToAlterDatabaseStmt(pJson, pObj);
|
return jsonToAlterDatabaseStmt(pJson, pObj);
|
||||||
case QUERY_NODE_TRIM_DATABASE_STMT:
|
case QUERY_NODE_TRIM_DATABASE_STMT:
|
||||||
return jsonToTrimDatabaseStmt(pJson, pObj);
|
return jsonToTrimDatabaseStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_DROP_TABLE_CLAUSE:
|
||||||
|
return jsonToDropTableClause(pJson, pObj);
|
||||||
|
case QUERY_NODE_DROP_TABLE_STMT:
|
||||||
|
return jsonToDropTableStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_DROP_SUPER_TABLE_STMT:
|
||||||
|
return jsonToDropStableStmt(pJson, pObj);
|
||||||
case QUERY_NODE_ALTER_TABLE_STMT:
|
case QUERY_NODE_ALTER_TABLE_STMT:
|
||||||
return jsonToAlterTableStmt(pJson, pObj);
|
return jsonToAlterTableStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_DROP_USER_STMT:
|
||||||
|
return jsonToDropUserStmt(pJson, pObj);
|
||||||
case QUERY_NODE_USE_DATABASE_STMT:
|
case QUERY_NODE_USE_DATABASE_STMT:
|
||||||
return jsonToUseDatabaseStmt(pJson, pObj);
|
return jsonToUseDatabaseStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_DROP_DNODE_STMT:
|
||||||
|
return jsonToDropDnodeStmt(pJson, pObj);
|
||||||
case QUERY_NODE_ALTER_DNODE_STMT:
|
case QUERY_NODE_ALTER_DNODE_STMT:
|
||||||
return jsonToAlterDnodeStmt(pJson, pObj);
|
return jsonToAlterDnodeStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_DROP_QNODE_STMT:
|
||||||
|
return jsonToDropQnodeStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_DROP_SNODE_STMT:
|
||||||
|
return jsonToDropSnodeStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_DROP_MNODE_STMT:
|
||||||
|
return jsonToDropMnodeStmt(pJson, pObj);
|
||||||
case QUERY_NODE_CREATE_TOPIC_STMT:
|
case QUERY_NODE_CREATE_TOPIC_STMT:
|
||||||
return jsonToCreateTopicStmt(pJson, pObj);
|
return jsonToCreateTopicStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_DROP_TOPIC_STMT:
|
||||||
|
return jsonToDropTopicStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_DROP_STREAM_STMT:
|
||||||
|
return jsonToDropStreamStmt(pJson, pObj);
|
||||||
case QUERY_NODE_SPLIT_VGROUP_STMT:
|
case QUERY_NODE_SPLIT_VGROUP_STMT:
|
||||||
return jsonToSplitVgroupStmt(pJson, pObj);
|
return jsonToSplitVgroupStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_DNODES_STMT:
|
||||||
|
return jsonToShowDnodesStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_MNODES_STMT:
|
||||||
|
return jsonToShowMnodesStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_QNODES_STMT:
|
||||||
|
return jsonToShowQnodesStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_CLUSTER_STMT:
|
||||||
|
return jsonToShowClusterStmt(pJson, pObj);
|
||||||
case QUERY_NODE_SHOW_DATABASES_STMT:
|
case QUERY_NODE_SHOW_DATABASES_STMT:
|
||||||
return jsonToShowDatabasesStmt(pJson, pObj);
|
return jsonToShowDatabasesStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_FUNCTIONS_STMT:
|
||||||
|
return jsonToShowFunctionsStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_INDEXES_STMT:
|
||||||
|
return jsonToShowIndexesStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_STABLES_STMT:
|
||||||
|
return jsonToShowStablesStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_STREAMS_STMT:
|
||||||
|
return jsonToShowStreamsStmt(pJson, pObj);
|
||||||
case QUERY_NODE_SHOW_TABLES_STMT:
|
case QUERY_NODE_SHOW_TABLES_STMT:
|
||||||
return jsonToShowTablesStmt(pJson, pObj);
|
return jsonToShowTablesStmt(pJson, pObj);
|
||||||
case QUERY_NODE_SHOW_TAGS_STMT:
|
case QUERY_NODE_SHOW_TAGS_STMT:
|
||||||
|
@ -5085,12 +5626,30 @@ static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
|
||||||
return jsonToShowUsersStmt(pJson, pObj);
|
return jsonToShowUsersStmt(pJson, pObj);
|
||||||
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
||||||
return jsonToShowVgroupsStmt(pJson, pObj);
|
return jsonToShowVgroupsStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_CONSUMERS_STMT:
|
||||||
|
return jsonToShowConsumersStmt(pJson, pObj);
|
||||||
case QUERY_NODE_SHOW_VARIABLES_STMT:
|
case QUERY_NODE_SHOW_VARIABLES_STMT:
|
||||||
return jsonToShowVariablesStmt(pJson, pObj);
|
return jsonToShowVariablesStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
|
||||||
|
return jsonToShowDnodeVariablesStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
|
||||||
|
return jsonToShowTransactionsStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
|
||||||
|
return jsonToShowSubscriptionsStmt(pJson, pObj);
|
||||||
case QUERY_NODE_SHOW_VNODES_STMT:
|
case QUERY_NODE_SHOW_VNODES_STMT:
|
||||||
return jsonToShowVnodesStmt(pJson, pObj);
|
return jsonToShowVnodesStmt(pJson, pObj);
|
||||||
case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
|
case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
|
||||||
return jsonToShowUserPrivilegesStmt(pJson, pObj);
|
return jsonToShowUserPrivilegesStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
|
||||||
|
return jsonToShowCreateDatabaseStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
|
||||||
|
return jsonToShowCreateTableStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
|
||||||
|
return jsonToShowCreateStableStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
|
||||||
|
return jsonToShowTableDistributedStmt(pJson, pObj);
|
||||||
|
case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
|
||||||
|
return jsonToShowLocalVariablesStmt(pJson, pObj);
|
||||||
case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
|
case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
|
||||||
return jsonToShowTableTagsStmt(pJson, pObj);
|
return jsonToShowTableTagsStmt(pJson, pObj);
|
||||||
case QUERY_NODE_DELETE_STMT:
|
case QUERY_NODE_DELETE_STMT:
|
||||||
|
|
|
@ -305,8 +305,8 @@ SNode* nodesMakeNode(ENodeType type) {
|
||||||
return makeNode(type, sizeof(SSetOperator));
|
return makeNode(type, sizeof(SSetOperator));
|
||||||
case QUERY_NODE_SELECT_STMT:
|
case QUERY_NODE_SELECT_STMT:
|
||||||
return makeNode(type, sizeof(SSelectStmt));
|
return makeNode(type, sizeof(SSelectStmt));
|
||||||
case QUERY_NODE_VNODE_MODIF_STMT:
|
case QUERY_NODE_VNODE_MODIFY_STMT:
|
||||||
return makeNode(type, sizeof(SVnodeModifOpStmt));
|
return makeNode(type, sizeof(SVnodeModifyOpStmt));
|
||||||
case QUERY_NODE_CREATE_DATABASE_STMT:
|
case QUERY_NODE_CREATE_DATABASE_STMT:
|
||||||
return makeNode(type, sizeof(SCreateDatabaseStmt));
|
return makeNode(type, sizeof(SCreateDatabaseStmt));
|
||||||
case QUERY_NODE_DROP_DATABASE_STMT:
|
case QUERY_NODE_DROP_DATABASE_STMT:
|
||||||
|
@ -818,8 +818,8 @@ void nodesDestroyNode(SNode* pNode) {
|
||||||
nodesDestroyNode((SNode*)pStmt->pSlimit);
|
nodesDestroyNode((SNode*)pStmt->pSlimit);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case QUERY_NODE_VNODE_MODIF_STMT: {
|
case QUERY_NODE_VNODE_MODIFY_STMT: {
|
||||||
SVnodeModifOpStmt* pStmt = (SVnodeModifOpStmt*)pNode;
|
SVnodeModifyOpStmt* pStmt = (SVnodeModifyOpStmt*)pNode;
|
||||||
destroyVgDataBlockArray(pStmt->pDataBlocks);
|
destroyVgDataBlockArray(pStmt->pDataBlocks);
|
||||||
taosMemoryFreeClear(pStmt->pTableMeta);
|
taosMemoryFreeClear(pStmt->pTableMeta);
|
||||||
taosHashCleanup(pStmt->pVgroupsHashObj);
|
taosHashCleanup(pStmt->pVgroupsHashObj);
|
||||||
|
|
|
@ -1474,7 +1474,7 @@ SNode* createDropUserStmt(SAstCreateContext* pCxt, SToken* pUserName) {
|
||||||
}
|
}
|
||||||
SDropUserStmt* pStmt = (SDropUserStmt*)nodesMakeNode(QUERY_NODE_DROP_USER_STMT);
|
SDropUserStmt* pStmt = (SDropUserStmt*)nodesMakeNode(QUERY_NODE_DROP_USER_STMT);
|
||||||
CHECK_OUT_OF_MEM(pStmt);
|
CHECK_OUT_OF_MEM(pStmt);
|
||||||
COPY_STRING_FORM_ID_TOKEN(pStmt->useName, pUserName);
|
COPY_STRING_FORM_ID_TOKEN(pStmt->userName, pUserName);
|
||||||
return (SNode*)pStmt;
|
return (SNode*)pStmt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ static int32_t authSetOperator(SAuthCxt* pCxt, SSetOperator* pSetOper) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t authDropUser(SAuthCxt* pCxt, SDropUserStmt* pStmt) {
|
static int32_t authDropUser(SAuthCxt* pCxt, SDropUserStmt* pStmt) {
|
||||||
if (!pCxt->pParseCxt->isSuperUser || 0 == strcmp(pStmt->useName, TSDB_DEFAULT_USER)) {
|
if (!pCxt->pParseCxt->isSuperUser || 0 == strcmp(pStmt->userName, TSDB_DEFAULT_USER)) {
|
||||||
return TSDB_CODE_PAR_PERMISSION_DENIED;
|
return TSDB_CODE_PAR_PERMISSION_DENIED;
|
||||||
}
|
}
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
|
@ -155,7 +155,7 @@ static int32_t ignoreUsingClause(SInsertParseContext* pCxt, const char** pSql) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseDuplicateUsingClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, bool* pDuplicate) {
|
static int32_t parseDuplicateUsingClause(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, bool* pDuplicate) {
|
||||||
*pDuplicate = false;
|
*pDuplicate = false;
|
||||||
|
|
||||||
char tbFName[TSDB_TABLE_FNAME_LEN];
|
char tbFName[TSDB_TABLE_FNAME_LEN];
|
||||||
|
@ -518,7 +518,7 @@ static int32_t parseTagToken(const char** end, SToken* pToken, SSchema* pSchema,
|
||||||
|
|
||||||
// input pStmt->pSql: [(tag1_name, ...)] TAGS (tag1_value, ...) ...
|
// input pStmt->pSql: [(tag1_name, ...)] TAGS (tag1_value, ...) ...
|
||||||
// output pStmt->pSql: TAGS (tag1_value, ...) ...
|
// output pStmt->pSql: TAGS (tag1_value, ...) ...
|
||||||
static int32_t parseBoundTagsClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseBoundTagsClause(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
SSchema* pTagsSchema = getTableTagSchema(pStmt->pTableMeta);
|
SSchema* pTagsSchema = getTableTagSchema(pStmt->pTableMeta);
|
||||||
insSetBoundColumnInfo(&pCxt->tags, pTagsSchema, getNumOfTags(pStmt->pTableMeta));
|
insSetBoundColumnInfo(&pCxt->tags, pTagsSchema, getNumOfTags(pStmt->pTableMeta));
|
||||||
|
|
||||||
|
@ -533,7 +533,7 @@ static int32_t parseBoundTagsClause(SInsertParseContext* pCxt, SVnodeModifOpStmt
|
||||||
return parseBoundColumns(pCxt, &pStmt->pSql, true, &pCxt->tags, pTagsSchema);
|
return parseBoundColumns(pCxt, &pStmt->pSql, true, &pCxt->tags, pTagsSchema);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseTagValue(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, SSchema* pTagSchema, SToken* pToken,
|
static int32_t parseTagValue(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, SSchema* pTagSchema, SToken* pToken,
|
||||||
SArray* pTagName, SArray* pTagVals, STag** pTag) {
|
SArray* pTagName, SArray* pTagVals, STag** pTag) {
|
||||||
if (!isNullValue(pTagSchema->type, pToken)) {
|
if (!isNullValue(pTagSchema->type, pToken)) {
|
||||||
taosArrayPush(pTagName, pTagSchema->name);
|
taosArrayPush(pTagName, pTagSchema->name);
|
||||||
|
@ -561,7 +561,7 @@ static int32_t parseTagValue(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void buildCreateTbReq(SVnodeModifOpStmt* pStmt, STag* pTag, SArray* pTagName) {
|
static void buildCreateTbReq(SVnodeModifyOpStmt* pStmt, STag* pTag, SArray* pTagName) {
|
||||||
insBuildCreateTbReq(&pStmt->createTblReq, pStmt->targetTableName.tname, pTag, pStmt->pTableMeta->suid,
|
insBuildCreateTbReq(&pStmt->createTblReq, pStmt->targetTableName.tname, pTag, pStmt->pTableMeta->suid,
|
||||||
pStmt->usingTableName.tname, pTagName, pStmt->pTableMeta->tableInfo.numOfTags,
|
pStmt->usingTableName.tname, pTagName, pStmt->pTableMeta->tableInfo.numOfTags,
|
||||||
TSDB_DEFAULT_TABLE_TTL);
|
TSDB_DEFAULT_TABLE_TTL);
|
||||||
|
@ -591,7 +591,7 @@ static int32_t checkAndTrimValue(SToken* pToken, char* tmpTokenBuf, SMsgBuf* pMs
|
||||||
}
|
}
|
||||||
|
|
||||||
// pSql -> tag1_value, ...)
|
// pSql -> tag1_value, ...)
|
||||||
static int32_t parseTagsClauseImpl(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseTagsClauseImpl(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
SSchema* pSchema = getTableTagSchema(pStmt->pTableMeta);
|
SSchema* pSchema = getTableTagSchema(pStmt->pTableMeta);
|
||||||
SArray* pTagVals = taosArrayInit(pCxt->tags.numOfBound, sizeof(STagVal));
|
SArray* pTagVals = taosArrayInit(pCxt->tags.numOfBound, sizeof(STagVal));
|
||||||
|
@ -649,7 +649,7 @@ static int32_t parseTagsClauseImpl(SInsertParseContext* pCxt, SVnodeModifOpStmt*
|
||||||
|
|
||||||
// input pStmt->pSql: TAGS (tag1_value, ...) [table_options] ...
|
// input pStmt->pSql: TAGS (tag1_value, ...) [table_options] ...
|
||||||
// output pStmt->pSql: [table_options] ...
|
// output pStmt->pSql: [table_options] ...
|
||||||
static int32_t parseTagsClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseTagsClause(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
SToken token;
|
SToken token;
|
||||||
NEXT_TOKEN(pStmt->pSql, token);
|
NEXT_TOKEN(pStmt->pSql, token);
|
||||||
if (TK_TAGS != token.type) {
|
if (TK_TAGS != token.type) {
|
||||||
|
@ -673,7 +673,7 @@ static int32_t parseTagsClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pSt
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t storeTableMeta(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t storeTableMeta(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
pStmt->pTableMeta->suid = pStmt->pTableMeta->uid;
|
pStmt->pTableMeta->suid = pStmt->pTableMeta->uid;
|
||||||
pStmt->pTableMeta->uid = pStmt->totalTbNum;
|
pStmt->pTableMeta->uid = pStmt->totalTbNum;
|
||||||
pStmt->pTableMeta->tableType = TSDB_CHILD_TABLE;
|
pStmt->pTableMeta->tableType = TSDB_CHILD_TABLE;
|
||||||
|
@ -688,7 +688,7 @@ static int32_t storeTableMeta(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStm
|
||||||
return taosHashPut(pStmt->pSubTableHashObj, tbFName, strlen(tbFName), &pBackup, POINTER_BYTES);
|
return taosHashPut(pStmt->pSubTableHashObj, tbFName, strlen(tbFName), &pBackup, POINTER_BYTES);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseTableOptions(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseTableOptions(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
do {
|
do {
|
||||||
int32_t index = 0;
|
int32_t index = 0;
|
||||||
SToken token;
|
SToken token;
|
||||||
|
@ -731,7 +731,7 @@ static int32_t parseTableOptions(SInsertParseContext* pCxt, SVnodeModifOpStmt* p
|
||||||
// output pStmt->pSql:
|
// output pStmt->pSql:
|
||||||
// 1. [(field1_name, ...)]
|
// 1. [(field1_name, ...)]
|
||||||
// 2. VALUES ... | FILE ...
|
// 2. VALUES ... | FILE ...
|
||||||
static int32_t parseUsingClauseBottom(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseUsingClauseBottom(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
if (!pStmt->usingTableProcessing || pCxt->usingDuplicateTable) {
|
if (!pStmt->usingTableProcessing || pCxt->usingDuplicateTable) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -805,7 +805,7 @@ static int32_t getTableMeta(SInsertParseContext* pCxt, SName* pTbName, bool isSt
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t getTableVgroup(SParseContext* pCxt, SVnodeModifOpStmt* pStmt, bool isStb, bool* pMissCache) {
|
static int32_t getTableVgroup(SParseContext* pCxt, SVnodeModifyOpStmt* pStmt, bool isStb, bool* pMissCache) {
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
SVgroupInfo vg;
|
SVgroupInfo vg;
|
||||||
bool exists = true;
|
bool exists = true;
|
||||||
|
@ -830,7 +830,7 @@ static int32_t getTableVgroup(SParseContext* pCxt, SVnodeModifOpStmt* pStmt, boo
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t getTableMetaAndVgroupImpl(SParseContext* pCxt, SVnodeModifOpStmt* pStmt, bool* pMissCache) {
|
static int32_t getTableMetaAndVgroupImpl(SParseContext* pCxt, SVnodeModifyOpStmt* pStmt, bool* pMissCache) {
|
||||||
SVgroupInfo vg;
|
SVgroupInfo vg;
|
||||||
int32_t code = catalogGetCachedTableVgMeta(pCxt->pCatalog, &pStmt->targetTableName, &vg, &pStmt->pTableMeta);
|
int32_t code = catalogGetCachedTableVgMeta(pCxt->pCatalog, &pStmt->targetTableName, &vg, &pStmt->pTableMeta);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
@ -842,7 +842,7 @@ static int32_t getTableMetaAndVgroupImpl(SParseContext* pCxt, SVnodeModifOpStmt*
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t getTableMetaAndVgroup(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, bool* pMissCache) {
|
static int32_t getTableMetaAndVgroup(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, bool* pMissCache) {
|
||||||
SParseContext* pComCxt = pCxt->pComCxt;
|
SParseContext* pComCxt = pCxt->pComCxt;
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
if (pComCxt->async) {
|
if (pComCxt->async) {
|
||||||
|
@ -868,7 +868,7 @@ static int32_t collectUseDatabase(const SName* pName, SHashObj* pDbs) {
|
||||||
return taosHashPut(pDbs, dbFName, strlen(dbFName), dbFName, sizeof(dbFName));
|
return taosHashPut(pDbs, dbFName, strlen(dbFName), dbFName, sizeof(dbFName));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t getTargetTableSchema(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t getTargetTableSchema(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
if (pCxt->forceUpdate) {
|
if (pCxt->forceUpdate) {
|
||||||
pCxt->missCache = true;
|
pCxt->missCache = true;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -896,11 +896,11 @@ static int32_t getTargetTableSchema(SInsertParseContext* pCxt, SVnodeModifOpStmt
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t preParseUsingTableName(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, SToken* pTbName) {
|
static int32_t preParseUsingTableName(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, SToken* pTbName) {
|
||||||
return insCreateSName(&pStmt->usingTableName, pTbName, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg);
|
return insCreateSName(&pStmt->usingTableName, pTbName, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t getUsingTableSchema(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t getUsingTableSchema(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
if (pCxt->forceUpdate) {
|
if (pCxt->forceUpdate) {
|
||||||
pCxt->missCache = true;
|
pCxt->missCache = true;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -922,7 +922,7 @@ static int32_t getUsingTableSchema(SInsertParseContext* pCxt, SVnodeModifOpStmt*
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseUsingTableNameImpl(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseUsingTableNameImpl(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
SToken token;
|
SToken token;
|
||||||
NEXT_TOKEN(pStmt->pSql, token);
|
NEXT_TOKEN(pStmt->pSql, token);
|
||||||
int32_t code = preParseUsingTableName(pCxt, pStmt, &token);
|
int32_t code = preParseUsingTableName(pCxt, pStmt, &token);
|
||||||
|
@ -941,7 +941,7 @@ static int32_t parseUsingTableNameImpl(SInsertParseContext* pCxt, SVnodeModifOpS
|
||||||
// output pStmt->pSql:
|
// output pStmt->pSql:
|
||||||
// 1. [(tag1_name, ...)] TAGS (tag1_value, ...) [table_options]] ...
|
// 1. [(tag1_name, ...)] TAGS (tag1_value, ...) [table_options]] ...
|
||||||
// 2. VALUES ... | FILE ...
|
// 2. VALUES ... | FILE ...
|
||||||
static int32_t parseUsingTableName(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseUsingTableName(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
SToken token;
|
SToken token;
|
||||||
int32_t index = 0;
|
int32_t index = 0;
|
||||||
NEXT_TOKEN_KEEP_SQL(pStmt->pSql, token, index);
|
NEXT_TOKEN_KEEP_SQL(pStmt->pSql, token, index);
|
||||||
|
@ -959,7 +959,7 @@ static int32_t parseUsingTableName(SInsertParseContext* pCxt, SVnodeModifOpStmt*
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t preParseTargetTableName(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, SToken* pTbName) {
|
static int32_t preParseTargetTableName(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, SToken* pTbName) {
|
||||||
return insCreateSName(&pStmt->targetTableName, pTbName, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg);
|
return insCreateSName(&pStmt->targetTableName, pTbName, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -970,7 +970,7 @@ static int32_t preParseTargetTableName(SInsertParseContext* pCxt, SVnodeModifOpS
|
||||||
// output pStmt->pSql:
|
// output pStmt->pSql:
|
||||||
// 1. [ USING ... ] ...
|
// 1. [ USING ... ] ...
|
||||||
// 2. VALUES ... | FILE ...
|
// 2. VALUES ... | FILE ...
|
||||||
static int32_t preParseBoundColumnsClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t preParseBoundColumnsClause(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
SToken token;
|
SToken token;
|
||||||
int32_t index = 0;
|
int32_t index = 0;
|
||||||
NEXT_TOKEN_KEEP_SQL(pStmt->pSql, token, index);
|
NEXT_TOKEN_KEEP_SQL(pStmt->pSql, token, index);
|
||||||
|
@ -984,7 +984,7 @@ static int32_t preParseBoundColumnsClause(SInsertParseContext* pCxt, SVnodeModif
|
||||||
return skipParentheses(pCxt, &pStmt->pSql);
|
return skipParentheses(pCxt, &pStmt->pSql);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t getTableDataBlocks(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, STableDataBlocks** pDataBuf) {
|
static int32_t getTableDataBlocks(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, STableDataBlocks** pDataBuf) {
|
||||||
if (pCxt->pComCxt->async) {
|
if (pCxt->pComCxt->async) {
|
||||||
uint64_t uid = pStmt->pTableMeta->uid;
|
uint64_t uid = pStmt->pTableMeta->uid;
|
||||||
if (pStmt->usingTableProcessing) {
|
if (pStmt->usingTableProcessing) {
|
||||||
|
@ -1002,7 +1002,7 @@ static int32_t getTableDataBlocks(SInsertParseContext* pCxt, SVnodeModifOpStmt*
|
||||||
pDataBuf, NULL, &pStmt->createTblReq);
|
pDataBuf, NULL, &pStmt->createTblReq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseBoundColumnsClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt,
|
static int32_t parseBoundColumnsClause(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt,
|
||||||
STableDataBlocks* pDataBuf) {
|
STableDataBlocks* pDataBuf) {
|
||||||
SToken token;
|
SToken token;
|
||||||
int32_t index = 0;
|
int32_t index = 0;
|
||||||
|
@ -1029,7 +1029,7 @@ static int32_t parseBoundColumnsClause(SInsertParseContext* pCxt, SVnodeModifOpS
|
||||||
// 1. [(tag1_name, ...)] ...
|
// 1. [(tag1_name, ...)] ...
|
||||||
// 2. VALUES ... | FILE ...
|
// 2. VALUES ... | FILE ...
|
||||||
// output pStmt->pSql: VALUES ... | FILE ...
|
// output pStmt->pSql: VALUES ... | FILE ...
|
||||||
static int32_t parseSchemaClauseBottom(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt,
|
static int32_t parseSchemaClauseBottom(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt,
|
||||||
STableDataBlocks** pDataBuf) {
|
STableDataBlocks** pDataBuf) {
|
||||||
int32_t code = parseUsingClauseBottom(pCxt, pStmt);
|
int32_t code = parseUsingClauseBottom(pCxt, pStmt);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
@ -1045,7 +1045,7 @@ static int32_t parseSchemaClauseBottom(SInsertParseContext* pCxt, SVnodeModifOpS
|
||||||
// output pStmt->pSql:
|
// output pStmt->pSql:
|
||||||
// 1. [(tag1_name, ...)] ...
|
// 1. [(tag1_name, ...)] ...
|
||||||
// 2. VALUES ... | FILE ...
|
// 2. VALUES ... | FILE ...
|
||||||
static int32_t parseSchemaClauseTop(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, SToken* pTbName) {
|
static int32_t parseSchemaClauseTop(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, SToken* pTbName) {
|
||||||
int32_t code = preParseTargetTableName(pCxt, pStmt, pTbName);
|
int32_t code = preParseTargetTableName(pCxt, pStmt, pTbName);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
// option: [(field1_name, ...)]
|
// option: [(field1_name, ...)]
|
||||||
|
@ -1337,7 +1337,7 @@ static int32_t allocateMemIfNeed(STableDataBlocks* pDataBlock, int32_t rowSize,
|
||||||
}
|
}
|
||||||
|
|
||||||
// pSql -> (field1_value, ...) [(field1_value2, ...) ...]
|
// pSql -> (field1_value, ...) [(field1_value2, ...) ...]
|
||||||
static int32_t parseValues(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, STableDataBlocks* pDataBuf,
|
static int32_t parseValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, STableDataBlocks* pDataBuf,
|
||||||
int32_t maxRows, int32_t* pNumOfRows, SToken* pToken) {
|
int32_t maxRows, int32_t* pNumOfRows, SToken* pToken) {
|
||||||
int32_t code = insInitRowBuilder(&pDataBuf->rowBuilder, pDataBuf->pTableMeta->sversion, &pDataBuf->boundColumnInfo);
|
int32_t code = insInitRowBuilder(&pDataBuf->rowBuilder, pDataBuf->pTableMeta->sversion, &pDataBuf->boundColumnInfo);
|
||||||
|
|
||||||
|
@ -1383,7 +1383,7 @@ static int32_t parseValues(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt,
|
||||||
}
|
}
|
||||||
|
|
||||||
// VALUES (field1_value, ...) [(field1_value2, ...) ...]
|
// VALUES (field1_value, ...) [(field1_value2, ...) ...]
|
||||||
static int32_t parseValuesClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, STableDataBlocks* pDataBuf,
|
static int32_t parseValuesClause(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, STableDataBlocks* pDataBuf,
|
||||||
SToken* pToken) {
|
SToken* pToken) {
|
||||||
int32_t maxNumOfRows = 0;
|
int32_t maxNumOfRows = 0;
|
||||||
int32_t numOfRows = 0;
|
int32_t numOfRows = 0;
|
||||||
|
@ -1403,7 +1403,7 @@ static int32_t parseValuesClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* p
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseCsvFile(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, STableDataBlocks* pDataBuf,
|
static int32_t parseCsvFile(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, STableDataBlocks* pDataBuf,
|
||||||
int maxRows, int32_t* pNumOfRows) {
|
int maxRows, int32_t* pNumOfRows) {
|
||||||
int32_t code = insInitRowBuilder(&pDataBuf->rowBuilder, pDataBuf->pTableMeta->sversion, &pDataBuf->boundColumnInfo);
|
int32_t code = insInitRowBuilder(&pDataBuf->rowBuilder, pDataBuf->pTableMeta->sversion, &pDataBuf->boundColumnInfo);
|
||||||
|
|
||||||
|
@ -1461,7 +1461,7 @@ static int32_t parseCsvFile(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt,
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseDataFromFileImpl(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, STableDataBlocks* pDataBuf) {
|
static int32_t parseDataFromFileImpl(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, STableDataBlocks* pDataBuf) {
|
||||||
int32_t maxNumOfRows = 0;
|
int32_t maxNumOfRows = 0;
|
||||||
int32_t numOfRows = 0;
|
int32_t numOfRows = 0;
|
||||||
int32_t code = allocateMemIfNeed(pDataBuf, insGetExtendedRowSize(pDataBuf), &maxNumOfRows);
|
int32_t code = allocateMemIfNeed(pDataBuf, insGetExtendedRowSize(pDataBuf), &maxNumOfRows);
|
||||||
|
@ -1485,7 +1485,7 @@ static int32_t parseDataFromFileImpl(SInsertParseContext* pCxt, SVnodeModifOpStm
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseDataFromFile(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, SToken* pFilePath,
|
static int32_t parseDataFromFile(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, SToken* pFilePath,
|
||||||
STableDataBlocks* pDataBuf) {
|
STableDataBlocks* pDataBuf) {
|
||||||
char filePathStr[TSDB_FILENAME_LEN] = {0};
|
char filePathStr[TSDB_FILENAME_LEN] = {0};
|
||||||
if (TK_NK_STRING == pFilePath->type) {
|
if (TK_NK_STRING == pFilePath->type) {
|
||||||
|
@ -1501,7 +1501,7 @@ static int32_t parseDataFromFile(SInsertParseContext* pCxt, SVnodeModifOpStmt* p
|
||||||
return parseDataFromFileImpl(pCxt, pStmt, pDataBuf);
|
return parseDataFromFileImpl(pCxt, pStmt, pDataBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseFileClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, STableDataBlocks* pDataBuf,
|
static int32_t parseFileClause(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, STableDataBlocks* pDataBuf,
|
||||||
SToken* pToken) {
|
SToken* pToken) {
|
||||||
NEXT_TOKEN(pStmt->pSql, *pToken);
|
NEXT_TOKEN(pStmt->pSql, *pToken);
|
||||||
if (0 == pToken->n || (TK_NK_STRING != pToken->type && TK_NK_ID != pToken->type)) {
|
if (0 == pToken->n || (TK_NK_STRING != pToken->type && TK_NK_ID != pToken->type)) {
|
||||||
|
@ -1511,7 +1511,7 @@ static int32_t parseFileClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pSt
|
||||||
}
|
}
|
||||||
|
|
||||||
// VALUES (field1_value, ...) [(field1_value2, ...) ...] | FILE csv_file_path
|
// VALUES (field1_value, ...) [(field1_value2, ...) ...] | FILE csv_file_path
|
||||||
static int32_t parseDataClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, STableDataBlocks* pDataBuf) {
|
static int32_t parseDataClause(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, STableDataBlocks* pDataBuf) {
|
||||||
SToken token;
|
SToken token;
|
||||||
NEXT_TOKEN(pStmt->pSql, token);
|
NEXT_TOKEN(pStmt->pSql, token);
|
||||||
switch (token.type) {
|
switch (token.type) {
|
||||||
|
@ -1528,7 +1528,7 @@ static int32_t parseDataClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pSt
|
||||||
// input pStmt->pSql:
|
// input pStmt->pSql:
|
||||||
// 1. [(tag1_name, ...)] ...
|
// 1. [(tag1_name, ...)] ...
|
||||||
// 2. VALUES ... | FILE ...
|
// 2. VALUES ... | FILE ...
|
||||||
static int32_t parseInsertTableClauseBottom(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseInsertTableClauseBottom(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
STableDataBlocks* pDataBuf = NULL;
|
STableDataBlocks* pDataBuf = NULL;
|
||||||
int32_t code = parseSchemaClauseBottom(pCxt, pStmt, &pDataBuf);
|
int32_t code = parseSchemaClauseBottom(pCxt, pStmt, &pDataBuf);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
@ -1537,7 +1537,7 @@ static int32_t parseInsertTableClauseBottom(SInsertParseContext* pCxt, SVnodeMod
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void resetEnvPreTable(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static void resetEnvPreTable(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
destroyBoundColumnInfo(&pCxt->tags);
|
destroyBoundColumnInfo(&pCxt->tags);
|
||||||
taosMemoryFreeClear(pStmt->pTableMeta);
|
taosMemoryFreeClear(pStmt->pTableMeta);
|
||||||
tdDestroySVCreateTbReq(&pStmt->createTblReq);
|
tdDestroySVCreateTbReq(&pStmt->createTblReq);
|
||||||
|
@ -1549,7 +1549,7 @@ static void resetEnvPreTable(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt
|
||||||
}
|
}
|
||||||
|
|
||||||
// input pStmt->pSql: [(field1_name, ...)] [ USING ... ] VALUES ... | FILE ...
|
// input pStmt->pSql: [(field1_name, ...)] [ USING ... ] VALUES ... | FILE ...
|
||||||
static int32_t parseInsertTableClause(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, SToken* pTbName) {
|
static int32_t parseInsertTableClause(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, SToken* pTbName) {
|
||||||
resetEnvPreTable(pCxt, pStmt);
|
resetEnvPreTable(pCxt, pStmt);
|
||||||
int32_t code = parseSchemaClauseTop(pCxt, pStmt, pTbName);
|
int32_t code = parseSchemaClauseTop(pCxt, pStmt, pTbName);
|
||||||
if (TSDB_CODE_SUCCESS == code && !pCxt->missCache) {
|
if (TSDB_CODE_SUCCESS == code && !pCxt->missCache) {
|
||||||
|
@ -1558,7 +1558,7 @@ static int32_t parseInsertTableClause(SInsertParseContext* pCxt, SVnodeModifOpSt
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t checkTableClauseFirstToken(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, SToken* pTbName,
|
static int32_t checkTableClauseFirstToken(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, SToken* pTbName,
|
||||||
bool* pHasData) {
|
bool* pHasData) {
|
||||||
// no data in the sql string anymore.
|
// no data in the sql string anymore.
|
||||||
if (0 == pTbName->n) {
|
if (0 == pTbName->n) {
|
||||||
|
@ -1597,7 +1597,7 @@ static int32_t checkTableClauseFirstToken(SInsertParseContext* pCxt, SVnodeModif
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t setStmtInfo(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t setStmtInfo(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
SParsedDataColInfo* tags = taosMemoryMalloc(sizeof(pCxt->tags));
|
SParsedDataColInfo* tags = taosMemoryMalloc(sizeof(pCxt->tags));
|
||||||
if (NULL == tags) {
|
if (NULL == tags) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
@ -1615,7 +1615,7 @@ static int32_t setStmtInfo(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt)
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseInsertBodyBottom(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseInsertBodyBottom(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
if (TSDB_QUERY_HAS_TYPE(pStmt->insertType, TSDB_QUERY_TYPE_STMT_INSERT)) {
|
if (TSDB_QUERY_HAS_TYPE(pStmt->insertType, TSDB_QUERY_TYPE_STMT_INSERT)) {
|
||||||
return setStmtInfo(pCxt, pStmt);
|
return setStmtInfo(pCxt, pStmt);
|
||||||
}
|
}
|
||||||
|
@ -1636,7 +1636,7 @@ static int32_t parseInsertBodyBottom(SInsertParseContext* pCxt, SVnodeModifOpStm
|
||||||
// [(field1_name, ...)]
|
// [(field1_name, ...)]
|
||||||
// VALUES (field1_value, ...) [(field1_value2, ...) ...] | FILE csv_file_path
|
// VALUES (field1_value, ...) [(field1_value2, ...) ...] | FILE csv_file_path
|
||||||
// [...];
|
// [...];
|
||||||
static int32_t parseInsertBody(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseInsertBody(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
SToken token;
|
SToken token;
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
bool hasData = true;
|
bool hasData = true;
|
||||||
|
@ -1659,7 +1659,7 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt, SVnodeModifOpStmt* pSt
|
||||||
static void destroySubTableHashElem(void* p) { taosMemoryFree(*(STableMeta**)p); }
|
static void destroySubTableHashElem(void* p) { taosMemoryFree(*(STableMeta**)p); }
|
||||||
|
|
||||||
static int32_t createVnodeModifOpStmt(SInsertParseContext* pCxt, bool reentry, SNode** pOutput) {
|
static int32_t createVnodeModifOpStmt(SInsertParseContext* pCxt, bool reentry, SNode** pOutput) {
|
||||||
SVnodeModifOpStmt* pStmt = (SVnodeModifOpStmt*)nodesMakeNode(QUERY_NODE_VNODE_MODIF_STMT);
|
SVnodeModifyOpStmt* pStmt = (SVnodeModifyOpStmt*)nodesMakeNode(QUERY_NODE_VNODE_MODIFY_STMT);
|
||||||
if (NULL == pStmt) {
|
if (NULL == pStmt) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
@ -1736,7 +1736,7 @@ static int32_t getTableMetaFromMetaData(const SArray* pTables, STableMeta** pMet
|
||||||
return pRes->code;
|
return pRes->code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t getTableVgroupFromMetaData(const SArray* pTables, SVnodeModifOpStmt* pStmt, bool isStb) {
|
static int32_t getTableVgroupFromMetaData(const SArray* pTables, SVnodeModifyOpStmt* pStmt, bool isStb) {
|
||||||
if (1 != taosArrayGetSize(pTables)) {
|
if (1 != taosArrayGetSize(pTables)) {
|
||||||
return TSDB_CODE_FAILED;
|
return TSDB_CODE_FAILED;
|
||||||
}
|
}
|
||||||
|
@ -1755,7 +1755,7 @@ static int32_t getTableVgroupFromMetaData(const SArray* pTables, SVnodeModifOpSt
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t getTableSchemaFromMetaData(SInsertParseContext* pCxt, const SMetaData* pMetaData,
|
static int32_t getTableSchemaFromMetaData(SInsertParseContext* pCxt, const SMetaData* pMetaData,
|
||||||
SVnodeModifOpStmt* pStmt, bool isStb) {
|
SVnodeModifyOpStmt* pStmt, bool isStb) {
|
||||||
int32_t code = checkAuthFromMetaData(pMetaData->pUser);
|
int32_t code = checkAuthFromMetaData(pMetaData->pUser);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = getTableMetaFromMetaData(pMetaData->pTableMeta, &pStmt->pTableMeta);
|
code = getTableMetaFromMetaData(pMetaData->pTableMeta, &pStmt->pTableMeta);
|
||||||
|
@ -1788,7 +1788,7 @@ static void clearCatalogReq(SCatalogReq* pCatalogReq) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t setVnodeModifOpStmt(SInsertParseContext* pCxt, SCatalogReq* pCatalogReq, const SMetaData* pMetaData,
|
static int32_t setVnodeModifOpStmt(SInsertParseContext* pCxt, SCatalogReq* pCatalogReq, const SMetaData* pMetaData,
|
||||||
SVnodeModifOpStmt* pStmt) {
|
SVnodeModifyOpStmt* pStmt) {
|
||||||
clearCatalogReq(pCatalogReq);
|
clearCatalogReq(pCatalogReq);
|
||||||
|
|
||||||
if (pStmt->usingTableProcessing) {
|
if (pStmt->usingTableProcessing) {
|
||||||
|
@ -1802,7 +1802,7 @@ static int32_t resetVnodeModifOpStmt(SInsertParseContext* pCxt, SQuery* pQuery)
|
||||||
|
|
||||||
int32_t code = createVnodeModifOpStmt(pCxt, true, &pQuery->pRoot);
|
int32_t code = createVnodeModifOpStmt(pCxt, true, &pQuery->pRoot);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
SVnodeModifOpStmt* pStmt = (SVnodeModifOpStmt*)pQuery->pRoot;
|
SVnodeModifyOpStmt* pStmt = (SVnodeModifyOpStmt*)pQuery->pRoot;
|
||||||
|
|
||||||
(*pCxt->pComCxt->pStmtCb->getExecInfoFn)(pCxt->pComCxt->pStmtCb->pStmt, &pStmt->pVgroupsHashObj,
|
(*pCxt->pComCxt->pStmtCb->getExecInfoFn)(pCxt->pComCxt->pStmtCb->pStmt, &pStmt->pVgroupsHashObj,
|
||||||
&pStmt->pTableBlockHashObj);
|
&pStmt->pTableBlockHashObj);
|
||||||
|
@ -1831,7 +1831,7 @@ static int32_t initInsertQuery(SInsertParseContext* pCxt, SCatalogReq* pCatalogR
|
||||||
return resetVnodeModifOpStmt(pCxt, *pQuery);
|
return resetVnodeModifOpStmt(pCxt, *pQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
SVnodeModifOpStmt* pStmt = (SVnodeModifOpStmt*)(*pQuery)->pRoot;
|
SVnodeModifyOpStmt* pStmt = (SVnodeModifyOpStmt*)(*pQuery)->pRoot;
|
||||||
|
|
||||||
if (!pStmt->fileProcessing) {
|
if (!pStmt->fileProcessing) {
|
||||||
return setVnodeModifOpStmt(pCxt, pCatalogReq, pMetaData, pStmt);
|
return setVnodeModifOpStmt(pCxt, pCatalogReq, pMetaData, pStmt);
|
||||||
|
@ -1841,7 +1841,7 @@ static int32_t initInsertQuery(SInsertParseContext* pCxt, SCatalogReq* pCatalogR
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t setRefreshMate(SQuery* pQuery) {
|
static int32_t setRefreshMate(SQuery* pQuery) {
|
||||||
SVnodeModifOpStmt* pStmt = (SVnodeModifOpStmt*)pQuery->pRoot;
|
SVnodeModifyOpStmt* pStmt = (SVnodeModifyOpStmt*)pQuery->pRoot;
|
||||||
|
|
||||||
if (taosHashGetSize(pStmt->pTableNameHashObj) > 0) {
|
if (taosHashGetSize(pStmt->pTableNameHashObj) > 0) {
|
||||||
taosArrayDestroy(pQuery->pTableList);
|
taosArrayDestroy(pQuery->pTableList);
|
||||||
|
@ -1872,7 +1872,7 @@ static int32_t setRefreshMate(SQuery* pQuery) {
|
||||||
// [(field1_name, ...)]
|
// [(field1_name, ...)]
|
||||||
// VALUES (field1_value, ...) [(field1_value2, ...) ...] | FILE csv_file_path
|
// VALUES (field1_value, ...) [(field1_value2, ...) ...] | FILE csv_file_path
|
||||||
// [...];
|
// [...];
|
||||||
static int32_t parseInsertSqlFromStart(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseInsertSqlFromStart(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
int32_t code = skipInsertInto(&pStmt->pSql, &pCxt->msg);
|
int32_t code = skipInsertInto(&pStmt->pSql, &pCxt->msg);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = parseInsertBody(pCxt, pStmt);
|
code = parseInsertBody(pCxt, pStmt);
|
||||||
|
@ -1880,7 +1880,7 @@ static int32_t parseInsertSqlFromStart(SInsertParseContext* pCxt, SVnodeModifOpS
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseInsertSqlFromCsv(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseInsertSqlFromCsv(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
STableDataBlocks* pDataBuf = NULL;
|
STableDataBlocks* pDataBuf = NULL;
|
||||||
int32_t code = getTableDataBlocks(pCxt, pStmt, &pDataBuf);
|
int32_t code = getTableDataBlocks(pCxt, pStmt, &pDataBuf);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
@ -1898,7 +1898,7 @@ static int32_t parseInsertSqlFromCsv(SInsertParseContext* pCxt, SVnodeModifOpStm
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseInsertSqlFromTable(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseInsertSqlFromTable(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
int32_t code = parseInsertTableClauseBottom(pCxt, pStmt);
|
int32_t code = parseInsertTableClauseBottom(pCxt, pStmt);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = parseInsertBody(pCxt, pStmt);
|
code = parseInsertBody(pCxt, pStmt);
|
||||||
|
@ -1906,7 +1906,7 @@ static int32_t parseInsertSqlFromTable(SInsertParseContext* pCxt, SVnodeModifOpS
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseInsertSqlImpl(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt) {
|
static int32_t parseInsertSqlImpl(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) {
|
||||||
if (pStmt->pSql == pCxt->pComCxt->pSql || NULL != pCxt->pComCxt->pStmtCb) {
|
if (pStmt->pSql == pCxt->pComCxt->pSql || NULL != pCxt->pComCxt->pStmtCb) {
|
||||||
return parseInsertSqlFromStart(pCxt, pStmt);
|
return parseInsertSqlFromStart(pCxt, pStmt);
|
||||||
}
|
}
|
||||||
|
@ -1958,7 +1958,7 @@ static int32_t buildInsertUserAuthReq(const char* pUser, SName* pName, SArray**
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t buildInsertCatalogReq(SInsertParseContext* pCxt, SVnodeModifOpStmt* pStmt, SCatalogReq* pCatalogReq) {
|
static int32_t buildInsertCatalogReq(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, SCatalogReq* pCatalogReq) {
|
||||||
int32_t code = buildInsertUserAuthReq(pCxt->pComCxt->pUser, &pStmt->targetTableName, &pCatalogReq->pUser);
|
int32_t code = buildInsertUserAuthReq(pCxt->pComCxt->pUser, &pStmt->targetTableName, &pCatalogReq->pUser);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
if (0 == pStmt->usingTableName.type) {
|
if (0 == pStmt->usingTableName.type) {
|
||||||
|
@ -1974,7 +1974,7 @@ static int32_t buildInsertCatalogReq(SInsertParseContext* pCxt, SVnodeModifOpStm
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t setNextStageInfo(SInsertParseContext* pCxt, SQuery* pQuery, SCatalogReq* pCatalogReq) {
|
static int32_t setNextStageInfo(SInsertParseContext* pCxt, SQuery* pQuery, SCatalogReq* pCatalogReq) {
|
||||||
SVnodeModifOpStmt* pStmt = (SVnodeModifOpStmt*)pQuery->pRoot;
|
SVnodeModifyOpStmt* pStmt = (SVnodeModifyOpStmt*)pQuery->pRoot;
|
||||||
if (pCxt->missCache) {
|
if (pCxt->missCache) {
|
||||||
parserDebug("0x%" PRIx64 " %d rows of %d tables have been inserted before cache miss", pCxt->pComCxt->requestId,
|
parserDebug("0x%" PRIx64 " %d rows of %d tables have been inserted before cache miss", pCxt->pComCxt->requestId,
|
||||||
pStmt->totalRowsNum, pStmt->totalTbNum);
|
pStmt->totalRowsNum, pStmt->totalTbNum);
|
||||||
|
@ -1999,7 +1999,7 @@ int32_t parseInsertSql(SParseContext* pCxt, SQuery** pQuery, SCatalogReq* pCatal
|
||||||
|
|
||||||
int32_t code = initInsertQuery(&context, pCatalogReq, pMetaData, pQuery);
|
int32_t code = initInsertQuery(&context, pCatalogReq, pMetaData, pQuery);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = parseInsertSqlImpl(&context, (SVnodeModifOpStmt*)(*pQuery)->pRoot);
|
code = parseInsertSqlImpl(&context, (SVnodeModifyOpStmt*)(*pQuery)->pRoot);
|
||||||
}
|
}
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = setNextStageInfo(&context, *pQuery, pCatalogReq);
|
code = setNextStageInfo(&context, *pQuery, pCatalogReq);
|
||||||
|
|
|
@ -37,7 +37,7 @@ int32_t qBuildStmtOutput(SQuery* pQuery, SHashObj* pVgHash, SHashObj* pBlockHash
|
||||||
code = insMergeTableDataBlocks(pBlockHash, &pVgDataBlocks);
|
code = insMergeTableDataBlocks(pBlockHash, &pVgDataBlocks);
|
||||||
}
|
}
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = insBuildOutput(pVgHash, pVgDataBlocks, &((SVnodeModifOpStmt*)pQuery->pRoot)->pDataBlocks);
|
code = insBuildOutput(pVgHash, pVgDataBlocks, &((SVnodeModifyOpStmt*)pQuery->pRoot)->pDataBlocks);
|
||||||
}
|
}
|
||||||
insDestroyBlockArrayList(pVgDataBlocks);
|
insDestroyBlockArrayList(pVgDataBlocks);
|
||||||
return code;
|
return code;
|
||||||
|
@ -47,7 +47,7 @@ int32_t qBindStmtTagsValue(void* pBlock, void* boundTags, int64_t suid, const ch
|
||||||
TAOS_MULTI_BIND* bind, char* msgBuf, int32_t msgBufLen) {
|
TAOS_MULTI_BIND* bind, char* msgBuf, int32_t msgBufLen) {
|
||||||
STableDataBlocks* pDataBlock = (STableDataBlocks*)pBlock;
|
STableDataBlocks* pDataBlock = (STableDataBlocks*)pBlock;
|
||||||
SMsgBuf pBuf = {.buf = msgBuf, .len = msgBufLen};
|
SMsgBuf pBuf = {.buf = msgBuf, .len = msgBufLen};
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
SParsedDataColInfo* tags = (SParsedDataColInfo*)boundTags;
|
SParsedDataColInfo* tags = (SParsedDataColInfo*)boundTags;
|
||||||
if (NULL == tags) {
|
if (NULL == tags) {
|
||||||
return TSDB_CODE_APP_ERROR;
|
return TSDB_CODE_APP_ERROR;
|
||||||
|
@ -137,7 +137,8 @@ int32_t qBindStmtTagsValue(void* pBlock, void* boundTags, int64_t suid, const ch
|
||||||
}
|
}
|
||||||
|
|
||||||
SVCreateTbReq tbReq = {0};
|
SVCreateTbReq tbReq = {0};
|
||||||
insBuildCreateTbReq(&tbReq, tName, pTag, suid, sTableName, tagName, pDataBlock->pTableMeta->tableInfo.numOfTags, TSDB_DEFAULT_TABLE_TTL);
|
insBuildCreateTbReq(&tbReq, tName, pTag, suid, sTableName, tagName, pDataBlock->pTableMeta->tableInfo.numOfTags,
|
||||||
|
TSDB_DEFAULT_TABLE_TTL);
|
||||||
code = insBuildCreateTbMsg(pDataBlock, &tbReq);
|
code = insBuildCreateTbMsg(pDataBlock, &tbReq);
|
||||||
tdDestroySVCreateTbReq(&tbReq);
|
tdDestroySVCreateTbReq(&tbReq);
|
||||||
|
|
||||||
|
|
|
@ -352,7 +352,7 @@ static int32_t getTableMetaImpl(STranslateContext* pCxt, const SName* pName, STa
|
||||||
code = catalogGetTableMeta(pParCxt->pCatalog, &conn, pName, pMeta);
|
code = catalogGetTableMeta(pParCxt->pCatalog, &conn, pName, pMeta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (TSDB_CODE_SUCCESS != code) {
|
if (TSDB_CODE_SUCCESS != code && TSDB_CODE_TSC_INVALID_TABLE_NAME != code) {
|
||||||
parserError("0x%" PRIx64 " catalogGetTableMeta error, code:%s, dbName:%s, tbName:%s", pCxt->pParseCxt->requestId,
|
parserError("0x%" PRIx64 " catalogGetTableMeta error, code:%s, dbName:%s, tbName:%s", pCxt->pParseCxt->requestId,
|
||||||
tstrerror(code), pName->dbname, pName->tname);
|
tstrerror(code), pName->dbname, pName->tname);
|
||||||
}
|
}
|
||||||
|
@ -5110,7 +5110,7 @@ static int32_t translateAlterUser(STranslateContext* pCxt, SAlterUserStmt* pStmt
|
||||||
|
|
||||||
static int32_t translateDropUser(STranslateContext* pCxt, SDropUserStmt* pStmt) {
|
static int32_t translateDropUser(STranslateContext* pCxt, SDropUserStmt* pStmt) {
|
||||||
SDropUserReq dropReq = {0};
|
SDropUserReq dropReq = {0};
|
||||||
strcpy(dropReq.user, pStmt->useName);
|
strcpy(dropReq.user, pStmt->userName);
|
||||||
|
|
||||||
return buildCmdMsg(pCxt, TDMT_MND_DROP_USER, (FSerializeFunc)tSerializeSDropUserReq, &dropReq);
|
return buildCmdMsg(pCxt, TDMT_MND_DROP_USER, (FSerializeFunc)tSerializeSDropUserReq, &dropReq);
|
||||||
}
|
}
|
||||||
|
@ -6645,7 +6645,7 @@ static void destroyCreateTbReqBatch(void* data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t rewriteToVnodeModifyOpStmt(SQuery* pQuery, SArray* pBufArray) {
|
int32_t rewriteToVnodeModifyOpStmt(SQuery* pQuery, SArray* pBufArray) {
|
||||||
SVnodeModifOpStmt* pNewStmt = (SVnodeModifOpStmt*)nodesMakeNode(QUERY_NODE_VNODE_MODIF_STMT);
|
SVnodeModifyOpStmt* pNewStmt = (SVnodeModifyOpStmt*)nodesMakeNode(QUERY_NODE_VNODE_MODIFY_STMT);
|
||||||
if (pNewStmt == NULL) {
|
if (pNewStmt == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
@ -7734,9 +7734,9 @@ static int32_t setQuery(STranslateContext* pCxt, SQuery* pQuery) {
|
||||||
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
||||||
pQuery->msgType = TDMT_VND_SUBMIT;
|
pQuery->msgType = TDMT_VND_SUBMIT;
|
||||||
break;
|
break;
|
||||||
case QUERY_NODE_VNODE_MODIF_STMT:
|
case QUERY_NODE_VNODE_MODIFY_STMT:
|
||||||
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
pQuery->execMode = QUERY_EXEC_MODE_SCHEDULE;
|
||||||
pQuery->msgType = toMsgType(((SVnodeModifOpStmt*)pQuery->pRoot)->sqlNodeType);
|
pQuery->msgType = toMsgType(((SVnodeModifyOpStmt*)pQuery->pRoot)->sqlNodeType);
|
||||||
break;
|
break;
|
||||||
case QUERY_NODE_DESCRIBE_STMT:
|
case QUERY_NODE_DESCRIBE_STMT:
|
||||||
case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
|
case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
|
||||||
|
|
|
@ -504,8 +504,8 @@ TEST_F(ParserInitialATest, alterTable) {
|
||||||
};
|
};
|
||||||
|
|
||||||
setCheckDdlFunc([&](const SQuery* pQuery, ParserStage stage) {
|
setCheckDdlFunc([&](const SQuery* pQuery, ParserStage stage) {
|
||||||
ASSERT_EQ(nodeType(pQuery->pRoot), QUERY_NODE_VNODE_MODIF_STMT);
|
ASSERT_EQ(nodeType(pQuery->pRoot), QUERY_NODE_VNODE_MODIFY_STMT);
|
||||||
SVnodeModifOpStmt* pStmt = (SVnodeModifOpStmt*)pQuery->pRoot;
|
SVnodeModifyOpStmt* pStmt = (SVnodeModifyOpStmt*)pQuery->pRoot;
|
||||||
|
|
||||||
ASSERT_EQ(pStmt->sqlNodeType, QUERY_NODE_ALTER_TABLE_STMT);
|
ASSERT_EQ(pStmt->sqlNodeType, QUERY_NODE_ALTER_TABLE_STMT);
|
||||||
ASSERT_NE(pStmt->pDataBlocks, nullptr);
|
ASSERT_NE(pStmt->pDataBlocks, nullptr);
|
||||||
|
|
|
@ -1396,7 +1396,7 @@ static int32_t getMsgType(ENodeType sqlType) {
|
||||||
return TDMT_VND_SUBMIT;
|
return TDMT_VND_SUBMIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t createVnodeModifLogicNode(SLogicPlanContext* pCxt, SVnodeModifOpStmt* pStmt, SLogicNode** pLogicNode) {
|
static int32_t createVnodeModifLogicNode(SLogicPlanContext* pCxt, SVnodeModifyOpStmt* pStmt, SLogicNode** pLogicNode) {
|
||||||
SVnodeModifyLogicNode* pModif = (SVnodeModifyLogicNode*)nodesMakeNode(QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY);
|
SVnodeModifyLogicNode* pModif = (SVnodeModifyLogicNode*)nodesMakeNode(QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY);
|
||||||
if (NULL == pModif) {
|
if (NULL == pModif) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
@ -1580,8 +1580,8 @@ static int32_t createQueryLogicNode(SLogicPlanContext* pCxt, SNode* pStmt, SLogi
|
||||||
switch (nodeType(pStmt)) {
|
switch (nodeType(pStmt)) {
|
||||||
case QUERY_NODE_SELECT_STMT:
|
case QUERY_NODE_SELECT_STMT:
|
||||||
return createSelectLogicNode(pCxt, (SSelectStmt*)pStmt, pLogicNode);
|
return createSelectLogicNode(pCxt, (SSelectStmt*)pStmt, pLogicNode);
|
||||||
case QUERY_NODE_VNODE_MODIF_STMT:
|
case QUERY_NODE_VNODE_MODIFY_STMT:
|
||||||
return createVnodeModifLogicNode(pCxt, (SVnodeModifOpStmt*)pStmt, pLogicNode);
|
return createVnodeModifLogicNode(pCxt, (SVnodeModifyOpStmt*)pStmt, pLogicNode);
|
||||||
case QUERY_NODE_EXPLAIN_STMT:
|
case QUERY_NODE_EXPLAIN_STMT:
|
||||||
return createQueryLogicNode(pCxt, ((SExplainStmt*)pStmt)->pQuery, pLogicNode);
|
return createQueryLogicNode(pCxt, ((SExplainStmt*)pStmt)->pQuery, pLogicNode);
|
||||||
case QUERY_NODE_SET_OPERATOR:
|
case QUERY_NODE_SET_OPERATOR:
|
||||||
|
|
Loading…
Reference in New Issue