[TD-32] refactor the tablemeta
This commit is contained in:
parent
03346d0ccc
commit
06e89a5eef
|
@ -6,6 +6,7 @@ INCLUDE_DIRECTORIES(jni)
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/inc)
|
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/inc)
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/util/inc)
|
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/util/inc)
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/query/inc)
|
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/query/inc)
|
||||||
|
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/common/inc)
|
||||||
INCLUDE_DIRECTORIES(${TD_ENTERPRISE_DIR}/src/inc)
|
INCLUDE_DIRECTORIES(${TD_ENTERPRISE_DIR}/src/inc)
|
||||||
INCLUDE_DIRECTORIES(${TD_OS_DIR}/inc)
|
INCLUDE_DIRECTORIES(${TD_OS_DIR}/inc)
|
||||||
AUX_SOURCE_DIRECTORY(src SRC)
|
AUX_SOURCE_DIRECTORY(src SRC)
|
||||||
|
|
|
@ -89,17 +89,19 @@ bool isValidSchema(struct SSchema *pSchema, int32_t numOfCols);
|
||||||
* get the schema for the "tbname" column. it is a built column
|
* get the schema for the "tbname" column. it is a built column
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SSchema tsGetTbnameColumnSchema();
|
SSchema tscGetTbnameColumnSchema();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create the table meta from the msg
|
||||||
|
* @param pTableMetaMsg
|
||||||
|
* @param size size of the table meta
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
STableMeta* tscCreateTableMetaFromMsg(STableMetaMsg* pTableMetaMsg, size_t* size);
|
||||||
|
|
||||||
//todo tags value as well as the table id structure needs refactor
|
//todo tags value as well as the table id structure needs refactor
|
||||||
char *tsGetTagsValue(STableMeta *pMeta);
|
char *tsGetTagsValue(STableMeta *pMeta);
|
||||||
|
|
||||||
bool tsMeterMetaIdentical(STableMeta *p1, STableMeta *p2);
|
|
||||||
|
|
||||||
void extractTableName(char *tableId, char *name);
|
|
||||||
|
|
||||||
SSQLToken extractDBName(char *tableId, char *name);
|
|
||||||
|
|
||||||
void extractTableNameFromToken(SSQLToken *pToken, SSQLToken* pTable);
|
void extractTableNameFromToken(SSQLToken *pToken, SSQLToken* pTable);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
#include "tsclient.h"
|
#include "tsclient.h"
|
||||||
#include "ttokendef.h"
|
#include "ttokendef.h"
|
||||||
|
|
||||||
|
#include "name.h"
|
||||||
|
|
||||||
#define DEFAULT_PRIMARY_TIMESTAMP_COL_NAME "_c0"
|
#define DEFAULT_PRIMARY_TIMESTAMP_COL_NAME "_c0"
|
||||||
|
|
||||||
// -1 is tbname column index, so here use the -2 as the initial value
|
// -1 is tbname column index, so here use the -2 as the initial value
|
||||||
|
@ -2470,7 +2472,7 @@ int32_t parseGroupbyClause(SQueryInfo* pQueryInfo, tVariantList* pList, SSqlCmd*
|
||||||
|
|
||||||
STableMeta* pTableMeta = NULL;
|
STableMeta* pTableMeta = NULL;
|
||||||
SSchema* pSchema = NULL;
|
SSchema* pSchema = NULL;
|
||||||
SSchema s = tsGetTbnameColumnSchema();
|
SSchema s = tscGetTbnameColumnSchema();
|
||||||
|
|
||||||
int32_t tableIndex = COLUMN_INDEX_INITIAL_VAL;
|
int32_t tableIndex = COLUMN_INDEX_INITIAL_VAL;
|
||||||
|
|
||||||
|
@ -3538,7 +3540,8 @@ static int32_t setTableCondForMetricQuery(SQueryInfo* pQueryInfo, const char* ac
|
||||||
}
|
}
|
||||||
num = j;
|
num = j;
|
||||||
|
|
||||||
SSQLToken dbToken = extractDBName(pTableMetaInfo->name, db);
|
char* name = extractDBName(pTableMetaInfo->name, db);
|
||||||
|
SSQLToken dbToken = {.type = TK_STRING, .z = name, .n = strlen(name)};
|
||||||
|
|
||||||
for (int32_t i = 0; i < num; ++i) {
|
for (int32_t i = 0; i < num; ++i) {
|
||||||
if (i >= 1) {
|
if (i >= 1) {
|
||||||
|
|
|
@ -45,8 +45,6 @@ int32_t tscGetNumOfColumns(const STableMeta* pTableMeta) {
|
||||||
|
|
||||||
// table created according to super table, use data from super table
|
// table created according to super table, use data from super table
|
||||||
STableInfo tinfo = tscGetTableInfo(pTableMeta);
|
STableInfo tinfo = tscGetTableInfo(pTableMeta);
|
||||||
assert(tinfo.numOfColumns >= 2);
|
|
||||||
|
|
||||||
return tinfo.numOfColumns;
|
return tinfo.numOfColumns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,7 +139,7 @@ SSchema* tscGetTableColumnSchema(const STableMeta* pTableMeta, int32_t startCol)
|
||||||
return &pSchema[startCol];
|
return &pSchema[startCol];
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SSchema tsGetTbnameColumnSchema() {
|
struct SSchema tscGetTbnameColumnSchema() {
|
||||||
struct SSchema s = {
|
struct SSchema s = {
|
||||||
.colId = TSDB_TBNAME_COLUMN_INDEX,
|
.colId = TSDB_TBNAME_COLUMN_INDEX,
|
||||||
.type = TSDB_DATA_TYPE_BINARY,
|
.type = TSDB_DATA_TYPE_BINARY,
|
||||||
|
@ -152,6 +150,22 @@ struct SSchema tsGetTbnameColumnSchema() {
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STableMeta* tscCreateTableMetaFromMsg(STableMetaMsg* pTableMetaMsg, size_t* size) {
|
||||||
|
assert(pTableMetaMsg != NULL);
|
||||||
|
|
||||||
|
int32_t schemaSize = (pTableMetaMsg->numOfColumns + pTableMetaMsg->numOfTags) * sizeof(SSchema);
|
||||||
|
STableMeta* pTableMeta = calloc(1, sizeof(STableMeta) + schemaSize);
|
||||||
|
|
||||||
|
memcpy(pTableMeta->schema, pTableMetaMsg->schema, schemaSize);
|
||||||
|
|
||||||
|
if (size != NULL) {
|
||||||
|
*size = sizeof(STableMeta) + schemaSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pTableMeta;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the TableMeta data format in memory is as follows:
|
* the TableMeta data format in memory is as follows:
|
||||||
*
|
*
|
||||||
|
@ -174,26 +188,6 @@ char* tsGetTagsValue(STableMeta* pTableMeta) {
|
||||||
return ((char*)pTableMeta + offset);
|
return ((char*)pTableMeta + offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool tsMeterMetaIdentical(STableMeta* p1, STableMeta* p2) {
|
|
||||||
if (p1 == NULL || p2 == NULL || p1->uid != p2->uid || p1->sversion != p2->sversion) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//
|
|
||||||
// if (p1 == p2) {
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// size_t size = sizeof(STableMeta) + p1->numOfColumns * sizeof(SSchema);
|
|
||||||
//
|
|
||||||
// for (int32_t i = 0; i < p1->numOfTags; ++i) {
|
|
||||||
// SSchema* pColSchema = tscGetTableColumnSchema(p1, i + p1->numOfColumns);
|
|
||||||
// size += pColSchema->bytes;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return memcmp(p1, p2, size) == 0;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// todo refactor
|
// todo refactor
|
||||||
static FORCE_INLINE char* skipSegments(char* input, char delim, int32_t num) {
|
static FORCE_INLINE char* skipSegments(char* input, char delim, int32_t num) {
|
||||||
for (int32_t i = 0; i < num; ++i) {
|
for (int32_t i = 0; i < num; ++i) {
|
||||||
|
@ -213,24 +207,6 @@ static FORCE_INLINE size_t copy(char* dst, const char* src, char delimiter) {
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* extract table name from meterid, which the format of userid.dbname.metername
|
|
||||||
* @param tableId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
void extractTableName(char* tableId, char* name) {
|
|
||||||
char* r = skipSegments(tableId, TS_PATH_DELIMITER[0], 2);
|
|
||||||
copy(name, r, TS_PATH_DELIMITER[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
SSQLToken extractDBName(char* tableId, char* name) {
|
|
||||||
char* r = skipSegments(tableId, TS_PATH_DELIMITER[0], 1);
|
|
||||||
size_t len = copy(name, r, TS_PATH_DELIMITER[0]);
|
|
||||||
|
|
||||||
SSQLToken token = {.z = name, .n = len, .type = TK_STRING};
|
|
||||||
return token;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* tablePrefix.columnName
|
* tablePrefix.columnName
|
||||||
* extract table name and save it in pTable, with only column name in pToken
|
* extract table name and save it in pTable, with only column name in pToken
|
||||||
|
|
|
@ -2247,7 +2247,7 @@ int tscBuildConnectMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tscBuildMeterMetaMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
int tscBuildTableMetaMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
||||||
SCMTableInfoMsg *pInfoMsg;
|
SCMTableInfoMsg *pInfoMsg;
|
||||||
char * pMsg;
|
char * pMsg;
|
||||||
int msgLen = 0;
|
int msgLen = 0;
|
||||||
|
@ -2878,7 +2878,7 @@ int tscProcessShowRsp(SSqlObj *pSql) {
|
||||||
SSqlRes *pRes = &pSql->res;
|
SSqlRes *pRes = &pSql->res;
|
||||||
SSqlCmd *pCmd = &pSql->cmd;
|
SSqlCmd *pCmd = &pSql->cmd;
|
||||||
|
|
||||||
SQueryInfo *pQueryInfo = tscGetQueryInfoDetail(pCmd, 0); //?
|
SQueryInfo *pQueryInfo = tscGetQueryInfoDetail(pCmd, 0);
|
||||||
|
|
||||||
STableMetaInfo *pTableMetaInfo = tscGetMeterMetaInfoFromQueryInfo(pQueryInfo, 0);
|
STableMetaInfo *pTableMetaInfo = tscGetMeterMetaInfoFromQueryInfo(pQueryInfo, 0);
|
||||||
|
|
||||||
|
@ -2891,7 +2891,7 @@ int tscProcessShowRsp(SSqlObj *pSql) {
|
||||||
|
|
||||||
pMetaMsg->numOfColumns = ntohs(pMetaMsg->numOfColumns);
|
pMetaMsg->numOfColumns = ntohs(pMetaMsg->numOfColumns);
|
||||||
|
|
||||||
pSchema = (SSchema *)((char *)pMetaMsg + sizeof(STableMeta));
|
pSchema = pMetaMsg->schema;
|
||||||
pMetaMsg->sid = ntohs(pMetaMsg->sid);
|
pMetaMsg->sid = ntohs(pMetaMsg->sid);
|
||||||
for (int i = 0; i < pMetaMsg->numOfColumns; ++i) {
|
for (int i = 0; i < pMetaMsg->numOfColumns; ++i) {
|
||||||
pSchema->bytes = htons(pSchema->bytes);
|
pSchema->bytes = htons(pSchema->bytes);
|
||||||
|
@ -2902,12 +2902,14 @@ int tscProcessShowRsp(SSqlObj *pSql) {
|
||||||
strcpy(key + 1, "showlist");
|
strcpy(key + 1, "showlist");
|
||||||
|
|
||||||
taosCacheRelease(tscCacheHandle, (void *)&(pTableMetaInfo->pTableMeta), false);
|
taosCacheRelease(tscCacheHandle, (void *)&(pTableMetaInfo->pTableMeta), false);
|
||||||
|
size_t size = 0;
|
||||||
|
STableMeta* pTableMeta = tscCreateTableMetaFromMsg(pMetaMsg, &size);
|
||||||
|
|
||||||
int32_t size = pMetaMsg->numOfColumns * sizeof(SSchema) + sizeof(STableMeta);
|
|
||||||
pTableMetaInfo->pTableMeta =
|
pTableMetaInfo->pTableMeta =
|
||||||
(STableMeta *)taosCachePut(tscCacheHandle, key, (char *)pMetaMsg, size, tsMeterMetaKeepTimer);
|
(STableMeta *)taosCachePut(tscCacheHandle, key, (char *)pTableMeta, size, tsMeterMetaKeepTimer);
|
||||||
|
|
||||||
pCmd->numOfCols = pQueryInfo->fieldsInfo.numOfOutputCols;
|
pCmd->numOfCols = pQueryInfo->fieldsInfo.numOfOutputCols;
|
||||||
SSchema *pMeterSchema = tscGetTableSchema(pTableMetaInfo->pTableMeta);
|
SSchema *pTableSchema = tscGetTableSchema(pTableMetaInfo->pTableMeta);
|
||||||
|
|
||||||
tscColumnBaseInfoReserve(&pQueryInfo->colList, pMetaMsg->numOfColumns);
|
tscColumnBaseInfoReserve(&pQueryInfo->colList, pMetaMsg->numOfColumns);
|
||||||
SColumnIndex index = {0};
|
SColumnIndex index = {0};
|
||||||
|
@ -2915,13 +2917,15 @@ int tscProcessShowRsp(SSqlObj *pSql) {
|
||||||
for (int16_t i = 0; i < pMetaMsg->numOfColumns; ++i) {
|
for (int16_t i = 0; i < pMetaMsg->numOfColumns; ++i) {
|
||||||
index.columnIndex = i;
|
index.columnIndex = i;
|
||||||
tscColumnBaseInfoInsert(pQueryInfo, &index);
|
tscColumnBaseInfoInsert(pQueryInfo, &index);
|
||||||
tscFieldInfoSetValFromSchema(&pQueryInfo->fieldsInfo, i, &pMeterSchema[i]);
|
tscFieldInfoSetValFromSchema(&pQueryInfo->fieldsInfo, i, &pTableSchema[i]);
|
||||||
|
|
||||||
pQueryInfo->fieldsInfo.pSqlExpr[i] = tscSqlExprInsert(pQueryInfo, i, TSDB_FUNC_TS_DUMMY, &index,
|
pQueryInfo->fieldsInfo.pSqlExpr[i] = tscSqlExprInsert(pQueryInfo, i, TSDB_FUNC_TS_DUMMY, &index,
|
||||||
pMeterSchema[i].type, pMeterSchema[i].bytes, pMeterSchema[i].bytes);
|
pTableSchema[i].type, pTableSchema[i].bytes, pTableSchema[i].bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
tscFieldInfoCalOffset(pQueryInfo);
|
tscFieldInfoCalOffset(pQueryInfo);
|
||||||
|
|
||||||
|
tfree(pTableMeta);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3379,7 +3383,7 @@ void tscInitMsgs() {
|
||||||
|
|
||||||
tscBuildMsg[TSDB_SQL_CONNECT] = tscBuildConnectMsg;
|
tscBuildMsg[TSDB_SQL_CONNECT] = tscBuildConnectMsg;
|
||||||
tscBuildMsg[TSDB_SQL_USE_DB] = tscBuildUseDbMsg;
|
tscBuildMsg[TSDB_SQL_USE_DB] = tscBuildUseDbMsg;
|
||||||
tscBuildMsg[TSDB_SQL_META] = tscBuildMeterMetaMsg;
|
tscBuildMsg[TSDB_SQL_META] = tscBuildTableMetaMsg;
|
||||||
tscBuildMsg[TSDB_SQL_METRIC] = tscBuildMetricMetaMsg;
|
tscBuildMsg[TSDB_SQL_METRIC] = tscBuildMetricMetaMsg;
|
||||||
tscBuildMsg[TSDB_SQL_MULTI_META] = tscBuildMultiMeterMetaMsg;
|
tscBuildMsg[TSDB_SQL_MULTI_META] = tscBuildMultiMeterMetaMsg;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef TDENGINE_NAME_H
|
||||||
|
#define TDENGINE_NAME_H
|
||||||
|
|
||||||
|
int32_t extractTableName(const char *tableId, char *name);
|
||||||
|
|
||||||
|
char* extractDBName(const char *tableId, char *name);
|
||||||
|
|
||||||
|
#endif // TDENGINE_NAME_H
|
|
@ -0,0 +1,42 @@
|
||||||
|
#include "os.h"
|
||||||
|
#include "tutil.h"
|
||||||
|
|
||||||
|
#include "name.h"
|
||||||
|
#include "tstoken.h"
|
||||||
|
#include "ttokendef.h"
|
||||||
|
|
||||||
|
// todo refactor
|
||||||
|
static FORCE_INLINE const char* skipSegments(const char* input, char delim, int32_t num) {
|
||||||
|
for (int32_t i = 0; i < num; ++i) {
|
||||||
|
while (*input != 0 && *input++ != delim) {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
|
||||||
|
static FORCE_INLINE size_t copy(char* dst, const char* src, char delimiter) {
|
||||||
|
size_t len = 0;
|
||||||
|
while (*src != delimiter && *src != 0) {
|
||||||
|
*dst++ = *src++;
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t extractTableName(const char* tableId, char* name) {
|
||||||
|
size_t offset = strcspn(tableId, &TS_PATH_DELIMITER[0]);
|
||||||
|
offset = strcspn(&tableId[offset], &TS_PATH_DELIMITER[0]);
|
||||||
|
|
||||||
|
return strncpy(name, &tableId[offset], TSDB_TABLE_NAME_LEN);
|
||||||
|
|
||||||
|
// char* r = skipSegments(tableId, TS_PATH_DELIMITER[0], 2);
|
||||||
|
// return copy(name, r, TS_PATH_DELIMITER[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
char* extractDBName(const char* tableId, char* name) {
|
||||||
|
size_t offset1 = strcspn(tableId, &TS_PATH_DELIMITER[0]);
|
||||||
|
size_t len = strcspn(&tableId[offset1 + 1], &TS_PATH_DELIMITER[0]);
|
||||||
|
|
||||||
|
return strncpy(name, &tableId[offset1 + 1], len);
|
||||||
|
}
|
|
@ -223,7 +223,7 @@ typedef struct {
|
||||||
|
|
||||||
typedef struct SSchema {
|
typedef struct SSchema {
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
char name[TSDB_COL_NAME_LEN + 1];
|
char name[TSDB_COL_NAME_LEN];
|
||||||
int16_t colId;
|
int16_t colId;
|
||||||
int16_t bytes;
|
int16_t bytes;
|
||||||
} SSchema;
|
} SSchema;
|
||||||
|
@ -684,10 +684,9 @@ typedef struct STableMetaMsg {
|
||||||
uint8_t numOfTags;
|
uint8_t numOfTags;
|
||||||
uint8_t precision;
|
uint8_t precision;
|
||||||
uint8_t tableType;
|
uint8_t tableType;
|
||||||
// uint8_t index : 4; // used locally
|
|
||||||
int16_t numOfColumns;
|
int16_t numOfColumns;
|
||||||
// int16_t rowSize; // used locally, calculated in client
|
|
||||||
int16_t sversion;
|
int16_t sversion;
|
||||||
|
|
||||||
int8_t numOfVpeers;
|
int8_t numOfVpeers;
|
||||||
SVnodeDesc vpeerDesc[TSDB_VNODES_SUPPORT];
|
SVnodeDesc vpeerDesc[TSDB_VNODES_SUPPORT];
|
||||||
int32_t sid;
|
int32_t sid;
|
||||||
|
|
|
@ -15,23 +15,26 @@
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "taoserror.h"
|
|
||||||
#include "tstatus.h"
|
#include "mgmtDb.h"
|
||||||
#include "tutil.h"
|
|
||||||
#include "mnode.h"
|
|
||||||
#include "mgmtAcct.h"
|
#include "mgmtAcct.h"
|
||||||
#include "mgmtBalance.h"
|
#include "mgmtBalance.h"
|
||||||
#include "mgmtDb.h"
|
|
||||||
#include "mgmtDnode.h"
|
|
||||||
#include "mgmtMnode.h"
|
|
||||||
#include "mgmtGrant.h"
|
|
||||||
#include "mgmtShell.h"
|
|
||||||
#include "mgmtNormalTable.h"
|
|
||||||
#include "mgmtChildTable.h"
|
#include "mgmtChildTable.h"
|
||||||
|
#include "mgmtDnode.h"
|
||||||
|
#include "mgmtGrant.h"
|
||||||
|
#include "mgmtMnode.h"
|
||||||
|
#include "mgmtNormalTable.h"
|
||||||
|
#include "mgmtShell.h"
|
||||||
#include "mgmtSuperTable.h"
|
#include "mgmtSuperTable.h"
|
||||||
#include "mgmtTable.h"
|
#include "mgmtTable.h"
|
||||||
#include "mgmtUser.h"
|
#include "mgmtUser.h"
|
||||||
#include "mgmtVgroup.h"
|
#include "mgmtVgroup.h"
|
||||||
|
#include "mnode.h"
|
||||||
|
|
||||||
|
#include "taoserror.h"
|
||||||
|
#include "tstatus.h"
|
||||||
|
#include "tutil.h"
|
||||||
|
#include "name.h"
|
||||||
|
|
||||||
static void *tsDbSdb = NULL;
|
static void *tsDbSdb = NULL;
|
||||||
static int32_t tsDbUpdateSize;
|
static int32_t tsDbUpdateSize;
|
||||||
|
@ -294,8 +297,7 @@ static int32_t mgmtCreateDb(SAcctObj *pAcct, SCMCreateDbMsg *pCreate) {
|
||||||
|
|
||||||
bool mgmtCheckIsMonitorDB(char *db, char *monitordb) {
|
bool mgmtCheckIsMonitorDB(char *db, char *monitordb) {
|
||||||
char dbName[TSDB_DB_NAME_LEN + 1] = {0};
|
char dbName[TSDB_DB_NAME_LEN + 1] = {0};
|
||||||
assert(0);
|
extractDBName(db, dbName);
|
||||||
// extractDBName(db, dbName);
|
|
||||||
|
|
||||||
size_t len = strlen(dbName);
|
size_t len = strlen(dbName);
|
||||||
return (strncasecmp(dbName, monitordb, len) == 0 && len == strlen(monitordb));
|
return (strncasecmp(dbName, monitordb, len) == 0 && len == strlen(monitordb));
|
||||||
|
@ -436,7 +438,7 @@ static int32_t mgmtGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn)
|
||||||
|
|
||||||
pShow->bytes[cols] = 8;
|
pShow->bytes[cols] = 8;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP;
|
pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP;
|
||||||
strcpy(pSchema[cols].name, "created time");
|
strcpy(pSchema[cols].name, "created_time");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
|
|
|
@ -331,7 +331,7 @@ static int32_t mgmtGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCo
|
||||||
|
|
||||||
pShow->bytes[cols] = 12;
|
pShow->bytes[cols] = 12;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
||||||
strcpy(pSchema[cols].name, "sync status");
|
strcpy(pSchema[cols].name, "sync_status");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
|
|
|
@ -508,7 +508,7 @@ static int32_t mgmtGetShowSuperTableMeta(STableMetaMsg *pMeta, SShowObj *pShow,
|
||||||
|
|
||||||
pShow->bytes[cols] = 8;
|
pShow->bytes[cols] = 8;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP;
|
pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP;
|
||||||
strcpy(pSchema[cols].name, "create time");
|
strcpy(pSchema[cols].name, "create_time");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
|
|
|
@ -198,13 +198,13 @@ int32_t mgmtGetShowTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn)
|
||||||
|
|
||||||
pShow->bytes[cols] = TSDB_TABLE_NAME_LEN;
|
pShow->bytes[cols] = TSDB_TABLE_NAME_LEN;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
||||||
strcpy(pSchema[cols].name, "table name");
|
strcpy(pSchema[cols].name, "table_name");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
pShow->bytes[cols] = 8;
|
pShow->bytes[cols] = 8;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP;
|
pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP;
|
||||||
strcpy(pSchema[cols].name, "create time");
|
strcpy(pSchema[cols].name, "created_time");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ int32_t mgmtGetShowTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn)
|
||||||
|
|
||||||
pShow->bytes[cols] = TSDB_TABLE_NAME_LEN;
|
pShow->bytes[cols] = TSDB_TABLE_NAME_LEN;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
||||||
strcpy(pSchema[cols].name, "super table name");
|
strcpy(pSchema[cols].name, "stable_name");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
|
|
|
@ -193,7 +193,7 @@ static int32_t mgmtGetUserMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCon
|
||||||
|
|
||||||
pShow->bytes[cols] = 8;
|
pShow->bytes[cols] = 8;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP;
|
pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP;
|
||||||
strcpy(pSchema[cols].name, "created time");
|
strcpy(pSchema[cols].name, "created_time");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
|
|
|
@ -233,7 +233,7 @@ int32_t mgmtGetVgroupMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) {
|
||||||
|
|
||||||
pShow->bytes[cols] = 9;
|
pShow->bytes[cols] = 9;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
||||||
strcpy(pSchema[cols].name, "vgroup status");
|
strcpy(pSchema[cols].name, "vgroup_status");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
|
@ -273,13 +273,13 @@ int32_t mgmtGetVgroupMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) {
|
||||||
|
|
||||||
pShow->bytes[cols] = 9;
|
pShow->bytes[cols] = 9;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
||||||
strcpy(pSchema[cols].name, "vnode status");
|
strcpy(pSchema[cols].name, "vnode_status");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
pShow->bytes[cols] = 16;
|
pShow->bytes[cols] = 16;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
||||||
strcpy(pSchema[cols].name, "public ip");
|
strcpy(pSchema[cols].name, "public_ip");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,5 +9,5 @@ INCLUDE_DIRECTORIES(inc)
|
||||||
IF ((TD_LINUX_64) OR (TD_LINUX_32 AND TD_ARM))
|
IF ((TD_LINUX_64) OR (TD_LINUX_32 AND TD_ARM))
|
||||||
AUX_SOURCE_DIRECTORY(src SRC)
|
AUX_SOURCE_DIRECTORY(src SRC)
|
||||||
ADD_LIBRARY(query ${SRC})
|
ADD_LIBRARY(query ${SRC})
|
||||||
TARGET_LINK_LIBRARIES(query util m rt)
|
TARGET_LINK_LIBRARIES(query tutil m rt)
|
||||||
ENDIF ()
|
ENDIF ()
|
|
@ -206,9 +206,10 @@ static FORCE_INLINE void taosCacheReleaseNode(SCacheObj *pObj, SCacheDataNode *p
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t size = pNode->size;
|
||||||
taosHashRemove(pObj->pHashTable, pNode->key, pNode->keySize);
|
taosHashRemove(pObj->pHashTable, pNode->key, pNode->keySize);
|
||||||
pTrace("key:%s is removed from cache,total:%d,size:%ldbytes", pNode->key, pObj->totalSize, pObj->totalSize);
|
|
||||||
|
|
||||||
|
pTrace("key:%s is removed from cache,total:%d,size:%ldbytes", pNode->key, pObj->totalSize, size);
|
||||||
free(pNode);
|
free(pNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -418,10 +419,10 @@ void *taosCachePut(void *handle, char *key, char *pData, int dataSize, int durat
|
||||||
if (pOld == NULL) { // do addedTime to cache
|
if (pOld == NULL) { // do addedTime to cache
|
||||||
pNode = taosAddToCacheImpl(pObj, key, keyLen, pData, dataSize, duration * 1000L);
|
pNode = taosAddToCacheImpl(pObj, key, keyLen, pData, dataSize, duration * 1000L);
|
||||||
if (NULL != pNode) {
|
if (NULL != pNode) {
|
||||||
pTrace("key:%s %p added into cache, addedTime:%" PRIu64 ", expireTime:%" PRIu64 ", cache total:%d, size:%" PRId64
|
pObj->totalSize += pNode->size;
|
||||||
" bytes, collision:%d",
|
|
||||||
key, pNode, pNode->addedTime, pNode->expiredTime, dataSize, pObj->totalSize,
|
pTrace("key:%s %p added into cache, added:%" PRIu64 ", expire:%" PRIu64 ", total:%d, size:%" PRId64 " bytes",
|
||||||
pObj->statistics.numOfCollision);
|
key, pNode, pNode->addedTime, pNode->expiredTime, pObj->totalSize, dataSize);
|
||||||
}
|
}
|
||||||
} else { // old data exists, update the node
|
} else { // old data exists, update the node
|
||||||
pNode = taosUpdateCacheImpl(pObj, pOld, key, keyLen, pData, dataSize, duration * 1000L);
|
pNode = taosUpdateCacheImpl(pObj, pOld, key, keyLen, pData, dataSize, duration * 1000L);
|
||||||
|
|
Loading…
Reference in New Issue