diff --git a/include/libs/nodes/querynodes.h b/include/libs/nodes/querynodes.h index b2a30d525b..bfd23d1965 100644 --- a/include/libs/nodes/querynodes.h +++ b/include/libs/nodes/querynodes.h @@ -439,7 +439,7 @@ typedef struct SVnodeModifyOpStmt { FFreeVgourpBlockArray freeArrayFunc; bool usingTableProcessing; bool fileProcessing; - + bool stbSyntax; SName superTableName; SName childTableName; diff --git a/source/libs/parser/src/parInsertSql.c b/source/libs/parser/src/parInsertSql.c index 120fe13636..1351a48a52 100644 --- a/source/libs/parser/src/parInsertSql.c +++ b/source/libs/parser/src/parInsertSql.c @@ -1783,6 +1783,25 @@ static void resetEnvPreTable(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStm pStmt->stbSyntax = false; } +static int32_t parseStbBoundColumnsClause(SInsertParseContext* pCxt, const char* pBoundCols, + STableMeta* pTableMeta, SBoundColInfo* pBoundColsInfo) { + return TSDB_CODE_SUCCESS; +} + +static int32_t parseInsertStbClauseBottom(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) { + int32_t code = TSDB_CODE_SUCCESS; + STableComInfo tblInfo = getTableInfo(pStmt->pTableMeta); + SBoundColInfo stbBoundColInfo; + insInitBoundColsInfo(tblInfo.numOfColumns + tblInfo.numOfTags + 1, &stbBoundColInfo); + if (!pStmt->pBoundCols) { + return buildSyntaxErrMsg(&pCxt->msg, "(...tbname...) bounded cols is expected", pStmt->pSql); + } + SToken token; + int32_t index = 0; + parseStbBoundColumnsClause(pCxt, pStmt->pBoundCols, pStmt->pTableMeta, &stbBoundColInfo); + return code; +} + // input pStmt->pSql: [(field1_name, ...)] [ USING ... ] VALUES ... | FILE ... static int32_t parseInsertTableClause(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, SToken* pTbName) { resetEnvPreTable(pCxt, pStmt); @@ -1791,8 +1810,7 @@ static int32_t parseInsertTableClause(SInsertParseContext* pCxt, SVnodeModifyOpS if (!pStmt->stbSyntax) { code = parseInsertTableClauseBottom(pCxt, pStmt); } else { - //code = parseInsertStbClauseBottom(pCxt, pStmt); - code = TSDB_CODE_SUCCESS; + code = parseInsertStbClauseBottom(pCxt, pStmt); } } diff --git a/source/libs/parser/src/parInsertUtil.c b/source/libs/parser/src/parInsertUtil.c index 3efb5dafcb..1c0b28f883 100644 --- a/source/libs/parser/src/parInsertUtil.c +++ b/source/libs/parser/src/parInsertUtil.c @@ -177,7 +177,9 @@ int32_t insInitBoundColsInfo(int32_t numOfBound, SBoundColInfo* pInfo) { if (NULL == pInfo->pColIndex) { return TSDB_CODE_OUT_OF_MEMORY; } - initBoundCols(numOfBound, pInfo->pColIndex); + for (int32_t i = 0; i < numOfBound; ++i) { + pInfo->pColIndex[i] = i; + } return TSDB_CODE_SUCCESS; }