[TD-32] refactor the table meta
This commit is contained in:
parent
5d4f826b7b
commit
f9241ef121
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 ||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue