fix TD-33417

This commit is contained in:
pengrongkun94@qq.com 2025-01-02 20:07:58 +08:00
parent a898e90bf4
commit 5dcb75d43c
3 changed files with 153 additions and 64 deletions

View File

@ -371,11 +371,11 @@ TEST(stmt2Case, insert_stb_get_fields_Test) {
// not support case // not support case
printf("not support case \n"); printf("not support case \n");
// case 5 : add in main TD-33353 // case 1 : add in main TD-33353
{ {
const char* sql = "insert into db.stb(t1,t2,ts,b,tbname) values(1,?,?,'abc',?)"; const char* sql = "insert into db.stb(t1,t2,ts,b,tbname) values(1,?,?,'abc',?)";
printf("case 2 : %s\n", sql); printf("case 1dif : %s\n", sql);
getFieldsError(taos, sql, TSDB_CODE_TSC_INVALID_OPERATION); getFieldsError(taos, sql, TSDB_CODE_PAR_INVALID_COLUMNS_NUM);
} }
// case 2 : no pk // case 2 : no pk
@ -431,7 +431,7 @@ TEST(stmt2Case, insert_stb_get_fields_Test) {
{ {
const char* sql = "insert into db.stb(t1,t2,ts,b,tbname) values(*,*,*,*,*)"; const char* sql = "insert into db.stb(t1,t2,ts,b,tbname) values(*,*,*,*,*)";
printf("case 9 : %s\n", sql); printf("case 9 : %s\n", sql);
getFieldsError(taos, sql, TSDB_CODE_TSC_INVALID_OPERATION); getFieldsError(taos, sql, TSDB_CODE_PAR_INVALID_COLUMNS_NUM);
} }
taos_close(taos); taos_close(taos);
@ -830,57 +830,108 @@ TEST(stmt2Case, stmt2_stb_insert) {
taos_close(taos); taos_close(taos);
} }
// TEST(stmt2Case, stmt2_insert_all_types) { // TD-33417
// TAOS* taos = taos_connect("localhost", "root", "taosdata", "", 0); TEST(stmt2Case, stmt2_insert_non_statndard) {
// ASSERT_NE(taos, nullptr); TAOS* taos = taos_connect("localhost", "root", "taosdata", "", 0);
// do_query(taos, "drop database if exists example_all_type_stmt1"); ASSERT_NE(taos, nullptr);
// do_query(taos, "create database example_all_type_stmt1"); do_query(taos, "drop database if exists example_all_type_stmt1");
// do_query(taos, do_query(taos, "create database example_all_type_stmt1");
// "create table example_all_type_stmt1.stb (ts timestamp, int_col int,long_col bigint,double_col " do_query(taos,
// "double,bool_col bool,binary_col binary(20),nchar_col nchar(20),varbinary_col varbinary(20),geometry_col " "create table example_all_type_stmt1.stb1 (ts timestamp, int_col int,long_col bigint,double_col "
// "geometry(200)) tags(int_tag int,long_tag bigint,double_tag double,bool_tag bool,binary_tag " "double,bool_col bool,binary_col binary(20),nchar_col nchar(20),varbinary_col varbinary(20),geometry_col "
// "binary(20),nchar_tag nchar(20),varbinary_tag varbinary(20),geometry_tag geometry(200));"); "geometry(200)) tags(int_tag int,long_tag bigint,double_tag double,bool_tag bool,binary_tag "
"binary(20),nchar_tag nchar(20),varbinary_tag varbinary(20),geometry_tag geometry(200));");
// TAOS_STMT2_OPTION option = {0, false, false, NULL, NULL}; TAOS_STMT2_OPTION option = {0, false, false, NULL, NULL};
// TAOS_STMT2* stmt = taos_stmt2_init(taos, &option); // less cols and tags
// ASSERT_NE(stmt, nullptr); {
TAOS_STMT2* stmt = taos_stmt2_init(taos, &option);
ASSERT_NE(stmt, nullptr);
const char* sql = "INSERT INTO example_all_type_stmt1.stb1 (ts,int_tag,tbname) VALUES (?,?,?)";
int code = taos_stmt2_prepare(stmt, sql, 0);
ASSERT_EQ(code, 0);
// const char* sql = int t64_len[2] = {sizeof(int64_t), sizeof(int64_t)};
// "INSERT INTO `example_all_type_stmt1`.`stb1` " int tag_i = 0;
// "(ts,int_col,long_col,double_col,bool_col,binary_col,nchar_col,varbinary_col,geometry_col,int_tag,long_tag," int tag_l = sizeof(int);
// "double_tag,bool_tag,binary_tag,nchar_tag,varbinary_tag ,geometry_tag,tbname) VALUES " int64_t ts[2] = {1591060628000, 1591060628100};
// "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; for (int i = 0; i < 3; i++) {
// int code = taos_stmt2_prepare(stmt, sql, 0); ts[0] += 1000;
// ASSERT_EQ(code, 0); ts[1] += 1000;
// int t64_len[1] = {sizeof(int64_t)}; TAOS_STMT2_BIND tags1 = {TSDB_DATA_TYPE_INT, &tag_i, &tag_l, NULL, 1};
// int b_len[1] = {3}; TAOS_STMT2_BIND tags2 = {TSDB_DATA_TYPE_INT, &tag_i, &tag_l, NULL, 1};
// int64_t ts = 1591060628000; TAOS_STMT2_BIND params1 = {TSDB_DATA_TYPE_TIMESTAMP, &ts, &t64_len[0], NULL, 2};
// TAOS_STMT2_BIND params[18] = {{TSDB_DATA_TYPE_TIMESTAMP, &ts, t64_len, NULL, 1}}; TAOS_STMT2_BIND params2 = {TSDB_DATA_TYPE_TIMESTAMP, &ts, &t64_len[0], NULL, 2};
// TAOS_STMT2_BIND* paramv = &params[0];
// char* tbname = "tb1";
// TAOS_STMT2_BINDV bindv = {1, &tbname, NULL, &paramv};
// code = taos_stmt2_bind_param(stmt, &bindv, -1);
// ASSERT_EQ(code, 0);
// taos_stmt2_exec(stmt, NULL); TAOS_STMT2_BIND* tagv[2] = {&tags1, &tags2};
// ASSERT_EQ(code, 0); TAOS_STMT2_BIND* paramv[2] = {&params1, &params2};
char* tbname[2] = {"tb1", "tb2"};
TAOS_STMT2_BINDV bindv = {2, &tbname[0], &tagv[0], &paramv[0]};
code = taos_stmt2_bind_param(stmt, &bindv, -1);
ASSERT_EQ(code, 0);
// TAOS_RES* pRes = taos_stmt2_result(stmt); int affected_rows;
// ASSERT_NE(pRes, nullptr); taos_stmt2_exec(stmt, &affected_rows);
ASSERT_EQ(code, 0);
}
// int getRecordCounts = 0; checkRows(taos, "select * from example_all_type_stmt1.tb1", 6);
// TAOS_ROW row; checkRows(taos, "select * from example_all_type_stmt1.tb2", 6);
// while ((row = taos_fetch_row(pRes))) { checkRows(taos, "select * from example_all_type_stmt1.stb1", 12);
// getRecordCounts++; taos_stmt2_close(stmt);
// } }
// ASSERT_EQ(getRecordCounts, 1);
// taos_free_result(pRes);
// taos_stmt2_close(stmt); // disorder cols and tags
// taos_close(taos); {
// } TAOS_STMT2* stmt = taos_stmt2_init(taos, &option);
ASSERT_NE(stmt, nullptr);
const char* sql =
"INSERT INTO example_all_type_stmt1.stb1 (binary_tag,int_col,tbname,ts,int_tag) VALUES (?,?,?,?,?)";
int code = taos_stmt2_prepare(stmt, sql, 0);
ASSERT_EQ(code, 0);
int tag_i = 0;
int tag_l = sizeof(int);
int tag_bl = 3;
int64_t ts[2] = {1591060628000, 1591060628100};
int t64_len[2] = {sizeof(int64_t), sizeof(int64_t)};
int coli[2] = {1, 2};
int ilen[2] = {sizeof(int), sizeof(int)};
for (int i = 0; i < 3; i++) {
ts[0] += 1000;
ts[1] += 1000;
TAOS_STMT2_BIND tags1[2] = {{TSDB_DATA_TYPE_BINARY, (void*)"abc", &tag_bl, NULL, 1},
{TSDB_DATA_TYPE_INT, &tag_i, &tag_l, NULL, 1}};
TAOS_STMT2_BIND tags2[2] = {{TSDB_DATA_TYPE_BINARY, (void*)"abc", &tag_bl, NULL, 1},
{TSDB_DATA_TYPE_INT, &tag_i, &tag_l, NULL, 1}};
TAOS_STMT2_BIND params1[2] = {{TSDB_DATA_TYPE_INT, &coli, &ilen[0], NULL, 2},
{TSDB_DATA_TYPE_TIMESTAMP, &ts, &t64_len[0], NULL, 2}};
TAOS_STMT2_BIND params2[2] = {{TSDB_DATA_TYPE_INT, &coli, &ilen[0], NULL, 2},
{TSDB_DATA_TYPE_TIMESTAMP, &ts, &t64_len[0], NULL, 2}};
TAOS_STMT2_BIND* tagv[2] = {&tags1[0], &tags2[0]};
TAOS_STMT2_BIND* paramv[2] = {&params1[0], &params2[0]};
char* tbname[2] = {"tb3", "tb4"};
TAOS_STMT2_BINDV bindv = {2, &tbname[0], &tagv[0], &paramv[0]};
code = taos_stmt2_bind_param(stmt, &bindv, -1);
ASSERT_EQ(code, 0);
int affected_rows;
taos_stmt2_exec(stmt, &affected_rows);
ASSERT_EQ(code, 0);
}
checkRows(taos, "select * from example_all_type_stmt1.tb3", 6);
checkRows(taos, "select * from example_all_type_stmt1.tb4", 6);
checkRows(taos, "select * from example_all_type_stmt1.stb1", 24);
taos_stmt2_close(stmt);
}
taos_close(taos);
}
TEST(stmt2Case, stmt2_query) { TEST(stmt2Case, stmt2_query) {
TAOS* taos = taos_connect("localhost", "root", "taosdata", "", 0); TAOS* taos = taos_connect("localhost", "root", "taosdata", "", 0);

View File

@ -50,6 +50,7 @@ int32_t insInitColValues(STableMeta *pTableMeta, SArray *aColValues);
void insCheckTableDataOrder(STableDataCxt *pTableCxt, SRowKey *rowKey); void insCheckTableDataOrder(STableDataCxt *pTableCxt, SRowKey *rowKey);
int32_t insGetTableDataCxt(SHashObj *pHash, void *id, int32_t idLen, STableMeta *pTableMeta, int32_t insGetTableDataCxt(SHashObj *pHash, void *id, int32_t idLen, STableMeta *pTableMeta,
SVCreateTbReq **pCreateTbReq, STableDataCxt **pTableCxt, bool colMode, bool ignoreColVals); SVCreateTbReq **pCreateTbReq, STableDataCxt **pTableCxt, bool colMode, bool ignoreColVals);
int32_t initTableColSubmitDataWithBoundInfo(STableDataCxt *pTableCxt, SBoundColInfo pBoundColsInfo);
int32_t initTableColSubmitData(STableDataCxt *pTableCxt); int32_t initTableColSubmitData(STableDataCxt *pTableCxt);
int32_t insMergeTableDataCxt(SHashObj *pTableHash, SArray **pVgDataBlocks, bool isRebuild); int32_t insMergeTableDataCxt(SHashObj *pTableHash, SArray **pVgDataBlocks, bool isRebuild);
//int32_t insMergeStmtTableDataCxt(STableDataCxt* pTableCxt, SArray* pTableList, SArray** pVgDataBlocks, bool isRebuild, int32_t tbNum); //int32_t insMergeStmtTableDataCxt(STableDataCxt* pTableCxt, SArray* pTableList, SArray** pVgDataBlocks, bool isRebuild, int32_t tbNum);

View File

@ -1446,6 +1446,27 @@ int32_t initTableColSubmitData(STableDataCxt* pTableCxt) {
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
int32_t initTableColSubmitDataWithBoundInfo(STableDataCxt* pTableCxt, SBoundColInfo pBoundColsInfo) {
insDestroyBoundColInfo(&(pTableCxt->boundColsInfo));
pTableCxt->boundColsInfo = pBoundColsInfo;
pTableCxt->boundColsInfo.pColIndex = taosMemoryCalloc(pBoundColsInfo.numOfBound - 1, sizeof(int16_t));
if (NULL == pTableCxt->boundColsInfo.pColIndex) {
return terrno;
}
(void)memcpy(pTableCxt->boundColsInfo.pColIndex, pBoundColsInfo.pColIndex,
sizeof(int16_t) * pBoundColsInfo.numOfBound - 1);
for (int32_t i = 0; i < pBoundColsInfo.numOfBound; ++i) {
SSchema* pSchema = &pTableCxt->pMeta->schema[pTableCxt->boundColsInfo.pColIndex[i]];
SColData* pCol = taosArrayReserve(pTableCxt->pData->aCol, 1);
if (NULL == pCol) {
return terrno;
}
tColDataInit(pCol, pSchema->colId, pSchema->type, pSchema->flags);
}
return TSDB_CODE_SUCCESS;
}
// input pStmt->pSql: // input pStmt->pSql:
// 1. [(tag1_name, ...)] ... // 1. [(tag1_name, ...)] ...
// 2. VALUES ... | FILE ... // 2. VALUES ... | FILE ...
@ -1815,7 +1836,7 @@ static int32_t processCtbTagsAfterCtbName(SInsertParseContext* pCxt, SVnodeModif
static int32_t doGetStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, const char** ppSql, static int32_t doGetStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, const char** ppSql,
SStbRowsDataContext* pStbRowsCxt, SToken* pToken, const SBoundColInfo* pCols, SStbRowsDataContext* pStbRowsCxt, SToken* pToken, const SBoundColInfo* pCols,
const SSchema* pSchemas, SToken* tagTokens, SSchema** tagSchemas, int* pNumOfTagTokens, const SSchema* pSchemas, SToken* tagTokens, SSchema** tagSchemas, int* pNumOfTagTokens,
bool* bFoundTbName) { bool* bFoundTbName, bool* setCtbName, SBoundColInfo* ctbCols) {
int32_t code = TSDB_CODE_SUCCESS; int32_t code = TSDB_CODE_SUCCESS;
SArray* pTagNames = pStbRowsCxt->aTagNames; SArray* pTagNames = pStbRowsCxt->aTagNames;
SArray* pTagVals = pStbRowsCxt->aTagVals; SArray* pTagVals = pStbRowsCxt->aTagVals;
@ -1824,7 +1845,8 @@ static int32_t doGetStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt*
int32_t numOfTags = getNumOfTags(pStbRowsCxt->pStbMeta); int32_t numOfTags = getNumOfTags(pStbRowsCxt->pStbMeta);
int32_t tbnameIdx = getTbnameSchemaIndex(pStbRowsCxt->pStbMeta); int32_t tbnameIdx = getTbnameSchemaIndex(pStbRowsCxt->pStbMeta);
uint8_t precision = getTableInfo(pStbRowsCxt->pStbMeta).precision; uint8_t precision = getTableInfo(pStbRowsCxt->pStbMeta).precision;
int idx = 0; int tag_index = 0;
int col_index = 0;
for (int i = 0; i < pCols->numOfBound && (code) == TSDB_CODE_SUCCESS; ++i) { for (int i = 0; i < pCols->numOfBound && (code) == TSDB_CODE_SUCCESS; ++i) {
const char* pTmpSql = *ppSql; const char* pTmpSql = *ppSql;
bool ignoreComma = false; bool ignoreComma = false;
@ -1847,6 +1869,7 @@ static int32_t doGetStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt*
pCxt->isStmtBind = true; pCxt->isStmtBind = true;
pStmt->usingTableProcessing = true; pStmt->usingTableProcessing = true;
if (pCols->pColIndex[i] == tbnameIdx) { if (pCols->pColIndex[i] == tbnameIdx) {
*bFoundTbName = true;
char* tbName = NULL; char* tbName = NULL;
if ((*pCxt->pComCxt->pStmtCb->getTbNameFn)(pCxt->pComCxt->pStmtCb->pStmt, &tbName) == TSDB_CODE_SUCCESS) { if ((*pCxt->pComCxt->pStmtCb->getTbNameFn)(pCxt->pComCxt->pStmtCb->pStmt, &tbName) == TSDB_CODE_SUCCESS) {
tstrncpy(pStbRowsCxt->ctbName.tname, tbName, sizeof(pStbRowsCxt->ctbName.tname)); tstrncpy(pStbRowsCxt->ctbName.tname, tbName, sizeof(pStbRowsCxt->ctbName.tname));
@ -1855,10 +1878,20 @@ static int32_t doGetStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt*
tstrncpy(pStmt->usingTableName.dbname, pStmt->targetTableName.dbname, sizeof(pStmt->usingTableName.dbname)); tstrncpy(pStmt->usingTableName.dbname, pStmt->targetTableName.dbname, sizeof(pStmt->usingTableName.dbname));
pStmt->usingTableName.type = 1; pStmt->usingTableName.type = 1;
pStmt->pTableMeta->tableType = TSDB_CHILD_TABLE; // set the table type to child table for parse cache pStmt->pTableMeta->tableType = TSDB_CHILD_TABLE; // set the table type to child table for parse cache
*bFoundTbName = true; *setCtbName = true;
} }
} else if (pCols->pColIndex[i] < numOfCols) { } else if (pCols->pColIndex[i] < numOfCols) {
// bind column // bind column
if (ctbCols->pColIndex == NULL) {
ctbCols->pColIndex = taosMemoryCalloc(numOfCols, sizeof(int16_t));
if (NULL == ctbCols->pColIndex) {
return terrno;
}
}
ctbCols->pColIndex[col_index++] = pCols->pColIndex[i];
ctbCols->numOfBound++;
ctbCols->numOfCols++;
} else if (pCols->pColIndex[i] < tbnameIdx) { } else if (pCols->pColIndex[i] < tbnameIdx) {
if (pCxt->tags.pColIndex == NULL) { if (pCxt->tags.pColIndex == NULL) {
pCxt->tags.pColIndex = taosMemoryCalloc(numOfTags, sizeof(int16_t)); pCxt->tags.pColIndex = taosMemoryCalloc(numOfTags, sizeof(int16_t));
@ -1866,10 +1899,10 @@ static int32_t doGetStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt*
return terrno; return terrno;
} }
} }
if (!(idx < numOfTags)) { if (!(tag_index < numOfTags)) {
return buildInvalidOperationMsg(&pCxt->msg, "not expected numOfTags"); return buildInvalidOperationMsg(&pCxt->msg, "not expected numOfTags");
} }
pCxt->tags.pColIndex[idx++] = pCols->pColIndex[i] - numOfCols; pCxt->tags.pColIndex[tag_index++] = pCols->pColIndex[i] - numOfCols;
pCxt->tags.mixTagsCols = true; pCxt->tags.mixTagsCols = true;
pCxt->tags.numOfBound++; pCxt->tags.numOfBound++;
pCxt->tags.numOfCols++; pCxt->tags.numOfCols++;
@ -1927,7 +1960,8 @@ static int32_t doGetStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt*
} }
static int32_t getStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, const char** ppSql, static int32_t getStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, const char** ppSql,
SStbRowsDataContext* pStbRowsCxt, bool* pGotRow, SToken* pToken, bool* pCtbFirst) { SStbRowsDataContext* pStbRowsCxt, bool* pGotRow, SToken* pToken, bool* pCtbFirst,
bool* setCtbName, SBoundColInfo* ctbCols) {
SBoundColInfo* pCols = &pStbRowsCxt->boundColsInfo; SBoundColInfo* pCols = &pStbRowsCxt->boundColsInfo;
SSchema* pSchemas = getTableColumnSchema(pStbRowsCxt->pStbMeta); SSchema* pSchemas = getTableColumnSchema(pStbRowsCxt->pStbMeta);
@ -1940,19 +1974,14 @@ static int32_t getStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pS
int numOfTagTokens = 0; int numOfTagTokens = 0;
code = doGetStbRowValues(pCxt, pStmt, ppSql, pStbRowsCxt, pToken, pCols, pSchemas, tagTokens, tagSchemas, code = doGetStbRowValues(pCxt, pStmt, ppSql, pStbRowsCxt, pToken, pCols, pSchemas, tagTokens, tagSchemas,
&numOfTagTokens, &bFoundTbName); &numOfTagTokens, &bFoundTbName, setCtbName, ctbCols);
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
return code; return code;
} }
if (!bFoundTbName) { if (!bFoundTbName) {
if (!pCxt->isStmtBind) { code = buildSyntaxErrMsg(&pCxt->msg, "tbname value expected", pOrigSql);
code = buildSyntaxErrMsg(&pCxt->msg, "tbname value expected", pOrigSql);
} else {
*pGotRow = true;
return TSDB_CODE_TSC_STMT_TBNAME_ERROR;
}
} }
bool ctbFirst = true; bool ctbFirst = true;
@ -2079,9 +2108,11 @@ static int32_t parseOneStbRow(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pSt
SStbRowsDataContext* pStbRowsCxt, bool* pGotRow, SToken* pToken, SStbRowsDataContext* pStbRowsCxt, bool* pGotRow, SToken* pToken,
STableDataCxt** ppTableDataCxt) { STableDataCxt** ppTableDataCxt) {
bool bFirstTable = false; bool bFirstTable = false;
int32_t code = getStbRowValues(pCxt, pStmt, ppSql, pStbRowsCxt, pGotRow, pToken, &bFirstTable); bool setCtbName = false;
SBoundColInfo ctbCols = {0};
int32_t code = getStbRowValues(pCxt, pStmt, ppSql, pStbRowsCxt, pGotRow, pToken, &bFirstTable, &setCtbName, &ctbCols);
if (code == TSDB_CODE_TSC_STMT_TBNAME_ERROR && *pGotRow) { if (!setCtbName && pCxt->isStmtBind) {
return parseStbBoundInfo(pStmt, pStbRowsCxt, ppTableDataCxt); return parseStbBoundInfo(pStmt, pStbRowsCxt, ppTableDataCxt);
} }
@ -2108,7 +2139,13 @@ static int32_t parseOneStbRow(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pSt
} }
} }
if (code == TSDB_CODE_SUCCESS) { if (code == TSDB_CODE_SUCCESS) {
code = initTableColSubmitData(*ppTableDataCxt); if (pCxt->isStmtBind) {
int32_t tbnameIdx = getTbnameSchemaIndex(pStbRowsCxt->pStbMeta);
code = initTableColSubmitDataWithBoundInfo(*ppTableDataCxt, ctbCols);
insDestroyBoundColInfo(&ctbCols);
} else {
code = initTableColSubmitData(*ppTableDataCxt);
}
} }
if (code == TSDB_CODE_SUCCESS && !pCxt->isStmtBind) { if (code == TSDB_CODE_SUCCESS && !pCxt->isStmtBind) {
SRow** pRow = taosArrayReserve((*ppTableDataCxt)->pData->aRowP, 1); SRow** pRow = taosArrayReserve((*ppTableDataCxt)->pData->aRowP, 1);
@ -3177,7 +3214,7 @@ int32_t parseInsertSql(SParseContext* pCxt, SQuery** pQuery, SCatalogReq* pCatal
.forceUpdate = (NULL != pCatalogReq ? pCatalogReq->forceUpdate : false), .forceUpdate = (NULL != pCatalogReq ? pCatalogReq->forceUpdate : false),
.isStmtBind = pCxt->isStmtBind}; .isStmtBind = pCxt->isStmtBind};
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, (SVnodeModifyOpStmt*)((*pQuery)->pRoot)); code = parseInsertSqlImpl(&context, (SVnodeModifyOpStmt*)((*pQuery)->pRoot));
} }