From f9241ef12170d84d60768f41151d20af396f5c73 Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Thu, 19 Mar 2020 22:48:18 +0800 Subject: [PATCH] [TD-32] refactor the table meta --- src/client/inc/tschemautil.h | 2 +- src/client/inc/tsclient.h | 45 +++++++++--------------------- src/client/src/tscFunctionImpl.c | 4 --- src/client/src/tscParseInsert.c | 10 +++---- src/client/src/tscSQLParser.c | 12 ++++---- src/client/src/tscSchemaUtil.c | 10 +++---- src/client/src/tscSecondaryMerge.c | 12 ++++---- src/client/src/tscServer.c | 4 +-- src/client/src/tscStream.c | 2 +- src/client/src/tscUtil.c | 2 +- 10 files changed, 40 insertions(+), 63 deletions(-) diff --git a/src/client/inc/tschemautil.h b/src/client/inc/tschemautil.h index ed19a5e3b6..2fc77d69bb 100644 --- a/src/client/inc/tschemautil.h +++ b/src/client/inc/tschemautil.h @@ -47,7 +47,7 @@ int32_t tscGetNumOfColumns(const STableMeta* pTableMeta); * @param pTableMeta * @return */ -STableInfo tscGetTableInfo(const STableMeta* pTableMeta); +STableComInfo tscGetTableInfo(const STableMeta* pTableMeta); /** * get the schema diff --git a/src/client/inc/tsclient.h b/src/client/inc/tsclient.h index 67ac00c0c7..181f55a614 100644 --- a/src/client/inc/tsclient.h +++ b/src/client/inc/tsclient.h @@ -47,47 +47,28 @@ typedef struct SSqlGroupbyExpr { int16_t orderType; // order by type: asc/desc } SSqlGroupbyExpr; -typedef struct STableInfo { +typedef struct STableComInfo { uint8_t numOfTags; uint8_t precision; int16_t numOfColumns; int16_t rowSize; -} STableInfo; +} STableComInfo; typedef struct STableMeta { - char* tableId; // null-terminated string - - union { - // pointer to super table if it is created according to super table - struct STableMeta* pSTable; - - // otherwise, the following information is required. - STableInfo tableInfo; - }; - - uint8_t tableType; - int16_t sversion; - int8_t numOfVpeers; + //super table if it is created according to super table, otherwise, tableInfo is used + union { struct STableMeta* pSTable; STableComInfo tableInfo; }; + uint8_t tableType; + int8_t numOfVpeers; + int16_t sversion; SVnodeDesc vpeerDesc[TSDB_VNODES_SUPPORT]; - int32_t vgid; - int32_t sid; - uint64_t uid; - - // if the table is TSDB_CHILD_TABLE, schema is acquired by super table meta info - SSchema schema[]; + int32_t vgid; // virtual group id, which current table belongs to + int32_t sid; // the index of one table in a virtual node + uint64_t uid; // unique id of a table + SSchema schema[]; // if the table is TSDB_CHILD_TABLE, schema is acquired by super table meta info } STableMeta; -typedef struct SSTableMeta { - char* tableId; - STableInfo tableInfo; - int32_t sid; - int32_t vgid; - uint64_t uid; - SSchema schema[]; -} SSTableMeta; - typedef struct STableMetaInfo { - STableMeta * pTableMeta; // table meta info + STableMeta * pTableMeta; // table meta, cached in client side and acquried by name SSuperTableMeta *pMetricMeta; // metricmeta /* @@ -95,7 +76,7 @@ typedef struct STableMetaInfo { * 2. keep the vnode index for multi-vnode insertion */ int32_t vnodeIndex; - char name[TSDB_TABLE_ID_LEN + 1]; // (super) table name + char name[TSDB_TABLE_ID_LEN]; // (super) table name int16_t numOfTags; // total required tags in query, including groupby tags int16_t tagColumnIndex[TSDB_MAX_TAGS]; // clause + tag projection } STableMetaInfo; diff --git a/src/client/src/tscFunctionImpl.c b/src/client/src/tscFunctionImpl.c index 885b78010d..e5b40e94bc 100644 --- a/src/client/src/tscFunctionImpl.c +++ b/src/client/src/tscFunctionImpl.c @@ -4601,12 +4601,8 @@ static void rate_func_merge(SQLFunctionCtx *pCtx) { if (numOfNotNull > 0) { pBuf->hasResult = DATA_SET_FLAG; } - - return; } - - static void rate_func_copy(SQLFunctionCtx *pCtx) { assert(pCtx->inputType == TSDB_DATA_TYPE_BINARY); diff --git a/src/client/src/tscParseInsert.c b/src/client/src/tscParseInsert.c index 6155168a3b..75ead0007b 100644 --- a/src/client/src/tscParseInsert.c +++ b/src/client/src/tscParseInsert.c @@ -504,7 +504,7 @@ int tsParseValues(char **str, STableDataBlocks *pDataBlock, STableMeta *pTableMe int16_t numOfRows = 0; SSchema *pSchema = tscGetTableSchema(pTableMeta); - STableInfo tinfo = tscGetTableInfo(pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMeta); int32_t precision = tinfo.precision; @@ -658,7 +658,7 @@ static int32_t doParseInsertStatement(SSqlObj *pSql, void *pTableHashList, char SSqlCmd * pCmd = &pSql->cmd; STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0); STableMeta * pTableMeta = pTableMetaInfo->pTableMeta; - STableInfo tinfo = tscGetTableInfo(pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMeta); STableDataBlocks *dataBuf = NULL; int32_t ret = tscGetDataBlockFromList(pTableHashList, pCmd->pDataBlocks, pTableMeta->uid, TSDB_DEFAULT_PAYLOAD_SIZE, @@ -790,7 +790,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) { } SSchema *pTagSchema = tscGetTableTagSchema(pSTableMeterMetaInfo->pTableMeta); - STableInfo tinfo = tscGetTableInfo(pSTableMeterMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pSTableMeterMetaInfo->pTableMeta); index = 0; sToken = tStrGetToken(sql, &index, false, 0, NULL); @@ -1096,7 +1096,7 @@ int doParseInsertSql(SSqlObj *pSql, char *str) { } int32_t numOfCols = tscGetNumOfTags(pTableMetaInfo->pTableMeta); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); if (sToken.type == TK_VALUES) { SParsedDataColInfo spd = {.numOfCols = numOfCols}; @@ -1390,7 +1390,7 @@ static int tscInsertDataFromFile(SSqlObj *pSql, FILE *fp, char *tmpTokenBuf) { STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0); STableMeta * pTableMeta = pTableMetaInfo->pTableMeta; - STableInfo tinfo = tscGetTableInfo(pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMeta); assert(pCmd->numOfClause == 1); diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 9d76a2e681..02267e0796 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -153,7 +153,7 @@ static int setColumnFilterInfoForTimestamp(SQueryInfo* pQueryInfo, tVariant* pVa char* seg = strnchr(pVar->pz, '-', pVar->nLen, false); STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); if (seg != NULL) { if (taosParseTime(pVar->pz, &time, pVar->nLen, tinfo.precision) != TSDB_CODE_SUCCESS) { @@ -590,7 +590,7 @@ int32_t parseIntervalClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySql) { const char* msg2 = "interval cannot be less than 10 ms"; STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); if (pQuerySql->interval.type == 0 || pQuerySql->interval.n == 0) { return TSDB_CODE_SUCCESS; @@ -683,7 +683,7 @@ int32_t parseSlidingClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySql) { STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0); SSQLToken* pSliding = &pQuerySql->sliding; - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); if (pSliding->n != 0) { getTimestampInUsFromStr(pSliding->z, pSliding->n, &pQueryInfo->slidingTime); @@ -1380,7 +1380,7 @@ static int32_t doAddProjectionExprAndResultFields(SQueryInfo* pQueryInfo, SColum STableMeta* pTableMeta = pTableMetaInfo->pTableMeta; SSchema* pSchema = tscGetTableSchema(pTableMeta); - STableInfo tinfo = tscGetTableInfo(pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMeta); if (UTIL_METER_IS_SUPERTABLE(pTableMetaInfo)) { numOfTotalColumns = tinfo.numOfColumns + tinfo.numOfTags; @@ -3621,7 +3621,7 @@ static int32_t getTimeRangeFromExpr(SQueryInfo* pQueryInfo, tSQLExpr* pExpr) { } STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); tSQLExpr* pRight = pExpr->pRight; @@ -5708,7 +5708,7 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) { } // set where info - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); if (pQuerySql->pWhere != NULL) { if (parseWhereClause(pQueryInfo, &pQuerySql->pWhere, pSql) != TSDB_CODE_SUCCESS) { diff --git a/src/client/src/tscSchemaUtil.c b/src/client/src/tscSchemaUtil.c index a9a37217e0..76e116a2ce 100644 --- a/src/client/src/tscSchemaUtil.c +++ b/src/client/src/tscSchemaUtil.c @@ -24,7 +24,7 @@ int32_t tscGetNumOfTags(const STableMeta* pTableMeta) { assert(pTableMeta != NULL); - STableInfo tinfo = tscGetTableInfo(pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMeta); if (pTableMeta->tableType == TSDB_NORMAL_TABLE) { assert(tinfo.numOfTags == 0); @@ -44,7 +44,7 @@ int32_t tscGetNumOfColumns(const STableMeta* pTableMeta) { assert(pTableMeta != NULL); // table created according to super table, use data from super table - STableInfo tinfo = tscGetTableInfo(pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMeta); return tinfo.numOfColumns; } @@ -64,13 +64,13 @@ SSchema *tscGetTableSchema(const STableMeta *pTableMeta) { SSchema* tscGetTableTagSchema(const STableMeta* pTableMeta) { assert(pTableMeta != NULL && (pTableMeta->tableType == TSDB_SUPER_TABLE || pTableMeta->tableType == TSDB_CHILD_TABLE)); - STableInfo tinfo = tscGetTableInfo(pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMeta); assert(tinfo.numOfTags > 0); return tscGetTableColumnSchema(pTableMeta, tinfo.numOfColumns); } -STableInfo tscGetTableInfo(const STableMeta* pTableMeta) { +STableComInfo tscGetTableInfo(const STableMeta* pTableMeta) { assert(pTableMeta != NULL); if (pTableMeta->tableType == TSDB_CHILD_TABLE) { @@ -156,7 +156,7 @@ STableMeta* tscCreateTableMetaFromMsg(STableMetaMsg* pTableMetaMsg, size_t* size int32_t schemaSize = (pTableMetaMsg->numOfColumns + pTableMetaMsg->numOfTags) * sizeof(SSchema); STableMeta* pTableMeta = calloc(1, sizeof(STableMeta) + schemaSize); pTableMeta->tableType = pTableMetaMsg->tableType; - pTableMeta->tableInfo = (STableInfo){.numOfTags = pTableMetaMsg->numOfTags, .numOfColumns = pTableMetaMsg->numOfColumns, + pTableMeta->tableInfo = (STableComInfo){.numOfTags = pTableMetaMsg->numOfTags, .numOfColumns = pTableMetaMsg->numOfColumns, .precision = pTableMetaMsg->precision}; pTableMeta->sid = pTableMetaMsg->sid; pTableMeta->uid = pTableMetaMsg->uid; diff --git a/src/client/src/tscSecondaryMerge.c b/src/client/src/tscSecondaryMerge.c index 5647815102..0ee8afd53c 100644 --- a/src/client/src/tscSecondaryMerge.c +++ b/src/client/src/tscSecondaryMerge.c @@ -320,7 +320,7 @@ void tscCreateLocalReducer(tExtMemBuffer **pMemBuffer, int32_t numOfBuffer, tOrd pRes->numOfGroups = 0; STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); int16_t prec = tinfo.precision; int64_t stime = (pQueryInfo->stime < pQueryInfo->etime) ? pQueryInfo->stime : pQueryInfo->etime; @@ -777,7 +777,7 @@ void savePrevRecordAndSetupInterpoInfo(SLocalReducer *pLocalReducer, SQueryInfo // discard following dataset in the same group and reset the interpolation information STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); int16_t prec = tinfo.precision; int64_t stime = (pQueryInfo->stime < pQueryInfo->etime) ? pQueryInfo->stime : pQueryInfo->etime; @@ -921,7 +921,7 @@ static void doInterpolateResult(SSqlObj *pSql, SLocalReducer *pLocalReducer, boo } STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); int8_t precision = tinfo.precision; @@ -1274,7 +1274,7 @@ static void resetEnvForNewResultset(SSqlRes *pRes, SSqlCmd *pCmd, SLocalReducer pQueryInfo->limit.offset = pLocalReducer->offset; STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); int8_t precision = tinfo.precision; @@ -1302,7 +1302,7 @@ static bool doInterpolationForCurrentGroup(SSqlObj *pSql) { SInterpolationInfo *pInterpoInfo = &pLocalReducer->interpolationInfo; STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); int8_t p = tinfo.precision; @@ -1339,7 +1339,7 @@ static bool doHandleLastRemainData(SSqlObj *pSql) { SQueryInfo * pQueryInfo = tscGetQueryInfoDetail(pCmd, pCmd->clauseIndex); STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); int8_t precision = tinfo.precision; if ((isAllSourcesCompleted(pLocalReducer) && !pLocalReducer->hasPrevRow) || pLocalReducer->pLocalDataSrc[0] == NULL || diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 857a9e5502..550a887622 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -2176,7 +2176,7 @@ int tscProcessDescribeTableRsp(SSqlObj *pSql) { SSqlCmd * pCmd = &pSql->cmd; STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); int32_t numOfRes = tinfo.numOfColumns + tinfo.numOfTags; return tscLocalResultCommonBuilder(pSql, numOfRes); @@ -3147,7 +3147,7 @@ int32_t tscGetTableMeta(SSqlObj *pSql, STableMetaInfo *pTableMetaInfo) { pTableMetaInfo->pTableMeta = (STableMeta *)taosCacheAcquireByName(tscCacheHandle, pTableMetaInfo->name); if (pTableMetaInfo->pTableMeta != NULL) { - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); tscTrace("%p retrieve tableMeta from cache, the number of columns:%d, numOfTags:%d", pSql, tinfo.numOfColumns, tinfo.numOfTags); diff --git a/src/client/src/tscStream.c b/src/client/src/tscStream.c index e326b8d169..ac8fb95a13 100644 --- a/src/client/src/tscStream.c +++ b/src/client/src/tscStream.c @@ -541,7 +541,7 @@ TAOS_STREAM *taos_open_stream(TAOS *taos, const char *sqlstr, void (*fp)(void *p SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(pCmd, 0); STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); pStream->fp = fp; pStream->callback = callback; diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index a1c0bf3019..16a39a4db4 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -1583,7 +1583,7 @@ bool tscValidateColumnId(STableMetaInfo* pTableMetaInfo, int32_t colId) { } SSchema* pSchema = tscGetTableSchema(pTableMetaInfo->pTableMeta); - STableInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); int32_t numOfTotal = tinfo.numOfTags + tinfo.numOfColumns; -- GitLab