commit
f5c561aaea
|
@ -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]);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -900,174 +900,4 @@ void setDefaultCreateDbOption(SCreateDBInfo *pDBInfo) {
|
|||
pDBInfo->keep = NULL;
|
||||
|
||||
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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -28,47 +28,23 @@ int main(int argc, char *argv[]) {
|
|||
TAOS * taos;
|
||||
char qstr[1024];
|
||||
TAOS_RES *result;
|
||||
|
||||
|
||||
// connect to server
|
||||
if (argc < 2) {
|
||||
printf("please input server-ip \n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
taos_options(TSDB_OPTION_CONFIGDIR, "~/first/cfg");
|
||||
|
||||
// init TAOS
|
||||
taos_init();
|
||||
|
||||
|
||||
taos = taos_connect(argv[1], "root", "taosdata", NULL, 0);
|
||||
if (taos == NULL) {
|
||||
printf("failed to connect to server, reason:%s\n", taos_errstr(taos));
|
||||
exit(1);
|
||||
}
|
||||
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) {
|
||||
|
@ -76,19 +52,19 @@ int main(int argc, char *argv[]) {
|
|||
exit(1);
|
||||
}
|
||||
printf("success to create database\n");
|
||||
|
||||
|
||||
taos_query(taos, "use demo");
|
||||
|
||||
|
||||
// create table
|
||||
if (taos_query(taos, "create table m1 (ts timestamp, speed int)") != 0) {
|
||||
printf("failed to create table, reason:%s\n", taos_errstr(taos));
|
||||
exit(1);
|
||||
}
|
||||
printf("success to create table\n");
|
||||
|
||||
|
||||
// sleep for one second to make sure table is created on data node
|
||||
// taosMsleep(1000);
|
||||
|
||||
|
||||
// insert 10 records
|
||||
int i = 0;
|
||||
for (i = 0; i < 10; ++i) {
|
||||
|
@ -99,27 +75,27 @@ int main(int argc, char *argv[]) {
|
|||
//sleep(1);
|
||||
}
|
||||
printf("success to insert rows, total %d rows\n", i);
|
||||
|
||||
|
||||
// query the records
|
||||
sprintf(qstr, "SELECT * FROM m1");
|
||||
if (taos_query(taos, qstr) != 0) {
|
||||
printf("failed to select, reason:%s\n", taos_errstr(taos));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
result = taos_use_result(taos);
|
||||
|
||||
|
||||
if (result == NULL) {
|
||||
printf("failed to get result, reason:%s\n", taos_errstr(taos));
|
||||
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);
|
||||
char temp[256];
|
||||
|
||||
|
||||
printf("select * from table, result:\n");
|
||||
// fetch the records row by row
|
||||
while ((row = taos_fetch_row(result))) {
|
||||
|
@ -127,7 +103,7 @@ int main(int argc, char *argv[]) {
|
|||
taos_print_row(temp, row, fields, num_fields);
|
||||
printf("%s\n", temp);
|
||||
}
|
||||
|
||||
|
||||
taos_free_result(result);
|
||||
printf("====demo end====\n\n");
|
||||
return getchar();
|
||||
|
|
Loading…
Reference in New Issue