Merge remote-tracking branch 'origin/develop' into refactor/cluster
This commit is contained in:
commit
fb56f9dce7
10
.travis.yml
10
.travis.yml
|
@ -12,7 +12,7 @@ compiler:
|
|||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
# - osx
|
||||
|
||||
addons:
|
||||
coverity_scan:
|
||||
|
@ -59,8 +59,8 @@ matrix:
|
|||
- build-essential
|
||||
- cmake
|
||||
|
||||
- os: osx
|
||||
addons:
|
||||
homebrew:
|
||||
- cmake
|
||||
# - os: osx
|
||||
# addons:
|
||||
# homebrew:
|
||||
# - cmake
|
||||
|
||||
|
|
|
@ -134,6 +134,7 @@ void tscFieldInfoSetBinExpr(SFieldInfo* pFieldInfo, int32_t index, SSqlFunctionE
|
|||
void tscFieldInfoCalOffset(SQueryInfo* pQueryInfo);
|
||||
void tscFieldInfoCopy(SFieldInfo* src, SFieldInfo* dst, const int32_t* indexList, int32_t size);
|
||||
void tscFieldInfoCopyAll(SFieldInfo* dst, SFieldInfo* src);
|
||||
void tscFieldInfoUpdateOffsetForInterResult(SQueryInfo* pQueryInfo);
|
||||
|
||||
TAOS_FIELD* tscFieldInfoGetField(SQueryInfo* pQueryInfo, int32_t index);
|
||||
int16_t tscFieldInfoGetOffset(SQueryInfo* pQueryInfo, int32_t index);
|
||||
|
|
|
@ -468,7 +468,6 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo);
|
|||
extern void * pVnodeConn;
|
||||
extern void * pTscMgmtConn;
|
||||
extern void * tscCacheHandle;
|
||||
extern int32_t globalCode;
|
||||
extern int slaveIndex;
|
||||
extern void * tscTmr;
|
||||
extern void * tscQhandle;
|
||||
|
|
|
@ -200,7 +200,6 @@ void taos_fetch_rows_a(TAOS_RES *taosa, void (*fp)(void *, TAOS_RES *, int), voi
|
|||
SSqlObj *pSql = (SSqlObj *)taosa;
|
||||
if (pSql == NULL || pSql->signature != pSql) {
|
||||
tscError("sql object is NULL");
|
||||
// globalCode = TSDB_CODE_DISCONNECTED;
|
||||
tscQueueAsyncError(fp, param, TSDB_CODE_DISCONNECTED);
|
||||
return;
|
||||
}
|
||||
|
@ -232,7 +231,6 @@ void taos_fetch_row_a(TAOS_RES *taosa, void (*fp)(void *, TAOS_RES *, TAOS_ROW),
|
|||
SSqlObj *pSql = (SSqlObj *)taosa;
|
||||
if (pSql == NULL || pSql->signature != pSql) {
|
||||
tscError("sql object is NULL");
|
||||
// globalCode = TSDB_CODE_DISCONNECTED;
|
||||
tscQueueAsyncError(fp, param, TSDB_CODE_DISCONNECTED);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -343,10 +343,10 @@ static int tscBuildMetricTagProjectionResult(SSqlObj *pSql) {
|
|||
}
|
||||
|
||||
static int tscBuildMetricTagSqlFunctionResult(SSqlObj *pSql) {
|
||||
SSqlCmd *pCmd = &pSql->cmd;
|
||||
SSqlRes *pRes = &pSql->res;
|
||||
// SSqlCmd *pCmd = &pSql->cmd;
|
||||
// SSqlRes *pRes = &pSql->res;
|
||||
|
||||
SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(pCmd, 0);
|
||||
// SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(pCmd, 0);
|
||||
#if 0
|
||||
SSuperTableMeta *pMetricMeta = tscGetMetaInfo(pQueryInfo, 0)->pMetricMeta;
|
||||
int32_t totalNumOfResults = 1; // count function only produce one result
|
||||
|
|
|
@ -467,14 +467,14 @@ static int insertStmtExecute(STscStmt* stmt) {
|
|||
TAOS_STMT* taos_stmt_init(TAOS* taos) {
|
||||
STscObj* pObj = (STscObj*)taos;
|
||||
if (pObj == NULL || pObj->signature != pObj) {
|
||||
globalCode = TSDB_CODE_DISCONNECTED;
|
||||
terrno = TSDB_CODE_DISCONNECTED;
|
||||
tscError("connection disconnected");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
STscStmt* pStmt = calloc(1, sizeof(STscStmt));
|
||||
if (pStmt == NULL) {
|
||||
globalCode = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
terrno = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
tscError("failed to allocate memory for statement");
|
||||
return NULL;
|
||||
}
|
||||
|
@ -482,7 +482,7 @@ TAOS_STMT* taos_stmt_init(TAOS* taos) {
|
|||
SSqlObj* pSql = calloc(1, sizeof(SSqlObj));
|
||||
if (pSql == NULL) {
|
||||
free(pStmt);
|
||||
globalCode = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
terrno = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
tscError("failed to allocate memory for statement");
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -131,7 +131,7 @@ bool isValidSchema(struct SSchema* pSchema, int32_t numOfCols) {
|
|||
SSchema* tscGetTableColumnSchema(const STableMeta* pTableMeta, int32_t startCol) {
|
||||
assert(pTableMeta != NULL);
|
||||
|
||||
SSchema* pSchema = pTableMeta->schema;
|
||||
SSchema* pSchema = (SSchema*) pTableMeta->schema;
|
||||
#if 0
|
||||
if (pTableMeta->tableType == TSDB_CHILD_TABLE) {
|
||||
assert (pTableMeta->pSTable != NULL);
|
||||
|
|
|
@ -1420,10 +1420,10 @@ int tscProcessDescribeTableRsp(SSqlObj *pSql) {
|
|||
}
|
||||
|
||||
int tscProcessTagRetrieveRsp(SSqlObj *pSql) {
|
||||
SSqlCmd *pCmd = &pSql->cmd;
|
||||
// SSqlCmd *pCmd = &pSql->cmd;
|
||||
|
||||
SQueryInfo * pQueryInfo = tscGetQueryInfoDetail(pCmd, pCmd->clauseIndex);
|
||||
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||
// SQueryInfo * pQueryInfo = tscGetQueryInfoDetail(pCmd, pCmd->clauseIndex);
|
||||
// STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||
|
||||
int32_t numOfRes = 0;
|
||||
#if 0
|
||||
|
@ -1569,7 +1569,7 @@ int tscBuildMultiMeterMetaMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
|||
return pCmd->payloadLen;
|
||||
}
|
||||
|
||||
static int32_t tscEstimateMetricMetaMsgSize(SSqlCmd *pCmd) {
|
||||
static UNUSED_FUNC int32_t tscEstimateMetricMetaMsgSize(SSqlCmd *pCmd) {
|
||||
const int32_t defaultSize =
|
||||
minMsgSize() + sizeof(SSuperTableMetaMsg) + sizeof(SMgmtHead) + sizeof(int16_t) * TSDB_MAX_TAGS;
|
||||
SQueryInfo *pQueryInfo = tscGetQueryInfoDetail(pCmd, 0);
|
||||
|
@ -1884,10 +1884,10 @@ int tscProcessTableMetaRsp(SSqlObj *pSql) {
|
|||
* |...... 1B 1B 4B
|
||||
**/
|
||||
int tscProcessMultiMeterMetaRsp(SSqlObj *pSql) {
|
||||
uint8_t ieType;
|
||||
int32_t totalNum;
|
||||
int32_t i;
|
||||
|
||||
// uint8_t ieType;
|
||||
// int32_t totalNum;
|
||||
// int32_t i;
|
||||
#if 0
|
||||
char *rsp = pSql->res.pRsp;
|
||||
|
||||
ieType = *rsp;
|
||||
|
@ -1985,6 +1985,8 @@ int tscProcessMultiMeterMetaRsp(SSqlObj *pSql) {
|
|||
pSql->res.code = TSDB_CODE_SUCCESS;
|
||||
pSql->res.numOfTotal = i;
|
||||
tscTrace("%p load multi-metermeta resp complete num:%d", pSql, pSql->res.numOfTotal);
|
||||
#endif
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -2467,7 +2469,7 @@ int tscGetSTableVgroupInfo(SSqlObj *pSql, int32_t clauseIndex) {
|
|||
SSqlCmd *pCmd = &pSql->cmd;
|
||||
|
||||
//the query condition is serialized into pCmd->payload, we need to rebuild key for stable meta info in cache.
|
||||
bool required = false;
|
||||
// bool required = false;
|
||||
|
||||
SQueryInfo *pQueryInfo = tscGetQueryInfoDetail(pCmd, clauseIndex);
|
||||
if (pQueryInfo->pTableMetaInfo[0]->vgroupIdList != NULL) {
|
||||
|
|
|
@ -57,17 +57,17 @@ STscObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
|
|||
taos_init();
|
||||
|
||||
if (!validUserName(user)) {
|
||||
globalCode = TSDB_CODE_INVALID_ACCT;
|
||||
terrno = TSDB_CODE_INVALID_ACCT;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!validPassword(pass)) {
|
||||
globalCode = TSDB_CODE_INVALID_PASS;
|
||||
terrno = TSDB_CODE_INVALID_PASS;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (tscInitRpc(user, pass) != 0) {
|
||||
globalCode = TSDB_CODE_NETWORK_UNAVAIL;
|
||||
terrno = TSDB_CODE_NETWORK_UNAVAIL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -92,7 +92,7 @@ STscObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
|
|||
|
||||
STscObj *pObj = (STscObj *)calloc(1, sizeof(STscObj));
|
||||
if (NULL == pObj) {
|
||||
globalCode = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
terrno = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,7 @@ STscObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
|
|||
/* db name is too long */
|
||||
if (len > TSDB_DB_NAME_LEN) {
|
||||
free(pObj);
|
||||
globalCode = TSDB_CODE_INVALID_DB;
|
||||
terrno = TSDB_CODE_INVALID_DB;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -122,7 +122,7 @@ STscObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
|
|||
|
||||
SSqlObj *pSql = (SSqlObj *)calloc(1, sizeof(SSqlObj));
|
||||
if (NULL == pSql) {
|
||||
globalCode = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
terrno = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
free(pObj);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ STscObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
|
|||
|
||||
pSql->cmd.command = TSDB_SQL_CONNECT;
|
||||
if (TSDB_CODE_SUCCESS != tscAllocPayload(&pSql->cmd, TSDB_DEFAULT_PAYLOAD_SIZE)) {
|
||||
globalCode = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
terrno = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
free(pSql);
|
||||
free(pObj);
|
||||
return NULL;
|
||||
|
@ -303,7 +303,7 @@ int taos_query(TAOS *taos, const char *sqlstr) {
|
|||
TAOS_RES *taos_use_result(TAOS *taos) {
|
||||
STscObj *pObj = (STscObj *)taos;
|
||||
if (pObj == NULL || pObj->signature != pObj) {
|
||||
globalCode = TSDB_CODE_DISCONNECTED;
|
||||
terrno = TSDB_CODE_DISCONNECTED;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -535,11 +535,11 @@ static bool tscHashRemainDataInSubqueryResultSet(SSqlObj *pSql) {
|
|||
continue;
|
||||
}
|
||||
|
||||
SSqlRes *pRes1 = &pSql->pSubs[i]->res;
|
||||
// SSqlRes *pRes1 = &pSql->pSubs[i]->res;
|
||||
SSqlCmd *pCmd1 = &pSql->pSubs[i]->cmd;
|
||||
|
||||
SQueryInfo * pQueryInfo1 = tscGetQueryInfoDetail(pCmd1, pCmd1->clauseIndex);
|
||||
STableMetaInfo *pMetaInfo = tscGetMetaInfo(pQueryInfo1, 0);
|
||||
// STableMetaInfo *pMetaInfo = tscGetMetaInfo(pQueryInfo1, 0);
|
||||
|
||||
assert(pQueryInfo1->numOfTables == 1);
|
||||
|
||||
|
@ -576,7 +576,7 @@ static bool tscHashRemainDataInSubqueryResultSet(SSqlObj *pSql) {
|
|||
return hasData;
|
||||
}
|
||||
|
||||
static void **tscBuildResFromSubqueries(SSqlObj *pSql) {
|
||||
static UNUSED_FUNC void **tscBuildResFromSubqueries(SSqlObj *pSql) {
|
||||
SSqlRes *pRes = &pSql->res;
|
||||
|
||||
while (1) {
|
||||
|
@ -662,7 +662,7 @@ static void waitForRetrieveRsp(void *param, TAOS_RES *tres, int numOfRows) {
|
|||
TAOS_ROW taos_fetch_row(TAOS_RES *res) {
|
||||
SSqlObj *pSql = (SSqlObj *)res;
|
||||
if (pSql == NULL || pSql->signature != pSql) {
|
||||
globalCode = TSDB_CODE_DISCONNECTED;
|
||||
terrno = TSDB_CODE_DISCONNECTED;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -694,7 +694,7 @@ int taos_fetch_block(TAOS_RES *res, TAOS_ROW *rows) {
|
|||
int nRows = 0;
|
||||
|
||||
if (pSql == NULL || pSql->signature != pSql) {
|
||||
globalCode = TSDB_CODE_DISCONNECTED;
|
||||
terrno = TSDB_CODE_DISCONNECTED;
|
||||
*rows = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
@ -733,7 +733,7 @@ int taos_select_db(TAOS *taos, const char *db) {
|
|||
|
||||
STscObj *pObj = (STscObj *)taos;
|
||||
if (pObj == NULL || pObj->signature != pObj) {
|
||||
globalCode = TSDB_CODE_DISCONNECTED;
|
||||
terrno = TSDB_CODE_DISCONNECTED;
|
||||
return TSDB_CODE_DISCONNECTED;
|
||||
}
|
||||
|
||||
|
@ -1011,7 +1011,7 @@ int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields)
|
|||
int taos_validate_sql(TAOS *taos, const char *sql) {
|
||||
STscObj *pObj = (STscObj *)taos;
|
||||
if (pObj == NULL || pObj->signature != pObj) {
|
||||
globalCode = TSDB_CODE_DISCONNECTED;
|
||||
terrno = TSDB_CODE_DISCONNECTED;
|
||||
return TSDB_CODE_DISCONNECTED;
|
||||
}
|
||||
|
||||
|
@ -1143,7 +1143,7 @@ int taos_load_table_info(TAOS *taos, const char *tableNameList) {
|
|||
|
||||
STscObj *pObj = (STscObj *)taos;
|
||||
if (pObj == NULL || pObj->signature != pObj) {
|
||||
globalCode = TSDB_CODE_DISCONNECTED;
|
||||
terrno = TSDB_CODE_DISCONNECTED;
|
||||
return TSDB_CODE_DISCONNECTED;
|
||||
}
|
||||
|
||||
|
|
|
@ -99,14 +99,14 @@ void tscUpdateSubscriptionProgress(void* sub, int64_t uid, TSKEY ts) {
|
|||
static SSub* tscCreateSubscription(STscObj* pObj, const char* topic, const char* sql) {
|
||||
SSub* pSub = calloc(1, sizeof(SSub));
|
||||
if (pSub == NULL) {
|
||||
globalCode = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
terrno = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
tscError("failed to allocate memory for subscription");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SSqlObj* pSql = calloc(1, sizeof(SSqlObj));
|
||||
if (pSql == NULL) {
|
||||
globalCode = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
terrno = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
tscError("failed to allocate SSqlObj for subscription");
|
||||
goto failed;
|
||||
}
|
||||
|
@ -309,7 +309,7 @@ void tscSaveSubscriptionProgress(void* sub) {
|
|||
TAOS_SUB *taos_subscribe(TAOS *taos, int restart, const char* topic, const char *sql, TAOS_SUBSCRIBE_CALLBACK fp, void *param, int interval) {
|
||||
STscObj* pObj = (STscObj*)taos;
|
||||
if (pObj == NULL || pObj->signature != pObj) {
|
||||
globalCode = TSDB_CODE_DISCONNECTED;
|
||||
terrno = TSDB_CODE_DISCONNECTED;
|
||||
tscError("connection disconnected");
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -279,7 +279,7 @@ int32_t tscLaunchSecondPhaseSubqueries(SSqlObj* pSql) {
|
|||
assert(pSubQueryInfo->exprsInfo.numOfExprs == 1); // ts_comp query only requires one resutl columns
|
||||
taos_free_result(pPrevSub);
|
||||
|
||||
SSqlObj *pNew = createSubqueryObj(pSql, (int16_t) i, tscJoinQueryCallback, TSDB_SQL_SELECT, pSupporter, NULL);
|
||||
SSqlObj *pNew = createSubqueryObj(pSql, (int16_t) i, tscJoinQueryCallback, pSupporter, TSDB_SQL_SELECT, NULL);
|
||||
if (pNew == NULL) {
|
||||
tscDestroyJoinSupporter(pSupporter);
|
||||
success = false;
|
||||
|
@ -538,7 +538,7 @@ static void joinRetrieveCallback(void* param, TAOS_RES* tres, int numOfRows) {
|
|||
}
|
||||
|
||||
if (tscNonOrderedProjectionQueryOnSTable(pQueryInfo, 0) && numOfRows == 0) {
|
||||
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||
// STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||
assert(pQueryInfo->numOfTables == 1);
|
||||
|
||||
// for projection query, need to try next vnode if current vnode is exhausted
|
||||
|
@ -606,7 +606,7 @@ void tscFetchDatablockFromSubquery(SSqlObj* pSql) {
|
|||
SSqlRes *pRes = &pSql->pSubs[i]->res;
|
||||
SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(&pSql->pSubs[i]->cmd, 0);
|
||||
|
||||
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||
// STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||
|
||||
if (tscNonOrderedProjectionQueryOnSTable(pQueryInfo, 0)) {
|
||||
// if (pRes->row >= pRes->numOfRows && pTableMetaInfo->vnodeIndex < pTableMetaInfo->pMetricMeta->numOfVnodes &&
|
||||
|
@ -834,7 +834,7 @@ int32_t tscLaunchJoinSubquery(SSqlObj *pSql, int16_t tableIndex, SJoinSubquerySu
|
|||
}
|
||||
}
|
||||
|
||||
SSqlObj *pNew = createSubqueryObj(pSql, tableIndex, tscJoinQueryCallback, TSDB_SQL_SELECT, pSupporter, NULL);
|
||||
SSqlObj *pNew = createSubqueryObj(pSql, tableIndex, tscJoinQueryCallback, pSupporter, TSDB_SQL_SELECT, NULL);
|
||||
if (pNew == NULL) {
|
||||
return TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
}
|
||||
|
@ -1237,7 +1237,7 @@ static void tscAllDataRetrievedFromDnode(SRetrieveSupport *trsupport, SSqlObj* p
|
|||
SQueryInfo *pQueryInfo = tscGetQueryInfoDetail(&pSql->cmd, 0);
|
||||
|
||||
// data in from current vnode is stored in cache and disk
|
||||
uint32_t numOfRowsFromSubquery = trsupport->pExtMemBuffer[idx]->numOfTotalElems + trsupport->localBuffer->numOfElems;
|
||||
// uint32_t numOfRowsFromSubquery = trsupport->pExtMemBuffer[idx]->numOfTotalElems + trsupport->localBuffer->numOfElems;
|
||||
// tscTrace("%p sub:%p all data retrieved from ip:%u,vid:%d, numOfRows:%d, orderOfSub:%d", pPObj, pSql, pSvd->ip,
|
||||
// pSvd->vnode, numOfRowsFromSubquery, idx);
|
||||
|
||||
|
@ -1333,7 +1333,7 @@ static void tscRetrieveFromDnodeCallBack(void *param, TAOS_RES *tres, int numOfR
|
|||
SSqlRes * pRes = &pSql->res;
|
||||
SQueryInfo *pQueryInfo = tscGetQueryInfoDetail(&pSql->cmd, 0);
|
||||
|
||||
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||
// STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||
|
||||
// SVnodeSidList *vnodeInfo = tscGetVnodeSidList(pTableMetaInfo->pMetricMeta, idx);
|
||||
// SVnodeSidList *vnodeInfo = 0;
|
||||
|
@ -1409,10 +1409,10 @@ void tscRetrieveDataRes(void *param, TAOS_RES *tres, int code) {
|
|||
SSqlObj* pParentSql = trsupport->pParentSqlObj;
|
||||
SSqlObj* pSql = (SSqlObj *)tres;
|
||||
|
||||
STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(&pSql->cmd, 0, 0);
|
||||
// STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(&pSql->cmd, 0, 0);
|
||||
assert(pSql->cmd.numOfClause == 1 && pSql->cmd.pQueryInfo[0]->numOfTables == 1);
|
||||
|
||||
int32_t idx = pTableMetaInfo->vnodeIndex;
|
||||
// int32_t idx = pTableMetaInfo->vnodeIndex;
|
||||
|
||||
SVnodeSidList *vnodeInfo = NULL;
|
||||
SVnodeDesc * pSvd = NULL;
|
||||
|
@ -1459,7 +1459,7 @@ void tscRetrieveDataRes(void *param, TAOS_RES *tres, int code) {
|
|||
pState->code = -TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
trsupport->numOfRetry = MAX_NUM_OF_SUBQUERY_RETRY;
|
||||
} else {
|
||||
SQueryInfo *pNewQueryInfo = tscGetQueryInfoDetail(&pNew->cmd, 0);
|
||||
// SQueryInfo *pNewQueryInfo = tscGetQueryInfoDetail(&pNew->cmd, 0);
|
||||
// assert(pNewQueryInfo->pTableMetaInfo[0]->pTableMeta != NULL && pNewQueryInfo->pTableMetaInfo[0]->pMetricMeta != NULL);
|
||||
tscProcessSql(pNew);
|
||||
return;
|
||||
|
|
|
@ -33,7 +33,6 @@ void * pVMeterConn;
|
|||
void * pTscMgmtConn;
|
||||
void * pSlaveConn;
|
||||
void * tscCacheHandle;
|
||||
int32_t globalCode = 0;
|
||||
int slaveIndex;
|
||||
void * tscTmr;
|
||||
void * tscQhandle;
|
||||
|
|
|
@ -819,7 +819,7 @@ void tscCloseTscObj(STscObj* pObj) {
|
|||
pObj->signature = NULL;
|
||||
SSqlObj* pSql = pObj->pSql;
|
||||
if (pSql) {
|
||||
globalCode = pSql->res.code;
|
||||
terrno = pSql->res.code;
|
||||
}
|
||||
|
||||
taosTmrStopA(&(pObj->pTimer));
|
||||
|
@ -993,20 +993,6 @@ void tscFieldInfoCalOffset(SQueryInfo* pQueryInfo) {
|
|||
}
|
||||
|
||||
void tscFieldInfoUpdateOffsetForInterResult(SQueryInfo* pQueryInfo) {
|
||||
// SFieldInfo* pFieldInfo = &pQueryInfo->fieldsInfo;
|
||||
// if (pFieldInfo->numOfOutputCols == 0) {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// pFieldInfo->pOffset[0] = 0;
|
||||
//
|
||||
// /*
|
||||
// * the retTypeLen is used to store the intermediate result length
|
||||
// * for potential secondary merge exists
|
||||
// */
|
||||
// for (int32_t i = 1; i < pFieldInfo->numOfOutputCols; ++i) {
|
||||
// pFieldInfo->pOffset[i] = pFieldInfo->pOffset[i - 1] + tscSqlExprGet(pQueryInfo, i - 1)->resBytes;
|
||||
// }
|
||||
SSqlExprInfo* pExprInfo = &pQueryInfo->exprsInfo;
|
||||
if (pExprInfo->numOfExprs == 0) {
|
||||
return;
|
||||
|
@ -2167,7 +2153,7 @@ int16_t tscGetJoinTagColIndexByUid(STagCond* pTagCond, uint64_t uid) {
|
|||
|
||||
bool tscIsUpdateQuery(STscObj* pObj) {
|
||||
if (pObj == NULL || pObj->signature != pObj) {
|
||||
globalCode = TSDB_CODE_DISCONNECTED;
|
||||
terrno = TSDB_CODE_DISCONNECTED;
|
||||
return TSDB_CODE_DISCONNECTED;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ typedef struct SColumnInfoEx {
|
|||
void* pData; // the corresponding block data in memory
|
||||
} SColumnInfoEx;
|
||||
|
||||
int32_t extractTableName(const char *tableId, char *name);
|
||||
void extractTableName(const char *tableId, char *name);
|
||||
|
||||
char* extractDBName(const char *tableId, char *name);
|
||||
|
||||
|
|
|
@ -24,11 +24,11 @@ static FORCE_INLINE size_t copy(char* dst, const char* src, char delimiter) {
|
|||
return len;
|
||||
}
|
||||
|
||||
int32_t extractTableName(const char* tableId, char* name) {
|
||||
void 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);
|
||||
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]);
|
||||
|
|
|
@ -31,22 +31,7 @@
|
|||
#include "dnodeWrite.h"
|
||||
#include "vnode.h"
|
||||
|
||||
typedef struct {
|
||||
int32_t vgId; // global vnode group ID
|
||||
int32_t refCount; // reference count
|
||||
EVnodeStatus status; // status: master, slave, notready, deleting
|
||||
int64_t version;
|
||||
void * wworker;
|
||||
void * rworker;
|
||||
void * wal;
|
||||
void * tsdb;
|
||||
void * replica;
|
||||
void * events;
|
||||
void * cq; // continuous query
|
||||
} SVnodeObj;
|
||||
|
||||
static int32_t dnodeOpenVnodes();
|
||||
static void dnodeCleanupVnodes();
|
||||
static int32_t dnodeProcessCreateVnodeMsg(SRpcMsg *pMsg);
|
||||
static int32_t dnodeProcessDropVnodeMsg(SRpcMsg *pMsg);
|
||||
static int32_t dnodeProcessAlterVnodeMsg(SRpcMsg *pMsg);
|
||||
|
@ -56,7 +41,6 @@ static int32_t (*dnodeProcessMgmtMsgFp[TSDB_MSG_TYPE_MAX])(SRpcMsg *pMsg);
|
|||
static void dnodeSendStatusMsg(void *handle, void *tmrId);
|
||||
static void dnodeReadDnodeId();
|
||||
|
||||
void *tsDnodeVnodesHash = NULL;
|
||||
static void *tsDnodeTmr = NULL;
|
||||
static void *tsStatusTimer = NULL;
|
||||
static uint32_t tsRebootTime;
|
||||
|
@ -72,12 +56,6 @@ int32_t dnodeInitMgmt() {
|
|||
dnodeProcessMgmtMsgFp[TSDB_MSG_TYPE_MD_ALTER_STREAM] = dnodeProcessAlterStreamMsg;
|
||||
dnodeProcessMgmtMsgFp[TSDB_MSG_TYPE_MD_CONFIG_DNODE] = dnodeProcessConfigDnodeMsg;
|
||||
|
||||
tsDnodeVnodesHash = taosInitIntHash(TSDB_MAX_VNODES, sizeof(SVnodeObj), taosHashInt);
|
||||
if (tsDnodeVnodesHash == NULL) {
|
||||
dError("failed to init vnode list");
|
||||
return -1;
|
||||
}
|
||||
|
||||
tsRebootTime = taosGetTimestampSec();
|
||||
|
||||
tsDnodeTmr = taosTmrInit(100, 200, 60000, "DND-DM");
|
||||
|
@ -86,6 +64,10 @@ int32_t dnodeInitMgmt() {
|
|||
return -1;
|
||||
}
|
||||
|
||||
if ( vnodeInitModule() != TSDB_CODE_SUCCESS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int32_t code = dnodeOpenVnodes();
|
||||
if (code != TSDB_CODE_SUCCESS) {
|
||||
return -1;
|
||||
|
@ -106,11 +88,7 @@ void dnodeCleanupMgmt() {
|
|||
tsDnodeTmr = NULL;
|
||||
}
|
||||
|
||||
dnodeCleanupVnodes();
|
||||
if (tsDnodeVnodesHash == NULL) {
|
||||
taosCleanUpIntHash(tsDnodeVnodesHash);
|
||||
tsDnodeVnodesHash = NULL;
|
||||
}
|
||||
vnodeCleanupModule();
|
||||
}
|
||||
|
||||
void dnodeMgmt(SRpcMsg *pMsg) {
|
||||
|
@ -129,14 +107,6 @@ void dnodeMgmt(SRpcMsg *pMsg) {
|
|||
rpcFreeCont(pMsg->pCont);
|
||||
}
|
||||
|
||||
void *dnodeGetVnodeWworker(void *pVnode) {
|
||||
return ((SVnodeObj *)pVnode)->wworker;
|
||||
}
|
||||
|
||||
void *dnodeGetVnodeRworker(void *pVnode) {
|
||||
return ((SVnodeObj *)pVnode)->rworker;
|
||||
}
|
||||
|
||||
static int32_t dnodeOpenVnodes() {
|
||||
DIR *dir = opendir(tsVnodeDir);
|
||||
if (dir == NULL) {
|
||||
|
@ -166,13 +136,6 @@ static int32_t dnodeOpenVnodes() {
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
typedef void (*CleanupFp)(char *);
|
||||
static void dnodeCleanupVnodes() {
|
||||
int32_t num = taosGetIntHashSize(tsDnodeVnodesHash);
|
||||
taosCleanUpIntHashWithFp(tsDnodeVnodesHash, (CleanupFp)vnodeClose);
|
||||
dPrint("dnode mgmt is closed, vnodes:%d", num);
|
||||
}
|
||||
|
||||
static int32_t dnodeProcessCreateVnodeMsg(SRpcMsg *rpcMsg) {
|
||||
|
||||
SMDCreateVnodeMsg *pCreate = rpcMsg->pCont;
|
||||
|
@ -219,19 +182,6 @@ static int32_t dnodeProcessConfigDnodeMsg(SRpcMsg *pMsg) {
|
|||
return tsCfgDynamicOptions(pCfg->config);
|
||||
}
|
||||
|
||||
static void dnodeBuildVloadMsg(char *pNode, void * param) {
|
||||
SVnodeObj *pVnode = (SVnodeObj *) pNode;
|
||||
if (pVnode->status == TSDB_VN_STATUS_DELETING) return;
|
||||
|
||||
SDMStatusMsg *pStatus = param;
|
||||
if (pStatus->openVnodes >= TSDB_MAX_VNODES) return;
|
||||
|
||||
SVnodeLoad *pLoad = &pStatus->load[pStatus->openVnodes++];
|
||||
pLoad->vgId = htonl(pVnode->vgId);
|
||||
pLoad->vnode = htonl(pVnode->vgId);
|
||||
pLoad->status = pVnode->status;
|
||||
}
|
||||
|
||||
static void dnodeSendStatusMsg(void *handle, void *tmrId) {
|
||||
if (tsDnodeTmr == NULL) {
|
||||
dError("dnode timer is already released");
|
||||
|
@ -263,7 +213,7 @@ static void dnodeSendStatusMsg(void *handle, void *tmrId) {
|
|||
pStatus->diskAvailable = tsAvailDataDirGB;
|
||||
pStatus->alternativeRole = (uint8_t) tsAlternativeRole;
|
||||
|
||||
taosVisitIntHashWithFp(tsDnodeVnodesHash, dnodeBuildVloadMsg, pStatus);
|
||||
vnodeBuildStatusMsg(pStatus);
|
||||
contLen = sizeof(SDMStatusMsg) + pStatus->openVnodes * sizeof(SVnodeLoad);
|
||||
pStatus->openVnodes = htons(pStatus->openVnodes);
|
||||
|
||||
|
|
|
@ -127,7 +127,7 @@ void dnodeRead(SRpcMsg *pMsg) {
|
|||
}
|
||||
|
||||
void *dnodeAllocateRqueue(void *pVnode) {
|
||||
taos_queue *queue = taosOpenQueue(sizeof(SReadMsg));
|
||||
taos_queue queue = taosOpenQueue();
|
||||
if (queue == NULL) return NULL;
|
||||
|
||||
taosAddIntoQset(readQset, queue, pVnode);
|
||||
|
@ -144,6 +144,8 @@ void *dnodeAllocateRqueue(void *pVnode) {
|
|||
}
|
||||
}
|
||||
|
||||
dTrace("pVnode:%p, queue:%p is allocated", pVnode, queue);
|
||||
|
||||
return queue;
|
||||
}
|
||||
|
||||
|
|
|
@ -106,7 +106,7 @@ void dnodeWrite(SRpcMsg *pMsg) {
|
|||
|
||||
void *dnodeAllocateWqueue(void *pVnode) {
|
||||
SWriteWorker *pWorker = wWorkerPool.writeWorker + wWorkerPool.nextId;
|
||||
taos_queue *queue = taosOpenQueue();
|
||||
void *queue = taosOpenQueue();
|
||||
if (queue == NULL) return NULL;
|
||||
|
||||
if (pWorker->qset == NULL) {
|
||||
|
@ -129,7 +129,7 @@ void *dnodeAllocateWqueue(void *pVnode) {
|
|||
wWorkerPool.nextId = (wWorkerPool.nextId + 1) % wWorkerPool.max;
|
||||
}
|
||||
|
||||
dTrace("queue:%p is allocated for pVnode:%p", queue, pVnode);
|
||||
dTrace("pVnode:%p, queue:%p is allocated", pVnode, queue);
|
||||
|
||||
return queue;
|
||||
}
|
||||
|
|
|
@ -44,7 +44,6 @@ void *dnodeAllocateRqueue(void *pVnode);
|
|||
void dnodeFreeRqueue(void *rqueue);
|
||||
void dnodeSendWriteResponse(void *pVnode, void *param, int32_t code);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -25,6 +25,9 @@ typedef struct {
|
|||
void *rsp;
|
||||
} SRspRet;
|
||||
|
||||
int32_t vnodeInitModule();
|
||||
void vnodeCleanupModule();
|
||||
|
||||
int32_t vnodeCreate(SMDCreateVnodeMsg *pVnodeCfg);
|
||||
int32_t vnodeDrop(int32_t vgId);
|
||||
int32_t vnodeOpen(int32_t vnode, char *rootDir);
|
||||
|
@ -39,6 +42,7 @@ void* vnodeGetWal(void *pVnode);
|
|||
void* vnodeGetTsdb(void *pVnode);
|
||||
|
||||
int32_t vnodeProcessWrite(void *pVnode, int qtype, SWalHead *pHead, void *item);
|
||||
void vnodeBuildStatusMsg(void * param);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -1897,9 +1897,8 @@ static int32_t mgmtRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows,
|
|||
}
|
||||
|
||||
char tableName[TSDB_TABLE_NAME_LEN] = {0};
|
||||
memset(tableName, 0, tListLen(tableName));
|
||||
|
||||
// pattern compare for meter name
|
||||
// pattern compare for table name
|
||||
mgmtExtractTableName(pTable->info.tableId, tableName);
|
||||
|
||||
if (pShow->payloadLen > 0 &&
|
||||
|
|
|
@ -36,4 +36,6 @@ bool isWindowResClosed(SWindowResInfo *pWindowResInfo, int32_t slot);
|
|||
|
||||
void createQueryResultInfo(SQuery *pQuery, SWindowResult *pResultRow, bool isSTableQuery, SPosInfo *posInfo);
|
||||
|
||||
char *getPosInResultPage(SQueryRuntimeEnv *pRuntimeEnv, int32_t columnIndex, SWindowResult *pResult);
|
||||
|
||||
#endif // TDENGINE_QUERYUTIL_H
|
||||
|
|
|
@ -901,173 +901,3 @@ void setDefaultCreateDbOption(SCreateDBInfo *pDBInfo) {
|
|||
|
||||
memset(&pDBInfo->precision, 0, sizeof(SSQLToken));
|
||||
}
|
||||
|
||||
static bool isExprLeafNode(tSQLExpr* pExpr) {
|
||||
return (pExpr->pRight == NULL && pExpr->pLeft == NULL) &&
|
||||
(pExpr->nSQLOptr == TK_ID || (pExpr->nSQLOptr >= TK_BOOL && pExpr->nSQLOptr <= TK_NCHAR) ||
|
||||
pExpr->nSQLOptr == TK_SET);
|
||||
}
|
||||
|
||||
static bool isExprParentOfLeafNode(tSQLExpr* pExpr) {
|
||||
return (pExpr->pLeft != NULL && pExpr->pRight != NULL) &&
|
||||
(isExprLeafNode(pExpr->pLeft) && isExprLeafNode(pExpr->pRight));
|
||||
}
|
||||
|
||||
static int32_t tSQLExprNodeToString(tSQLExpr* pExpr, SStringBuilder* pBuilder) {
|
||||
if (pExpr->nSQLOptr == TK_ID) { // column name
|
||||
// strncpy(*str, pExpr->colInfo.z, pExpr->colInfo.n);
|
||||
// *str += pExpr->colInfo.n;
|
||||
|
||||
} else if (pExpr->nSQLOptr >= TK_BOOL && pExpr->nSQLOptr <= TK_STRING) { // value
|
||||
// *str += tVariantToString(&pExpr->val, *str);
|
||||
// taosStringBuilderAppendStringLen()
|
||||
} else if (pExpr->nSQLOptr >= TK_COUNT && pExpr->nSQLOptr <= TK_AVG_IRATE) {
|
||||
taosStringBuilderAppendStringLen(pBuilder, pExpr->operand.z, pExpr->operand.n);
|
||||
} else { // not supported operation
|
||||
assert(false);
|
||||
}
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static int32_t optrToString(tSQLExpr* pExpr, char** exprString) {
|
||||
const char* le = "<=";
|
||||
const char* ge = ">=";
|
||||
const char* ne = "<>";
|
||||
const char* likeOptr = "LIKE";
|
||||
|
||||
switch (pExpr->nSQLOptr) {
|
||||
case TK_LE: {
|
||||
*(int16_t*)(*exprString) = *(int16_t*)le;
|
||||
*exprString += 1;
|
||||
break;
|
||||
}
|
||||
case TK_GE: {
|
||||
*(int16_t*)(*exprString) = *(int16_t*)ge;
|
||||
*exprString += 1;
|
||||
break;
|
||||
}
|
||||
case TK_NE: {
|
||||
*(int16_t*)(*exprString) = *(int16_t*)ne;
|
||||
*exprString += 1;
|
||||
break;
|
||||
}
|
||||
|
||||
case TK_LT:
|
||||
*(*exprString) = '<';
|
||||
break;
|
||||
case TK_GT:
|
||||
*(*exprString) = '>';
|
||||
break;
|
||||
case TK_EQ:
|
||||
*(*exprString) = '=';
|
||||
break;
|
||||
case TK_PLUS:
|
||||
*(*exprString) = '+';
|
||||
break;
|
||||
case TK_MINUS:
|
||||
*(*exprString) = '-';
|
||||
break;
|
||||
case TK_STAR:
|
||||
*(*exprString) = '*';
|
||||
break;
|
||||
case TK_DIVIDE:
|
||||
*(*exprString) = '/';
|
||||
break;
|
||||
case TK_REM:
|
||||
*(*exprString) = '%';
|
||||
break;
|
||||
case TK_LIKE: {
|
||||
int32_t len = sprintf(*exprString, " %s ", likeOptr);
|
||||
*exprString += (len - 1);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return TSDB_CODE_INVALID_SQL;
|
||||
}
|
||||
|
||||
*exprString += 1;
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static int32_t tSQLExprLeafToBinary(tSQLExpr* pExpr, SStringBuilder* pBuilder) {
|
||||
if (!isExprParentOfLeafNode(pExpr)) {
|
||||
return TSDB_CODE_INVALID_SQL;
|
||||
}
|
||||
|
||||
tSQLExpr* pLeft = pExpr->pLeft;
|
||||
tSQLExpr* pRight = pExpr->pRight;
|
||||
|
||||
// if (addParentheses) {
|
||||
// *(*output) = '(';
|
||||
// *output += 1;
|
||||
// }
|
||||
|
||||
tSQLExprNodeToString(pLeft, pBuilder);
|
||||
tSQLExprNodeToString(pRight, pBuilder);
|
||||
|
||||
if (optrToString(pExpr, pBuilder) != TSDB_CODE_SUCCESS) {
|
||||
return TSDB_CODE_INVALID_SQL;
|
||||
}
|
||||
|
||||
// if (addParentheses) {
|
||||
// *(*output) = ')';
|
||||
// *output += 1;
|
||||
// }
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static void relToString(tSQLExpr* pExpr, SStringBuilder* pBuilder) {
|
||||
assert(pExpr->nSQLOptr == TK_AND || pExpr->nSQLOptr == TK_OR);
|
||||
|
||||
const char* or = "OR";
|
||||
const char*and = "AND";
|
||||
|
||||
// if (pQueryInfo->tagCond.relType == TSQL_STABLE_QTYPE_COND) {
|
||||
// if (pExpr->nSQLOptr == TK_AND) {
|
||||
// strcpy(*str, and);
|
||||
// *str += strlen(and);
|
||||
// } else {
|
||||
// strcpy(*str, or);
|
||||
// *str += strlen(or);
|
||||
// }
|
||||
}
|
||||
|
||||
static int32_t doSQLExprToBinary(tSQLExpr* pExpr, SStringBuilder* pBuilder) {
|
||||
if (pExpr == NULL) {
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
if (!isExprParentOfLeafNode(pExpr)) {
|
||||
// *(*str) = '(';
|
||||
// *str += 1;
|
||||
|
||||
int32_t ret = doSQLExprToBinary(pExpr->pLeft, pBuilder);
|
||||
if (ret != TSDB_CODE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = doSQLExprToBinary(pExpr->pRight, pBuilder);
|
||||
if (ret != TSDB_CODE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
relToString(pExpr, pBuilder);
|
||||
|
||||
// *(*str) = ')';
|
||||
// *str += 1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
return tSQLExprLeafToBinary(pExpr, pBuilder);
|
||||
}
|
||||
|
||||
// post order seralize to binary data
|
||||
int32_t tSQLExprToBinary(tSQLExpr* pExpr, SStringBuilder* pBuilder) {
|
||||
assert(pExpr != NULL && pBuilder != NULL);
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -47,7 +47,7 @@
|
|||
#define SET_SUPPLEMENT_SCAN_FLAG(runtime) ((runtime)->scanFlag = SUPPLEMENTARY_SCAN)
|
||||
#define SET_MASTER_SCAN_FLAG(runtime) ((runtime)->scanFlag = MASTER_SCAN)
|
||||
|
||||
#define GET_QINFO_ADDR(x) ((char *)(x)-offsetof(SQInfo, runtimeEnv))
|
||||
#define GET_QINFO_ADDR(x) ((void*)((char *)(x)-offsetof(SQInfo, runtimeEnv)))
|
||||
|
||||
#define GET_COL_DATA_POS(query, index, step) ((query)->pos + (index) * (step))
|
||||
|
||||
|
@ -1140,13 +1140,13 @@ static int32_t rowwiseApplyAllFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStat
|
|||
bool hasNull = hasNullValue(pQuery, k, pDataBlockInfo, pStatis, &pColStatis);
|
||||
char *dataBlock = getDataBlocks(pRuntimeEnv, &sasArray[k], k, pDataBlockInfo->size, pDataBlock);
|
||||
|
||||
setExecParams(pQuery, &pCtx[k], dataBlock, (char *)primaryKeyCol, pDataBlockInfo->size, functionId, pColStatis,
|
||||
setExecParams(pQuery, &pCtx[k], dataBlock, primaryKeyCol, pDataBlockInfo->size, functionId, pColStatis,
|
||||
hasNull, &sasArray[k], pRuntimeEnv->scanFlag);
|
||||
}
|
||||
|
||||
// set the input column data
|
||||
for (int32_t k = 0; k < pQuery->numOfFilterCols; ++k) {
|
||||
SSingleColumnFilterInfo *pFilterInfo = &pQuery->pFilterInfo[k];
|
||||
// SSingleColumnFilterInfo *pFilterInfo = &pQuery->pFilterInfo[k];
|
||||
assert(0);
|
||||
/*
|
||||
* NOTE: here the tbname/tags column cannot reach here, since it will never be a filter column,
|
||||
|
@ -1465,7 +1465,7 @@ static int32_t setupQueryRuntimeEnv(SQueryRuntimeEnv *pRuntimeEnv, SColumnModel
|
|||
pRuntimeEnv->offset[0] = 0;
|
||||
for (int32_t i = 0; i < pQuery->numOfOutputCols; ++i) {
|
||||
SSqlFuncExprMsg *pSqlFuncMsg = &pQuery->pSelectExpr[i].pBase;
|
||||
SColIndexEx * pColIndexEx = &pSqlFuncMsg->colInfo;
|
||||
// SColIndexEx * pColIndexEx = &pSqlFuncMsg->colInfo;
|
||||
|
||||
SQLFunctionCtx *pCtx = &pRuntimeEnv->pCtx[i];
|
||||
pCtx->inputType = GET_COLUMN_TYPE(pQuery, i);
|
||||
|
@ -1586,7 +1586,7 @@ static bool isQueryKilled(SQInfo *pQInfo) {
|
|||
#endif
|
||||
}
|
||||
|
||||
static bool setQueryKilled(SQInfo* pQInfo) {
|
||||
static void setQueryKilled(SQInfo* pQInfo) {
|
||||
pQInfo->code = TSDB_CODE_QUERY_CANCELLED;
|
||||
}
|
||||
|
||||
|
@ -1738,6 +1738,7 @@ static UNUSED_FUNC bool doGetQueryPos(TSKEY key, SQInfo *pQInfo, SPointInterpoSu
|
|||
}
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
static UNUSED_FUNC bool doSetDataInfo(SQInfo *pQInfo, SPointInterpoSupporter *pPointInterpSupporter, void *pMeterObj,
|
||||
|
@ -2924,11 +2925,11 @@ int32_t tableResultComparFn(const void *pLeft, const void *pRight, void *param)
|
|||
}
|
||||
|
||||
int32_t mergeResultsToGroup(SQInfo *pQInfo) {
|
||||
SQueryRuntimeEnv *pRuntimeEnv = &pQInfo->runtimeEnv;
|
||||
SQuery * pQuery = pRuntimeEnv->pQuery;
|
||||
// SQueryRuntimeEnv *pRuntimeEnv = &pQInfo->runtimeEnv;
|
||||
// SQuery * pQuery = pRuntimeEnv->pQuery;
|
||||
|
||||
int64_t st = taosGetTimestampMs();
|
||||
int32_t ret = TSDB_CODE_SUCCESS;
|
||||
// int64_t st = taosGetTimestampMs();
|
||||
// int32_t ret = TSDB_CODE_SUCCESS;
|
||||
|
||||
// while (pQInfo->subgroupIdx < pQInfo->pSidSet->numOfSubSet) {
|
||||
// int32_t start = pQInfo->pSidSet->starterPos[pQInfo->subgroupIdx];
|
||||
|
@ -2994,7 +2995,7 @@ void copyResToQueryResultBuf(SQInfo *pQInfo, SQuery *pQuery) {
|
|||
|
||||
for (int32_t i = 0; i < pQuery->numOfOutputCols; ++i) {
|
||||
int32_t bytes = pRuntimeEnv->pCtx[i].outputBytes;
|
||||
char * pDest = pQuery->sdata[i];
|
||||
char * pDest = pQuery->sdata[i]->data;
|
||||
|
||||
memcpy(pDest + offset * bytes, pData->data + pRuntimeEnv->offset[i] * pData->numOfElems,
|
||||
bytes * pData->numOfElems);
|
||||
|
@ -3033,7 +3034,7 @@ int64_t getNumOfResultWindowRes(SQueryRuntimeEnv *pRuntimeEnv, SWindowResult *pW
|
|||
return maxOutput;
|
||||
}
|
||||
|
||||
int32_t doMergeMetersResultsToGroupRes(SQInfo *pQInfo, STableDataInfo *pTableDataInfo, int32_t start, int32_t end) {
|
||||
UNUSED_FUNC int32_t doMergeMetersResultsToGroupRes(SQInfo *pQInfo, STableDataInfo *pTableDataInfo, int32_t start, int32_t end) {
|
||||
SQueryRuntimeEnv *pRuntimeEnv = &pQInfo->runtimeEnv;
|
||||
SQuery * pQuery = pQInfo->runtimeEnv.pQuery;
|
||||
|
||||
|
@ -3204,7 +3205,7 @@ int32_t flushFromResultBuf(SQInfo *pQInfo) {
|
|||
|
||||
void resetMergeResultBuf(SQuery *pQuery, SQLFunctionCtx *pCtx, SResultInfo *pResultInfo) {
|
||||
for (int32_t k = 0; k < pQuery->numOfOutputCols; ++k) {
|
||||
pCtx[k].aOutputBuf = pQuery->sdata[k] - pCtx[k].outputBytes;
|
||||
pCtx[k].aOutputBuf = pQuery->sdata[k]->data - pCtx[k].outputBytes;
|
||||
pCtx[k].size = 1;
|
||||
pCtx[k].startOffset = 0;
|
||||
pCtx[k].resultInfo = &pResultInfo[k];
|
||||
|
@ -3561,7 +3562,7 @@ void scanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
|
|||
}
|
||||
|
||||
// set the correct start position, and load the corresponding block in buffer for next round scan all data blocks.
|
||||
int32_t ret = tsdbDataBlockSeek(pRuntimeEnv->pQueryHandle, pos);
|
||||
/*int32_t ret =*/ tsdbDataBlockSeek(pRuntimeEnv->pQueryHandle, pos);
|
||||
|
||||
status = pQuery->status;
|
||||
pRuntimeEnv->windowResInfo.curIndex = activeSlot;
|
||||
|
@ -3582,7 +3583,7 @@ void scanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
|
|||
|
||||
pQuery->window.skey = skey;
|
||||
pQuery->window.ekey = pQuery->lastKey - step;
|
||||
tsdbpos_t current = tsdbDataBlockTell(pRuntimeEnv->pQueryHandle);
|
||||
/*tsdbpos_t current =*/ tsdbDataBlockTell(pRuntimeEnv->pQueryHandle);
|
||||
|
||||
doSingleMeterSupplementScan(pRuntimeEnv);
|
||||
|
||||
|
@ -3591,7 +3592,7 @@ void scanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
|
|||
pQuery->lastKey = lkey;
|
||||
pQuery->window.ekey = ekey;
|
||||
|
||||
STimeWindow win = {.skey = pQuery->window.skey, .ekey = pQuery->window.ekey};
|
||||
// STimeWindow win = {.skey = pQuery->window.skey, .ekey = pQuery->window.ekey};
|
||||
// tsdbResetQuery(pRuntimeEnv->pQueryHandle, &win, current, pQuery->order.order);
|
||||
// tsdbNextDataBlock(pRuntimeEnv->pQueryHandle);
|
||||
}
|
||||
|
@ -4020,7 +4021,7 @@ bool vnodeHasRemainResults(void *handle) {
|
|||
|
||||
// query has completed
|
||||
if (Q_STATUS_EQUAL(pQuery->status, QUERY_COMPLETED)) {
|
||||
TSKEY ekey = taosGetRevisedEndKey(pQuery->window.ekey, pQuery->order.order, pQuery->intervalTime,
|
||||
/*TSKEY ekey =*/ taosGetRevisedEndKey(pQuery->window.ekey, pQuery->order.order, pQuery->intervalTime,
|
||||
pQuery->slidingTimeUnit, pQuery->precision);
|
||||
// int32_t numOfTotal = taosGetNumOfResultWithInterpo(pInterpoInfo, (TSKEY
|
||||
// *)pRuntimeEnv->pInterpoBuf[0]->data,
|
||||
|
@ -4088,8 +4089,8 @@ static void doCopyQueryResultToMsg(SQInfo *pQInfo, int32_t numOfRows, char *data
|
|||
|
||||
int32_t vnodeQueryResultInterpolate(SQInfo *pQInfo, tFilePage **pDst, tFilePage **pDataSrc, int32_t numOfRows,
|
||||
int32_t *numOfInterpo) {
|
||||
SQueryRuntimeEnv *pRuntimeEnv = &pQInfo->runtimeEnv;
|
||||
SQuery * pQuery = pRuntimeEnv->pQuery;
|
||||
// SQueryRuntimeEnv *pRuntimeEnv = &pQInfo->runtimeEnv;
|
||||
// SQuery * pQuery = pRuntimeEnv->pQuery;
|
||||
#if 0
|
||||
while (1) {
|
||||
numOfRows = taosNumOfRemainPoints(&pRuntimeEnv->interpoInfo);
|
||||
|
@ -4390,8 +4391,8 @@ static int64_t queryOnDataBlocks(SQInfo *pQInfo) {
|
|||
static bool multimeterMultioutputHelper(SQInfo *pQInfo, bool *dataInDisk, bool *dataInCache, int32_t index,
|
||||
int32_t start) {
|
||||
// STableIdInfo **pMeterSidExtInfo = pQInfo->pMeterSidExtInfo;
|
||||
SQueryRuntimeEnv *pRuntimeEnv = &pQInfo->runtimeEnv;
|
||||
SQuery * pQuery = &pRuntimeEnv->pQuery;
|
||||
// SQueryRuntimeEnv *pRuntimeEnv = &pQInfo->runtimeEnv;
|
||||
// SQuery * pQuery = pRuntimeEnv->pQuery;
|
||||
#if 0
|
||||
setQueryStatus(pQuery, QUERY_NOT_COMPLETED);
|
||||
|
||||
|
@ -4438,7 +4439,7 @@ static bool multimeterMultioutputHelper(SQInfo *pQInfo, bool *dataInDisk, bool *
|
|||
|
||||
#endif
|
||||
|
||||
initCtxOutputBuf(pRuntimeEnv);
|
||||
// initCtxOutputBuf(pRuntimeEnv);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -5457,8 +5458,8 @@ static int32_t convertQueryMsg(SQueryTableMsg *pQueryMsg, SArray **pTableIdList,
|
|||
}
|
||||
|
||||
static int32_t buildAirthmeticExprFromMsg(SSqlFunctionExpr *pExpr, SQueryTableMsg *pQueryMsg) {
|
||||
SSqlBinaryExprInfo *pBinaryExprInfo = &pExpr->binExprInfo;
|
||||
SColumnInfo * pColMsg = pQueryMsg->colList;
|
||||
// SSqlBinaryExprInfo *pBinaryExprInfo = &pExpr->binExprInfo;
|
||||
// SColumnInfo * pColMsg = pQueryMsg->colList;
|
||||
#if 0
|
||||
tExprNode* pBinExpr = NULL;
|
||||
SSchema* pSchema = toSchema(pQueryMsg, pColMsg, pQueryMsg->numOfCols);
|
||||
|
@ -5874,7 +5875,7 @@ static bool isValidQInfo(void *param) {
|
|||
* pQInfo->signature may be changed by another thread, so we assign value of signature
|
||||
* into local variable, then compare by using local variable
|
||||
*/
|
||||
uint64_t sig = pQInfo->signature;
|
||||
uint64_t sig = (uint64_t) pQInfo->signature;
|
||||
return (sig == (uint64_t)pQInfo);
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,9 @@
|
|||
#include "tsdb.h"
|
||||
#include "tskiplist.h"
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wwrite-strings"
|
||||
|
||||
typedef struct ResultObj {
|
||||
int32_t numOfResult;
|
||||
char * resultName[64];
|
||||
|
|
|
@ -158,7 +158,7 @@ void loadDataTest() {
|
|||
for (int32_t i = 0; i < numOfTags; ++i) {
|
||||
int64_t* list = createTsList(num, start, step);
|
||||
tsBufAppend(pTSBuf, j, i, (const char*)list, num * sizeof(int64_t));
|
||||
printf("%d - %lld\n", i, list[0]);
|
||||
printf("%d - %" PRIu64 "\n", i, list[0]);
|
||||
|
||||
free(list);
|
||||
start += step * num;
|
||||
|
@ -195,7 +195,7 @@ void loadDataTest() {
|
|||
tsBufResetPos(pNewBuf);
|
||||
|
||||
int64_t s = taosGetTimestampUs();
|
||||
printf("start:%lld\n", s);
|
||||
printf("start:%" PRIu64 "\n", s);
|
||||
|
||||
int32_t x = 0;
|
||||
while (tsBufNextPos(pNewBuf)) {
|
||||
|
@ -204,11 +204,11 @@ void loadDataTest() {
|
|||
break;
|
||||
}
|
||||
|
||||
// printf("%d-%lld-%lld\n", elem.vnode, elem.tag, elem.ts);
|
||||
// printf("%d-%" PRIu64 "-%" PRIu64 "\n", elem.vnode, elem.tag, elem.ts);
|
||||
}
|
||||
|
||||
int64_t e = taosGetTimestampUs();
|
||||
printf("end:%lld, elapsed:%lld, total obj:%d\n", e, e - s, x);
|
||||
printf("end:%" PRIu64 ", elapsed:%" PRIu64 ", total obj:%d\n", e, e - s, x);
|
||||
}
|
||||
|
||||
void randomIncTsTest() {}
|
||||
|
@ -229,14 +229,14 @@ void TSTraverse() {
|
|||
for (int32_t i = 0; i < numOfTags; ++i) {
|
||||
int64_t* list = createTsList(num, start, step);
|
||||
tsBufAppend(pTSBuf, j, i, (const char*)list, num * sizeof(int64_t));
|
||||
printf("%d - %d - %lld, %lld\n", j, i, list[0], list[num - 1]);
|
||||
printf("%d - %d - %" PRIu64 ", %" PRIu64 "\n", j, i, list[0], list[num - 1]);
|
||||
|
||||
free(list);
|
||||
start += step * num;
|
||||
|
||||
list = createTsList(num, start, step);
|
||||
tsBufAppend(pTSBuf, j, i, (const char*)list, num * sizeof(int64_t));
|
||||
printf("%d - %d - %lld, %lld\n", j, i, list[0], list[num - 1]);
|
||||
printf("%d - %d - %" PRIu64 ", %" PRIu64 "\n", j, i, list[0], list[num - 1]);
|
||||
free(list);
|
||||
|
||||
start += step * num;
|
||||
|
@ -250,7 +250,7 @@ void TSTraverse() {
|
|||
////////////////////////////////////////////////////////////////////////////////////////
|
||||
// reverse traverse
|
||||
int64_t s = taosGetTimestampUs();
|
||||
printf("start:%lld\n", s);
|
||||
printf("start:%" PRIu64 "\n", s);
|
||||
|
||||
pTSBuf->cur.order = TSQL_SO_DESC;
|
||||
|
||||
|
@ -258,7 +258,7 @@ void TSTraverse() {
|
|||
int32_t x = 0;
|
||||
while (tsBufNextPos(pTSBuf)) {
|
||||
STSElem elem = tsBufGetElem(pTSBuf);
|
||||
// printf("%d-%lld-%lld\n", elem.vnode, elem.tag, elem.ts);
|
||||
// printf("%d-%" PRIu64 "-%" PRIu64 "\n", elem.vnode, elem.tag, elem.ts);
|
||||
}
|
||||
|
||||
// specify the data block with vnode and tags value
|
||||
|
@ -273,7 +273,7 @@ void TSTraverse() {
|
|||
int32_t totalOutput = 10;
|
||||
while (1) {
|
||||
STSElem elem = tsBufGetElem(pTSBuf);
|
||||
printf("%d-%lld-%lld\n", elem.vnode, elem.tag, elem.ts);
|
||||
printf("%d-%" PRIu64 "-%" PRIu64 "\n", elem.vnode, elem.tag, elem.ts);
|
||||
|
||||
if (!tsBufNextPos(pTSBuf)) {
|
||||
break;
|
||||
|
@ -303,7 +303,7 @@ void TSTraverse() {
|
|||
// complete forwards traverse
|
||||
while (tsBufNextPos(pTSBuf)) {
|
||||
STSElem elem = tsBufGetElem(pTSBuf);
|
||||
// printf("%d-%lld-%lld\n", elem.vnode, elem.tag, elem.ts);
|
||||
// printf("%d-%" PRIu64 "-%" PRIu64 "\n", elem.vnode, elem.tag, elem.ts);
|
||||
}
|
||||
|
||||
// specify the data block with vnode and tags value
|
||||
|
@ -318,7 +318,7 @@ void TSTraverse() {
|
|||
totalOutput = 10;
|
||||
while (1) {
|
||||
STSElem elem = tsBufGetElem(pTSBuf);
|
||||
printf("%d-%lld-%lld\n", elem.vnode, elem.tag, elem.ts);
|
||||
printf("%d-%" PRIu64 "-%" PRIu64 "\n", elem.vnode, elem.tag, elem.ts);
|
||||
|
||||
if (!tsBufNextPos(pTSBuf)) {
|
||||
break;
|
||||
|
@ -429,7 +429,7 @@ void mergeIdenticalVnodeBufferTest() {
|
|||
STSElem elem = tsBufGetElem(pTSBuf1);
|
||||
EXPECT_EQ(elem.vnode, 12);
|
||||
|
||||
printf("%d-%lld-%lld\n", elem.vnode, elem.tag, elem.ts);
|
||||
printf("%d-%" PRIu64 "-%" PRIu64 "\n", elem.vnode, elem.tag, elem.ts);
|
||||
}
|
||||
|
||||
tsBufDestory(pTSBuf1);
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
#include "tvariant.h"
|
||||
#include "ttokendef.h"
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wwrite-strings"
|
||||
|
||||
namespace {
|
||||
int32_t testValidateName(char* name) {
|
||||
SSQLToken token = {0};
|
||||
|
|
|
@ -98,7 +98,7 @@ SCacheObj *taosCacheInit(void *tmrCtrl, int64_t refreshTimeInSeconds);
|
|||
* @param keepTime survival time in second
|
||||
* @return cached element
|
||||
*/
|
||||
void *taosCachePut(SCacheObj *pCacheObj, char *key, void *pData, size_t dataSize, int keepTimeInSeconds);
|
||||
void *taosCachePut(SCacheObj *pCacheObj, const char *key, const void *pData, size_t dataSize, int keepTimeInSeconds);
|
||||
|
||||
/**
|
||||
* get data from cache
|
||||
|
|
|
@ -233,8 +233,8 @@ static FORCE_INLINE void taosCacheMoveToTrash(SCacheObj *pCacheObj, SCacheDataNo
|
|||
* @param dataSize
|
||||
* @return
|
||||
*/
|
||||
static SCacheDataNode *taosUpdateCacheImpl(SCacheObj *pCacheObj, SCacheDataNode *pNode, char *key, int32_t keyLen,
|
||||
void *pData, uint32_t dataSize, uint64_t duration) {
|
||||
static SCacheDataNode *taosUpdateCacheImpl(SCacheObj *pCacheObj, SCacheDataNode *pNode, const char *key, int32_t keyLen,
|
||||
const void *pData, uint32_t dataSize, uint64_t duration) {
|
||||
SCacheDataNode *pNewNode = NULL;
|
||||
|
||||
// only a node is not referenced by any other object, in-place update it
|
||||
|
@ -288,7 +288,7 @@ static SCacheDataNode *taosUpdateCacheImpl(SCacheObj *pCacheObj, SCacheDataNode
|
|||
* @param pNode
|
||||
* @return
|
||||
*/
|
||||
static FORCE_INLINE SCacheDataNode *taosAddToCacheImpl(SCacheObj *pCacheObj, char *key, size_t keyLen, const void *pData,
|
||||
static FORCE_INLINE SCacheDataNode *taosAddToCacheImpl(SCacheObj *pCacheObj, const char *key, size_t keyLen, const void *pData,
|
||||
size_t dataSize, uint64_t duration) {
|
||||
SCacheDataNode *pNode = taosCreateHashNode(key, keyLen, pData, dataSize, duration);
|
||||
if (pNode == NULL) {
|
||||
|
@ -401,7 +401,7 @@ SCacheObj *taosCacheInit(void *tmrCtrl, int64_t refreshTime) {
|
|||
return pCacheObj;
|
||||
}
|
||||
|
||||
void *taosCachePut(SCacheObj *pCacheObj, char *key, void *pData, size_t dataSize, int duration) {
|
||||
void *taosCachePut(SCacheObj *pCacheObj, const char *key, const void *pData, size_t dataSize, int duration) {
|
||||
SCacheDataNode *pNode;
|
||||
|
||||
if (pCacheObj == NULL || pCacheObj->pHashTable == NULL) {
|
||||
|
|
|
@ -117,7 +117,7 @@ int taosWriteQitem(taos_queue param, int type, void *item) {
|
|||
queue->numOfItems++;
|
||||
if (queue->qset) atomic_add_fetch_32(&queue->qset->numOfItems, 1);
|
||||
|
||||
//pTrace("item:%p is put into queue, items:%d", item, queue->numOfItems);
|
||||
//pTrace("item:%p is put into queue, type:%d items:%d", item, type, queue->numOfItems);
|
||||
|
||||
pthread_mutex_unlock(&queue->mutex);
|
||||
|
||||
|
@ -197,7 +197,7 @@ int taosGetQitem(taos_qall param, int *type, void **pitem) {
|
|||
*pitem = pNode->item;
|
||||
*type = pNode->type;
|
||||
num = 1;
|
||||
//pTrace("item:%p is fetched", *pitem);
|
||||
// pTrace("item:%p is fetched, type:%d", *pitem, *type);
|
||||
}
|
||||
|
||||
return num;
|
||||
|
|
|
@ -645,7 +645,7 @@ void * taosbsearch(const void *key, const void *base, size_t nmemb, size_t size,
|
|||
}
|
||||
}
|
||||
|
||||
if ((*compar)(key, elePtrAt(base, size, idx) < 0)) {
|
||||
if ((*compar)(key, elePtrAt(base, size, idx)) < 0) {
|
||||
return elePtrAt(base, size, idx);
|
||||
} else {
|
||||
if (idx + 1 > nmemb - 1) {
|
||||
|
|
|
@ -22,15 +22,15 @@ TEST(testCase, client_cache_test) {
|
|||
void* tscTmr = taosTmrInit (tsMaxMgmtConnections*2, 200, 6000, "TSC");
|
||||
SCacheObj* tscCacheHandle = taosCacheInit(tscTmr, REFRESH_TIME_IN_SEC);
|
||||
|
||||
char* key1 = "test1";
|
||||
char* data1 = "test11";
|
||||
const char* key1 = "test1";
|
||||
char data1[] = "test11";
|
||||
|
||||
char* cachedObj = (char*) taosCachePut(tscCacheHandle, key1, data1, strlen(data1), 1);
|
||||
sleep(REFRESH_TIME_IN_SEC+1);
|
||||
|
||||
printf("obj is still valid: %s\n", cachedObj);
|
||||
|
||||
char* data2 = "test22";
|
||||
char data2[] = "test22";
|
||||
taosCacheRelease(tscCacheHandle, (void**) &cachedObj, false);
|
||||
|
||||
/* the object is cleared by cache clean operation */
|
||||
|
@ -43,8 +43,8 @@ TEST(testCase, client_cache_test) {
|
|||
|
||||
getchar();
|
||||
|
||||
char* key3 = "test2";
|
||||
char* data3 = "kkkkkkk";
|
||||
const char* key3 = "test2";
|
||||
const char* data3 = "kkkkkkk";
|
||||
|
||||
char* cachedObj2 = (char*) taosCachePut(tscCacheHandle, key3, data3, strlen(data3), 1);
|
||||
printf("%s\n", cachedObj2);
|
||||
|
@ -55,11 +55,11 @@ TEST(testCase, client_cache_test) {
|
|||
char* d = (char*) taosCacheAcquireByName(tscCacheHandle, key3);
|
||||
// assert(d == NULL);
|
||||
|
||||
char* key5 = "test5";
|
||||
char* data5 = "data5kkkkk";
|
||||
char key5[] = "test5";
|
||||
char data5[] = "data5kkkkk";
|
||||
cachedObj2 = (char*) taosCachePut(tscCacheHandle, key5, data5, strlen(data5), 20);
|
||||
|
||||
char* data6= "new Data after updated";
|
||||
const char* data6= "new Data after updated";
|
||||
taosCacheRelease(tscCacheHandle, (void**) &cachedObj2, false);
|
||||
|
||||
cachedObj2 = (char*) taosCachePut(tscCacheHandle, key5, data6, strlen(data6), 20);
|
||||
|
@ -67,7 +67,7 @@ TEST(testCase, client_cache_test) {
|
|||
|
||||
taosCacheRelease(tscCacheHandle, (void**) &cachedObj2, true);
|
||||
|
||||
char* data7 = "add call update procedure";
|
||||
const char* data7 = "add call update procedure";
|
||||
cachedObj2 = (char*) taosCachePut(tscCacheHandle, key5, data7, strlen(data7), 20);
|
||||
printf("%s\n=======================================\n\n", cachedObj2);
|
||||
|
||||
|
@ -76,8 +76,8 @@ TEST(testCase, client_cache_test) {
|
|||
taosCacheRelease(tscCacheHandle, (void**) &cachedObj2, true);
|
||||
taosCacheRelease(tscCacheHandle, (void**) &cc, false);
|
||||
|
||||
char* data8 = "ttft";
|
||||
char* key6 = "key6";
|
||||
const char* data8 = "ttft";
|
||||
const char* key6 = "key6";
|
||||
|
||||
char* ft = (char*) taosCachePut(tscCacheHandle, key6, data8, strlen(data8), 20);
|
||||
taosCacheRelease(tscCacheHandle, (void**) &ft, false);
|
||||
|
@ -86,7 +86,7 @@ TEST(testCase, client_cache_test) {
|
|||
* 140ns
|
||||
*/
|
||||
uint64_t startTime = taosGetTimestampUs();
|
||||
printf("Cache Performance Test\nstart time:%lld\n", startTime);
|
||||
printf("Cache Performance Test\nstart time:%" PRIu64 "\n", startTime);
|
||||
for(int32_t i=0; i<1000; ++i) {
|
||||
char* dd = (char*) taosCacheAcquireByName(tscCacheHandle, key6);
|
||||
if (dd != NULL) {
|
||||
|
@ -101,7 +101,7 @@ TEST(testCase, client_cache_test) {
|
|||
uint64_t endTime = taosGetTimestampUs();
|
||||
int64_t el = endTime - startTime;
|
||||
|
||||
printf("End of Test, %lld\nTotal Elapsed Time:%lld us.avg:%f us\n", endTime, el, el/1000.0);
|
||||
printf("End of Test, %" PRIu64 "\nTotal Elapsed Time:%" PRIu64 " us.avg:%f us\n", endTime, el, el/1000.0);
|
||||
|
||||
taosCacheCleanup(tscCacheHandle);
|
||||
}
|
||||
|
@ -125,7 +125,7 @@ TEST(testCase, cache_resize_test) {
|
|||
}
|
||||
uint64_t endTime = taosGetTimestampUs();
|
||||
|
||||
printf("add %d object cost:%lld us, avg:%f us\n", num, endTime - startTime, (endTime-startTime)/(double)num);
|
||||
printf("add %d object cost:%" PRIu64 " us, avg:%f us\n", num, endTime - startTime, (endTime-startTime)/(double)num);
|
||||
|
||||
startTime = taosGetTimestampUs();
|
||||
for(int32_t i = 0; i < num; ++i) {
|
||||
|
@ -134,7 +134,7 @@ TEST(testCase, cache_resize_test) {
|
|||
assert(k != 0);
|
||||
}
|
||||
endTime = taosGetTimestampUs();
|
||||
printf("retrieve %d object cost:%lld us,avg:%f\n", num, endTime - startTime, (endTime - startTime)/(double)num);
|
||||
printf("retrieve %d object cost:%" PRIu64 " us,avg:%f\n", num, endTime - startTime, (endTime - startTime)/(double)num);
|
||||
|
||||
taosCacheCleanup(pCache);
|
||||
taosMsleep(20000);
|
||||
|
|
|
@ -175,7 +175,7 @@ void stringKeySkiplistTest() {
|
|||
}
|
||||
|
||||
int64_t e = taosGetTimestampUs();
|
||||
printf("elapsed time:%lld us to insert %d data, avg:%f us\n", (e - s), total, (double)(e - s) / total);
|
||||
printf("elapsed time:%" PRIu64 " us to insert %d data, avg:%f us\n", (e - s), total, (double)(e - s) / total);
|
||||
|
||||
printf("level two------------------\n");
|
||||
tSkipListPrint(pSkipList, 1);
|
||||
|
@ -237,13 +237,13 @@ void skiplistPerformanceTest() {
|
|||
int64_t cur = taosGetTimestampMs();
|
||||
|
||||
int64_t elapsed = cur - prev;
|
||||
printf("add %d, elapsed time: %lld ms, avg elapsed:%f ms, total:%d\n", 100000, elapsed, elapsed / 100000.0, i);
|
||||
printf("add %d, elapsed time: %" PRIu64 " ms, avg elapsed:%f ms, total:%d\n", 100000, elapsed, elapsed / 100000.0, i);
|
||||
prev = cur;
|
||||
}
|
||||
}
|
||||
|
||||
int64_t e = taosGetTimestampMs();
|
||||
printf("total:%lld ms, avg:%f\n", e - s, (e - s) / (double)size);
|
||||
printf("total:%" PRIu64 " ms, avg:%f\n", e - s, (e - s) / (double)size);
|
||||
printf("max level of skiplist:%d, actually level:%d\n ", pSkipList->maxLevel, pSkipList->level);
|
||||
|
||||
assert(tSkipListGetSize(pSkipList) == size);
|
||||
|
|
|
@ -25,10 +25,32 @@
|
|||
#include "ttime.h"
|
||||
#include "ttimer.h"
|
||||
#include "twal.h"
|
||||
#include "dnode.h"
|
||||
#include "vnode.h"
|
||||
#include "vnodeInt.h"
|
||||
|
||||
extern void *tsDnodeVnodesHash;
|
||||
static void *tsDnodeVnodesHash;
|
||||
static void vnodeCleanUp(SVnodeObj *pVnode);
|
||||
static void vnodeBuildVloadMsg(char *pNode, void * param);
|
||||
|
||||
int32_t vnodeInitModule() {
|
||||
|
||||
vnodeInitWriteFp();
|
||||
|
||||
tsDnodeVnodesHash = taosInitIntHash(TSDB_MAX_VNODES, sizeof(SVnodeObj), taosHashInt);
|
||||
if (tsDnodeVnodesHash == NULL) {
|
||||
dError("failed to init vnode list");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
typedef void (*CleanupFp)(char *);
|
||||
void vnodeCleanupModule() {
|
||||
taosCleanUpIntHashWithFp(tsDnodeVnodesHash, (CleanupFp)vnodeClose);
|
||||
taosCleanUpIntHash(tsDnodeVnodesHash);
|
||||
}
|
||||
|
||||
int32_t vnodeCreate(SMDCreateVnodeMsg *pVnodeCfg) {
|
||||
int32_t code;
|
||||
|
@ -95,9 +117,6 @@ int32_t vnodeDrop(int32_t vgId) {
|
|||
int32_t vnodeOpen(int32_t vnode, char *rootDir) {
|
||||
char temp[TSDB_FILENAME_LEN];
|
||||
|
||||
static pthread_once_t vnodeInitWrite = PTHREAD_ONCE_INIT;
|
||||
pthread_once(&vnodeInitWrite, vnodeInitWriteFp);
|
||||
|
||||
SVnodeObj vnodeObj = {0};
|
||||
vnodeObj.vgId = vnode;
|
||||
vnodeObj.status = VN_STATUS_INIT;
|
||||
|
@ -194,6 +213,24 @@ void *vnodeGetTsdb(void *pVnode) {
|
|||
return ((SVnodeObj *)pVnode)->tsdb;
|
||||
}
|
||||
|
||||
void vnodeBuildStatusMsg(void *param) {
|
||||
SDMStatusMsg *pStatus = param;
|
||||
taosVisitIntHashWithFp(tsDnodeVnodesHash, vnodeBuildVloadMsg, pStatus);
|
||||
}
|
||||
|
||||
static void vnodeBuildVloadMsg(char *pNode, void * param) {
|
||||
SVnodeObj *pVnode = (SVnodeObj *) pNode;
|
||||
if (pVnode->status == VN_STATUS_DELETING) return;
|
||||
|
||||
SDMStatusMsg *pStatus = param;
|
||||
if (pStatus->openVnodes >= TSDB_MAX_VNODES) return;
|
||||
|
||||
SVnodeLoad *pLoad = &pStatus->load[pStatus->openVnodes++];
|
||||
pLoad->vgId = htonl(pVnode->vgId);
|
||||
pLoad->vnode = htonl(pVnode->vgId);
|
||||
pLoad->status = pVnode->status;
|
||||
}
|
||||
|
||||
static void vnodeCleanUp(SVnodeObj *pVnode) {
|
||||
taosDeleteIntHash(tsDnodeVnodesHash, pVnode->vgId);
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#include "vnode.h"
|
||||
#include "vnodeInt.h"
|
||||
|
||||
static int32_t (*vnodeProcessWriteMsgFp[TSDB_MSG_TYPE_MAX])(SVnodeObj *, void *, void*);
|
||||
static int32_t (*vnodeProcessWriteMsgFp[TSDB_MSG_TYPE_MAX])(SVnodeObj *, void *, SRspRet *);
|
||||
static int32_t vnodeProcessSubmitMsg(SVnodeObj *pVnode, void *pMsg, SRspRet *);
|
||||
static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pMsg, SRspRet *);
|
||||
static int32_t vnodeProcessDropTableMsg(SVnodeObj *pVnode, void *pMsg, SRspRet *);
|
||||
|
|
|
@ -183,7 +183,7 @@ tsdb_repo_t *tsdbOpenRepo(char *tsdbDir) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
STsdbRepo *pRepo = (STsdbRepo *)malloc(sizeof(STsdbRepo));
|
||||
STsdbRepo *pRepo = (STsdbRepo *)calloc(1, sizeof(STsdbRepo));
|
||||
if (pRepo == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -301,6 +301,7 @@ tsdb_query_handle_t *tsdbQueryByTableId(tsdb_repo_t* tsdb, STsdbQueryCond *pCond
|
|||
.pCompInfo = calloc(1, 1024),
|
||||
};
|
||||
|
||||
assert(info.pTableObj != NULL);
|
||||
taosArrayPush(pQueryHandle->pTableCheckInfo, &info);
|
||||
}
|
||||
|
||||
|
@ -1008,17 +1009,21 @@ SArray *tsdbRetrieveDataBlock(tsdb_query_handle_t *pQueryHandle, SArray *pIdList
|
|||
}
|
||||
}
|
||||
|
||||
int32_t tsdbResetQuery(tsdb_query_handle_t *pQueryHandle, STimeWindow *window, tsdbpos_t position, int16_t order) {}
|
||||
int32_t tsdbResetQuery(tsdb_query_handle_t *pQueryHandle, STimeWindow *window, tsdbpos_t position, int16_t order) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t tsdbDataBlockSeek(tsdb_query_handle_t *pQueryHandle, tsdbpos_t pos) {}
|
||||
int32_t tsdbDataBlockSeek(tsdb_query_handle_t *pQueryHandle, tsdbpos_t pos) { return 0;}
|
||||
|
||||
tsdbpos_t tsdbDataBlockTell(tsdb_query_handle_t *pQueryHandle) { return NULL; }
|
||||
|
||||
SArray *tsdbRetrieveDataRow(tsdb_query_handle_t *pQueryHandle, SArray *pIdList, SQueryRowCond *pCond) {}
|
||||
SArray *tsdbRetrieveDataRow(tsdb_query_handle_t *pQueryHandle, SArray *pIdList, SQueryRowCond *pCond) { return NULL;}
|
||||
|
||||
tsdb_query_handle_t *tsdbQueryFromTagConds(STsdbQueryCond *pCond, int16_t stableId, const char *pTagFilterStr) {}
|
||||
tsdb_query_handle_t *tsdbQueryFromTagConds(STsdbQueryCond *pCond, int16_t stableId, const char *pTagFilterStr) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SArray *tsdbGetTableList(tsdb_query_handle_t *pQueryHandle) {}
|
||||
SArray *tsdbGetTableList(tsdb_query_handle_t *pQueryHandle) { return NULL; }
|
||||
|
||||
static SArray* createTableIdArrayList(STsdbRepo* tsdb, int64_t uid) {
|
||||
STable* pTable = tsdbGetTableByUid(tsdbGetMeta(tsdb), uid);
|
||||
|
@ -1048,7 +1053,7 @@ typedef struct SSyntaxTreeFilterSupporter {
|
|||
* convert the result pointer to STabObj instead of tSkipListNode
|
||||
* @param pRes
|
||||
*/
|
||||
static void tansformQueryResult(SArray* pRes) {
|
||||
static UNUSED_FUNC void tansformQueryResult(SArray* pRes) {
|
||||
if (pRes == NULL || taosArrayGetSize(pRes) == 0) {
|
||||
return;
|
||||
}
|
||||
|
@ -1300,10 +1305,10 @@ bool tSkipListNodeFilterCallback(const void* pNode, void* param) {
|
|||
}
|
||||
|
||||
static int32_t doQueryTableList(STable* pSTable, SArray* pRes, const char* pCond) {
|
||||
STColumn* stcol = schemaColAt(pSTable->tagSchema, 0);
|
||||
// STColumn* stcol = schemaColAt(pSTable->tagSchema, 0);
|
||||
|
||||
tExprNode* pExpr = NULL;
|
||||
tSQLBinaryExprFromString(&pExpr, stcol, schemaNCols(pSTable->tagSchema), pCond, strlen(pCond));
|
||||
// tSQLBinaryExprFromString(&pExpr, stcol, schemaNCols(pSTable->tagSchema), (char*) pCond, strlen(pCond));
|
||||
|
||||
// failed to build expression, no result, return immediately
|
||||
if (pExpr == NULL) {
|
||||
|
@ -1314,18 +1319,18 @@ static int32_t doQueryTableList(STable* pSTable, SArray* pRes, const char* pCond
|
|||
}
|
||||
|
||||
// query according to the binary expression
|
||||
SSyntaxTreeFilterSupporter s = {.pTagSchema = stcol, .numOfTags = schemaNCols(pSTable->tagSchema)};
|
||||
|
||||
SBinaryFilterSupp supp = {
|
||||
.fp = (__result_filter_fn_t)tSkipListNodeFilterCallback,
|
||||
.setupInfoFn = (__do_filter_suppl_fn_t)filterPrepare,
|
||||
.pExtInfo = &s
|
||||
};
|
||||
|
||||
tSQLBinaryExprTraverse(pExpr, pSTable->pIndex, pRes, &supp);
|
||||
tExprTreeDestroy(&pExpr, tSQLListTraverseDestroyInfo);
|
||||
|
||||
tansformQueryResult(pRes);
|
||||
// SSyntaxTreeFilterSupporter s = {.pTagSchema = stcol, .numOfTags = schemaNCols(pSTable->tagSchema)};
|
||||
//
|
||||
// SBinaryFilterSupp supp = {
|
||||
// .fp = (__result_filter_fn_t)tSkipListNodeFilterCallback,
|
||||
// .setupInfoFn = (__do_filter_suppl_fn_t)filterPrepare,
|
||||
// .pExtInfo = &s
|
||||
// };
|
||||
//
|
||||
// tSQLBinaryExprTraverse(pExpr, pSTable->pIndex, pRes, &supp);
|
||||
// tExprTreeDestroy(&pExpr, tSQLListTraverseDestroyInfo);
|
||||
//
|
||||
// tansformQueryResult(pRes);
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -284,7 +284,7 @@ static int walRestoreWalFile(char *name, void *pVnode, int (*writeFp)(void *, SW
|
|||
}
|
||||
|
||||
// write into queue
|
||||
(*writeFp)(pVnode, buffer, TAOS_QTYPE_WAL);
|
||||
(*writeFp)(pVnode, pHead, TAOS_QTYPE_WAL);
|
||||
}
|
||||
|
||||
return code;
|
||||
|
|
|
@ -35,7 +35,6 @@ int main(int argc, char *argv[]) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
taos_options(TSDB_OPTION_CONFIGDIR, "~/first/cfg");
|
||||
// init TAOS
|
||||
taos_init();
|
||||
|
||||
|
@ -46,29 +45,6 @@ int main(int argc, char *argv[]) {
|
|||
}
|
||||
printf("success to connect to server\n");
|
||||
|
||||
// int32_t code = taos_query(taos, "insert into test.tm2 values(now, 1)(now+1m,2)(now+2m,3) (now+3m, 4) (now+4m, 5);");
|
||||
int32_t code = taos_query(taos, "insert into test.tm2 values(now, 99)");
|
||||
if (code != 0) {
|
||||
printf("failed to execute query, reason:%s\n", taos_errstr(taos));
|
||||
}
|
||||
|
||||
TAOS_RES* res = taos_use_result(taos);
|
||||
TAOS_ROW row = NULL;
|
||||
char buf[512] = {0};
|
||||
|
||||
int32_t numOfFields = taos_num_fields(res);
|
||||
TAOS_FIELD* pFields = taos_fetch_fields(res);
|
||||
|
||||
while((row = taos_fetch_row(res)) != NULL) {
|
||||
taos_print_row(buf, row, pFields, numOfFields);
|
||||
printf("%s\n", buf);
|
||||
memset(buf, 0, 512);
|
||||
}
|
||||
|
||||
taos_close(taos);
|
||||
|
||||
getchar();
|
||||
return 0;
|
||||
|
||||
taos_query(taos, "drop database demo");
|
||||
if (taos_query(taos, "create database demo") != 0) {
|
||||
|
@ -114,7 +90,7 @@ int main(int argc, char *argv[]) {
|
|||
exit(1);
|
||||
}
|
||||
|
||||
// TAOS_ROW row;
|
||||
TAOS_ROW row;
|
||||
int rows = 0;
|
||||
int num_fields = taos_field_count(taos);
|
||||
TAOS_FIELD *fields = taos_fetch_fields(result);
|
||||
|
|
Loading…
Reference in New Issue