Merge remote-tracking branch 'origin/develop' into feature/crash_gen

This commit is contained in:
Steven Li 2020-06-12 17:16:28 -07:00
commit 53892448df
40 changed files with 815 additions and 158 deletions

View File

@ -279,7 +279,8 @@ static void tscProcessCurrentUser(SSqlObj *pSql) {
pExpr->resType = TSDB_DATA_TYPE_BINARY; pExpr->resType = TSDB_DATA_TYPE_BINARY;
char* vx = calloc(1, pExpr->resBytes); char* vx = calloc(1, pExpr->resBytes);
STR_WITH_MAXSIZE_TO_VARSTR(vx, pSql->pTscObj->user, sizeof(pSql->pTscObj->user)); size_t size = sizeof(pSql->pTscObj->user);
STR_WITH_MAXSIZE_TO_VARSTR(vx, pSql->pTscObj->user, size);
tscSetLocalQueryResult(pSql, vx, pExpr->aliasName, pExpr->resType, pExpr->resBytes); tscSetLocalQueryResult(pSql, vx, pExpr->aliasName, pExpr->resType, pExpr->resBytes);
free(vx); free(vx);

View File

@ -209,6 +209,7 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
tscError("%p sql is already released", pSql->signature); tscError("%p sql is already released", pSql->signature);
return; return;
} }
if (pSql->signature != pSql) { if (pSql->signature != pSql) {
tscError("%p sql is already released, signature:%p", pSql, pSql->signature); tscError("%p sql is already released, signature:%p", pSql, pSql->signature);
return; return;
@ -217,10 +218,9 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
SSqlRes *pRes = &pSql->res; SSqlRes *pRes = &pSql->res;
SSqlCmd *pCmd = &pSql->cmd; SSqlCmd *pCmd = &pSql->cmd;
STscObj *pObj = pSql->pTscObj; STscObj *pObj = pSql->pTscObj;
// tscTrace("%p msg:%s is received from server", pSql, taosMsg[rpcMsg->msgType]);
if (pObj->signature != pObj) { if (pObj->signature != pObj || pSql->freed == 1) {
tscTrace("%p sql is already released or DB connection is closed, freed:%d pObj:%p signature:%p", pSql, pSql->freed, tscTrace("%p sqlObj needs to be released or DB connection is closed, freed:%d pObj:%p signature:%p", pSql, pSql->freed,
pObj, pObj->signature); pObj, pObj->signature);
tscFreeSqlObj(pSql); tscFreeSqlObj(pSql);
rpcFreeCont(rpcMsg->pCont); rpcFreeCont(rpcMsg->pCont);
@ -375,7 +375,7 @@ int tscProcessSql(SSqlObj *pSql) {
SQueryInfo * pQueryInfo = tscGetQueryInfoDetail(pCmd, pCmd->clauseIndex); SQueryInfo * pQueryInfo = tscGetQueryInfoDetail(pCmd, pCmd->clauseIndex);
STableMetaInfo *pTableMetaInfo = NULL; STableMetaInfo *pTableMetaInfo = NULL;
uint16_t type = 0; uint32_t type = 0;
if (pQueryInfo != NULL) { if (pQueryInfo != NULL) {
pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0); pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
@ -424,7 +424,7 @@ void tscKillSTableQuery(SSqlObj *pSql) {
* sub-queries not correctly released and master sql object of super table query reaches an abnormal state. * sub-queries not correctly released and master sql object of super table query reaches an abnormal state.
*/ */
pSql->pSubs[i]->res.code = TSDB_CODE_TSC_QUERY_CANCELLED; pSql->pSubs[i]->res.code = TSDB_CODE_TSC_QUERY_CANCELLED;
//taosStopRpcConn(pSql->pSubs[i]->thandle); // taosStopRpcConn(pSql->pSubs[i]->);
} }
/* /*
@ -1708,8 +1708,9 @@ int tscBuildSTableVgroupMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
for(int32_t i = 0; i < pQueryInfo->numOfTables; ++i) { for(int32_t i = 0; i < pQueryInfo->numOfTables; ++i) {
STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, i); STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, i);
tstrncpy(pMsg, pTableMetaInfo->name, sizeof(pTableMetaInfo->name)); size_t size = sizeof(pTableMetaInfo->name);
pMsg += sizeof(pTableMetaInfo->name); tstrncpy(pMsg, pTableMetaInfo->name, size);
pMsg += size;
} }
pCmd->msgType = TSDB_MSG_TYPE_CM_STABLE_VGROUP; pCmd->msgType = TSDB_MSG_TYPE_CM_STABLE_VGROUP;

View File

@ -219,6 +219,11 @@ void waitForQueryRsp(void *param, TAOS_RES *tres, int code) {
sem_post(&pSql->rspSem); sem_post(&pSql->rspSem);
} }
static void waitForRetrieveRsp(void *param, TAOS_RES *tres, int numOfRows) {
SSqlObj* pSql = (SSqlObj*) tres;
sem_post(&pSql->rspSem);
}
TAOS_RES* taos_query(TAOS *taos, const char *sqlstr) { TAOS_RES* taos_query(TAOS *taos, const char *sqlstr) {
STscObj *pObj = (STscObj *)taos; STscObj *pObj = (STscObj *)taos;
if (pObj == NULL || pObj->signature != pObj) { if (pObj == NULL || pObj->signature != pObj) {
@ -369,11 +374,6 @@ int taos_fetch_block_impl(TAOS_RES *res, TAOS_ROW *rows) {
return (pQueryInfo->order.order == TSDB_ORDER_DESC) ? pRes->numOfRows : -pRes->numOfRows; return (pQueryInfo->order.order == TSDB_ORDER_DESC) ? pRes->numOfRows : -pRes->numOfRows;
} }
static void waitForRetrieveRsp(void *param, TAOS_RES *tres, int numOfRows) {
SSqlObj* pSql = (SSqlObj*) tres;
sem_post(&pSql->rspSem);
}
TAOS_ROW taos_fetch_row(TAOS_RES *res) { TAOS_ROW taos_fetch_row(TAOS_RES *res) {
SSqlObj *pSql = (SSqlObj *)res; SSqlObj *pSql = (SSqlObj *)res;
if (pSql == NULL || pSql->signature != pSql) { if (pSql == NULL || pSql->signature != pSql) {
@ -476,7 +476,7 @@ int taos_select_db(TAOS *taos, const char *db) {
} }
// send free message to vnode to free qhandle and corresponding resources in vnode // send free message to vnode to free qhandle and corresponding resources in vnode
static void tscFreeQhandleInVnode(SSqlObj* pSql) { static bool tscFreeQhandleInVnode(SSqlObj* pSql) {
SSqlCmd* pCmd = &pSql->cmd; SSqlCmd* pCmd = &pSql->cmd;
SSqlRes* pRes = &pSql->res; SSqlRes* pRes = &pSql->res;
@ -496,10 +496,19 @@ static void tscFreeQhandleInVnode(SSqlObj* pSql) {
tscProcessSql(pSql); tscProcessSql(pSql);
// in case of sync model query, waits for response and then goes on // in case of sync model query, waits for response and then goes on
if (pSql->fp == waitForQueryRsp || pSql->fp == waitForRetrieveRsp) { // if (pSql->fp == waitForQueryRsp || pSql->fp == waitForRetrieveRsp) {
sem_wait(&pSql->rspSem); // sem_wait(&pSql->rspSem);
}
// tscFreeSqlObj(pSql);
// tscTrace("%p sqlObj is freed by app", pSql);
// } else {
tscTrace("%p sqlObj will be freed while rsp received", pSql);
// }
return true;
} }
return false;
} }
void taos_free_result(TAOS_RES *res) { void taos_free_result(TAOS_RES *res) {
@ -527,10 +536,10 @@ void taos_free_result(TAOS_RES *res) {
} }
pQueryInfo->type = TSDB_QUERY_TYPE_FREE_RESOURCE; pQueryInfo->type = TSDB_QUERY_TYPE_FREE_RESOURCE;
tscFreeQhandleInVnode(pSql); if (!tscFreeQhandleInVnode(pSql)) {
tscFreeSqlObj(pSql); tscFreeSqlObj(pSql);
tscTrace("%p sqlObj is freed by app", pSql);
tscTrace("%p sql result is freed by app", pSql); }
} }
// todo should not be used in async query // todo should not be used in async query

View File

@ -134,24 +134,6 @@ void tscGetDBInfoFromMeterId(char* tableId, char* db) {
db[0] = 0; db[0] = 0;
} }
//STableIdInfo* tscGetMeterSidInfo(SVnodeSidList* pSidList, int32_t idx) {
// if (pSidList == NULL) {
// tscError("illegal sidlist");
// return 0;
// }
//
// if (idx < 0 || idx >= pSidList->numOfSids) {
// int32_t sidRange = (pSidList->numOfSids > 0) ? (pSidList->numOfSids - 1) : 0;
//
// tscError("illegal sidIdx:%d, reset to 0, sidIdx range:%d-%d", idx, 0, sidRange);
// idx = 0;
// }
//
// assert(pSidList->pSidExtInfoList[idx] >= 0);
//
// return (STableIdInfo*)(pSidList->pSidExtInfoList[idx] + (char*)pSidList);
//}
bool tscIsTwoStageSTableQuery(SQueryInfo* pQueryInfo, int32_t tableIndex) { bool tscIsTwoStageSTableQuery(SQueryInfo* pQueryInfo, int32_t tableIndex) {
if (pQueryInfo == NULL) { if (pQueryInfo == NULL) {
return false; return false;
@ -176,8 +158,7 @@ bool tscIsTwoStageSTableQuery(SQueryInfo* pQueryInfo, int32_t tableIndex) {
return false; return false;
} }
if (((pQueryInfo->type & TSDB_QUERY_TYPE_STABLE_SUBQUERY) != TSDB_QUERY_TYPE_STABLE_SUBQUERY) && if (!TSDB_QUERY_HAS_TYPE(pQueryInfo->type, TSDB_QUERY_TYPE_STABLE_SUBQUERY) && pQueryInfo->command == TSDB_SQL_SELECT) {
pQueryInfo->command == TSDB_SQL_SELECT) {
return UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo); return UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo);
} }

View File

@ -1262,10 +1262,11 @@ bool taosCheckGlobalCfg() {
taosSetAllDebugFlag(); taosSetAllDebugFlag();
} }
if (tsLocalFqdn[0] == 0) if (tsLocalFqdn[0] == 0) {
taosGetFqdn(tsLocalEp); taosGetFqdn(tsLocalFqdn);
else }
strcpy(tsLocalEp, tsLocalFqdn);
strcpy(tsLocalEp, tsLocalFqdn);
snprintf(tsLocalEp + strlen(tsLocalEp), sizeof(tsLocalEp), ":%d", tsServerPort); snprintf(tsLocalEp + strlen(tsLocalEp), sizeof(tsLocalEp), ":%d", tsServerPort);
uPrint("localEp is: %s", tsLocalEp); uPrint("localEp is: %s", tsLocalEp);

View File

@ -83,7 +83,7 @@ void rpcSendResponse(const SRpcMsg *pMsg);
void rpcSendRedirectRsp(void *pConn, const SRpcIpSet *pIpSet); void rpcSendRedirectRsp(void *pConn, const SRpcIpSet *pIpSet);
int rpcGetConnInfo(void *thandle, SRpcConnInfo *pInfo); int rpcGetConnInfo(void *thandle, SRpcConnInfo *pInfo);
void rpcSendRecv(void *shandle, SRpcIpSet *pIpSet, const SRpcMsg *pReq, SRpcMsg *pRsp); void rpcSendRecv(void *shandle, SRpcIpSet *pIpSet, const SRpcMsg *pReq, SRpcMsg *pRsp);
void rpcReportProgress(void *pConn, char *pCont, int contLen); int rpcReportProgress(void *pConn, char *pCont, int contLen);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -235,12 +235,14 @@ static int32_t mnodeRetrieveConns(SShowObj *pShow, char *data, int32_t rows, voi
cols++; cols++;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pConnObj->user, sizeof(pConnObj->user)); size_t size = sizeof(pConnObj->user);
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pConnObj->user, size);
cols++; cols++;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
snprintf(ipStr, sizeof(ipStr), "%s:%u", taosIpStr(pConnObj->ip), pConnObj->port); snprintf(ipStr, sizeof(ipStr), "%s:%u", taosIpStr(pConnObj->ip), pConnObj->port);
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, ipStr, sizeof(ipStr)); size = sizeof(ipStr);
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, ipStr, size);
cols++; cols++;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
@ -358,12 +360,14 @@ static int32_t mnodeRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, v
cols++; cols++;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pConnObj->user, sizeof(pConnObj->user)); size_t size = sizeof(pConnObj->user);
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pConnObj->user, size);
cols++; cols++;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
snprintf(ipStr, sizeof(ipStr), "%s:%u", taosIpStr(pConnObj->ip), pConnObj->port); snprintf(ipStr, sizeof(ipStr), "%s:%u", taosIpStr(pConnObj->ip), pConnObj->port);
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, ipStr, sizeof(ipStr)); size = sizeof(ipStr);
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, ipStr, size);
cols++; cols++;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
@ -479,12 +483,14 @@ static int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, v
cols++; cols++;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pConnObj->user, sizeof(pConnObj->user)); size_t size = sizeof(pConnObj->user);
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pConnObj->user, size);
cols++; cols++;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
snprintf(ipStr, sizeof(ipStr), "%s:%u", taosIpStr(pConnObj->ip), pConnObj->port); snprintf(ipStr, sizeof(ipStr), "%s:%u", taosIpStr(pConnObj->ip), pConnObj->port);
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, ipStr, sizeof(ipStr)); size = sizeof(ipStr);
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, ipStr, size);
cols++; cols++;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;

View File

@ -451,7 +451,7 @@ static int32_t sdbInsertHash(SSdbTable *pTable, SSdbOper *pOper) {
pthread_mutex_unlock(&pTable->mutex); pthread_mutex_unlock(&pTable->mutex);
sdbTrace("table:%s, insert record:%s to hash, rowSize:%d vnumOfRows:%" PRId64 " version:%" PRIu64, pTable->tableName, sdbTrace("table:%s, insert record:%s to hash, rowSize:%d numOfRows:%" PRId64 " version:%" PRIu64, pTable->tableName,
sdbGetKeyStrFromObj(pTable, pOper->pObj), pOper->rowSize, pTable->numOfRows, sdbGetVersion()); sdbGetKeyStrFromObj(pTable, pOper->pObj), pOper->rowSize, pTable->numOfRows, sdbGetVersion());
(*pTable->insertFp)(pOper); (*pTable->insertFp)(pOper);
@ -475,7 +475,7 @@ static int32_t sdbDeleteHash(SSdbTable *pTable, SSdbOper *pOper) {
pTable->numOfRows--; pTable->numOfRows--;
pthread_mutex_unlock(&pTable->mutex); pthread_mutex_unlock(&pTable->mutex);
sdbTrace("table:%s, delete record:%s from hash, numOfRows:%d" PRId64 "version:%" PRIu64, pTable->tableName, sdbTrace("table:%s, delete record:%s from hash, numOfRows:%" PRId64 "version:%" PRIu64, pTable->tableName,
sdbGetKeyStrFromObj(pTable, pOper->pObj), pTable->numOfRows, sdbGetVersion()); sdbGetKeyStrFromObj(pTable, pOper->pObj), pTable->numOfRows, sdbGetVersion());
int8_t *updateEnd = pOper->pObj + pTable->refCountPos - 1; int8_t *updateEnd = pOper->pObj + pTable->refCountPos - 1;

View File

@ -1004,7 +1004,7 @@ static int32_t mnodeAddSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, SS
sizeof(SSchema) * pStable->numOfTags); sizeof(SSchema) * pStable->numOfTags);
memcpy(pStable->schema + pStable->numOfColumns, schema, sizeof(SSchema) * ncols); memcpy(pStable->schema + pStable->numOfColumns, schema, sizeof(SSchema) * ncols);
SSchema *tschema = (SSchema *) (pStable->schema + sizeof(SSchema) * pStable->numOfColumns); SSchema *tschema = (SSchema *) (pStable->schema + pStable->numOfColumns);
for (int32_t i = 0; i < ncols; i++) { for (int32_t i = 0; i < ncols; i++) {
tschema[i].colId = pStable->nextColId++; tschema[i].colId = pStable->nextColId++;
} }
@ -1770,7 +1770,8 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) {
return TSDB_CODE_MND_OUT_OF_MEMORY; return TSDB_CODE_MND_OUT_OF_MEMORY;
} }
tstrncpy(pCreateMsg->tableId, pInfo->tableId, sizeof(pInfo->tableId)); size_t size = sizeof(pInfo->tableId);
tstrncpy(pCreateMsg->tableId, pInfo->tableId, size);
tstrncpy(pCreateMsg->db, pMsg->pDb->name, sizeof(pCreateMsg->db)); tstrncpy(pCreateMsg->db, pMsg->pDb->name, sizeof(pCreateMsg->db));
pCreateMsg->igExists = 1; pCreateMsg->igExists = 1;
pCreateMsg->getMeta = 1; pCreateMsg->getMeta = 1;

View File

@ -315,7 +315,8 @@ static int32_t mnodeRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, voi
cols = 0; cols = 0;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pUser->user, sizeof(pUser->user)); size_t size = sizeof(pUser->user);
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pUser->user, size);
cols++; cols++;
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;

View File

@ -101,8 +101,10 @@ bool httpParseTaosdAuthToken(HttpContext *pContext, char *token, int len) {
bool httpGenTaosdAuthToken(HttpContext *pContext, char *token, int maxLen) { bool httpGenTaosdAuthToken(HttpContext *pContext, char *token, int maxLen) {
char buffer[sizeof(pContext->user) + sizeof(pContext->pass)] = {0}; char buffer[sizeof(pContext->user) + sizeof(pContext->pass)] = {0};
tstrncpy(buffer, pContext->user, sizeof(pContext->user)); size_t size = sizeof(pContext->user);
tstrncpy(buffer + sizeof(pContext->user), pContext->pass, sizeof(pContext->pass)); tstrncpy(buffer, pContext->user, size);
size = sizeof(pContext->pass);
tstrncpy(buffer + sizeof(pContext->user), pContext->pass, size);
char *encrypt = taosDesEncode(KEY_DES_4, buffer, TSDB_USER_LEN + TSDB_PASSWORD_LEN); char *encrypt = taosDesEncode(KEY_DES_4, buffer, TSDB_USER_LEN + TSDB_PASSWORD_LEN);
char *base64 = base64_encode((const unsigned char *)encrypt, TSDB_USER_LEN + TSDB_PASSWORD_LEN); char *base64 = base64_encode((const unsigned char *)encrypt, TSDB_USER_LEN + TSDB_PASSWORD_LEN);

View File

@ -112,7 +112,7 @@ enum {
#define QUERY_IS_STABLE_QUERY(type) (((type)&TSDB_QUERY_TYPE_STABLE_QUERY) != 0) #define QUERY_IS_STABLE_QUERY(type) (((type)&TSDB_QUERY_TYPE_STABLE_QUERY) != 0)
#define QUERY_IS_JOIN_QUERY(type) (TSDB_QUERY_HAS_TYPE(type, TSDB_QUERY_TYPE_JOIN_QUERY)) #define QUERY_IS_JOIN_QUERY(type) (TSDB_QUERY_HAS_TYPE(type, TSDB_QUERY_TYPE_JOIN_QUERY))
#define QUERY_IS_PROJECTION_QUERY(type) (((type)&TSDB_QUERY_TYPE_PROJECTION_QUERY) != 0) #define QUERY_IS_PROJECTION_QUERY(type) (((type)&TSDB_QUERY_TYPE_PROJECTION_QUERY) != 0)
#define QUERY_IS_FREE_RESOURCE(type) (((type)&TSDB_QUERY_TYPE_FREE_RESOURCE) != 0) #define QUERY_IS_FREE_RESOURCE(type) (((type)&TSDB_QUERY_TYPE_FREE_RESOURCE) != 0)
typedef struct SArithmeticSupport { typedef struct SArithmeticSupport {

View File

@ -4470,7 +4470,7 @@ static void multiTableQueryProcess(SQInfo *pQInfo) {
// query error occurred or query is killed, abort current execution // query error occurred or query is killed, abort current execution
if (pQInfo->code != TSDB_CODE_SUCCESS || isQueryKilled(pQInfo)) { if (pQInfo->code != TSDB_CODE_SUCCESS || isQueryKilled(pQInfo)) {
qTrace("QInfo:%p query killed or error occurred, code:%d, abort", pQInfo, pQInfo->code); qTrace("QInfo:%p query killed or error occurred, code:%s, abort", pQInfo, tstrerror(pQInfo->code));
return; return;
} }
@ -4491,7 +4491,7 @@ static void multiTableQueryProcess(SQInfo *pQInfo) {
setQueryStatus(pQuery, QUERY_COMPLETED); setQueryStatus(pQuery, QUERY_COMPLETED);
if (pQInfo->code != TSDB_CODE_SUCCESS || isQueryKilled(pQInfo)) { if (pQInfo->code != TSDB_CODE_SUCCESS || isQueryKilled(pQInfo)) {
qTrace("QInfo:%p query killed or error occurred, code:%d, abort", pQInfo, pQInfo->code); qTrace("QInfo:%p query killed or error occurred, code:%s, abort", pQInfo, tstrerror(pQInfo->code));
return; return;
} }
@ -5851,6 +5851,8 @@ void qDestroyQueryInfo(qinfo_t qHandle) {
} }
int16_t ref = T_REF_DEC(pQInfo); int16_t ref = T_REF_DEC(pQInfo);
qTrace("QInfo:%p dec refCount, value:%d", pQInfo, ref);
if (ref == 0) { if (ref == 0) {
doDestoryQueryInfo(pQInfo); doDestoryQueryInfo(pQInfo);
} }

View File

@ -393,7 +393,6 @@ void rpcSendResponse(const SRpcMsg *pRsp) {
if ( pConn->inType == 0 || pConn->user[0] == 0 ) { if ( pConn->inType == 0 || pConn->user[0] == 0 ) {
tTrace("%s, connection is already released, rsp wont be sent", pConn->info); tTrace("%s, connection is already released, rsp wont be sent", pConn->info);
rpcUnlockConn(pConn); rpcUnlockConn(pConn);
rpcDecRef(pRpc);
return; return;
} }
@ -487,12 +486,19 @@ void rpcSendRecv(void *shandle, SRpcIpSet *pIpSet, const SRpcMsg *pMsg, SRpcMsg
} }
// this API is used by server app to keep an APP context in case connection is broken // this API is used by server app to keep an APP context in case connection is broken
void rpcReportProgress(void *handle, char *pCont, int contLen) { int rpcReportProgress(void *handle, char *pCont, int contLen) {
SRpcConn *pConn = (SRpcConn *)handle; SRpcConn *pConn = (SRpcConn *)handle;
// pReqMsg and reqMsgLen is re-used to store the context from app server if (pConn->user[0]) {
pConn->pReqMsg = pCont; // pReqMsg and reqMsgLen is re-used to store the context from app server
pConn->reqMsgLen = contLen; pConn->pReqMsg = pCont;
pConn->reqMsgLen = contLen;
return 0;
}
tTrace("%s, rpc connection is already released", pConn->info);
rpcFreeCont(pCont);
return -1;
} }
static void rpcFreeMsg(void *msg) { static void rpcFreeMsg(void *msg) {

View File

@ -68,6 +68,7 @@ static void vnodeNotifyCurrentQhandle(void* handle, void* qhandle, int32_t vgId)
killQueryMsg->header.vgId = htonl(vgId); killQueryMsg->header.vgId = htonl(vgId);
killQueryMsg->header.contLen = htonl(sizeof(SRetrieveTableMsg)); killQueryMsg->header.contLen = htonl(sizeof(SRetrieveTableMsg));
vTrace("QInfo:%p register qhandle to connect:%p", qhandle, handle);
rpcReportProgress(handle, (char*) killQueryMsg, sizeof(SRetrieveTableMsg)); rpcReportProgress(handle, (char*) killQueryMsg, sizeof(SRetrieveTableMsg));
} }
@ -85,10 +86,11 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SReadMsg *pReadMsg) {
killQueryMsg->free = htons(killQueryMsg->free); killQueryMsg->free = htons(killQueryMsg->free);
killQueryMsg->qhandle = htobe64(killQueryMsg->qhandle); killQueryMsg->qhandle = htobe64(killQueryMsg->qhandle);
vWarn("QInfo:%p connection %p broken, kill query", killQueryMsg->qhandle, pReadMsg->rpcMsg.handle);
assert(pReadMsg->rpcMsg.contLen > 0 && killQueryMsg->free == 1); assert(pReadMsg->rpcMsg.contLen > 0 && killQueryMsg->free == 1);
qDestroyQueryInfo((qinfo_t) killQueryMsg->qhandle);
return TSDB_CODE_SUCCESS; qKillQuery((qinfo_t) killQueryMsg->qhandle);
return TSDB_CODE_TSC_QUERY_CANCELLED; // todo change the error code
} }
int32_t code = TSDB_CODE_SUCCESS; int32_t code = TSDB_CODE_SUCCESS;

View File

@ -134,6 +134,9 @@ python3 ./test.py -f query/filter.py
python3 ./test.py -f query/filterCombo.py python3 ./test.py -f query/filterCombo.py
python3 ./test.py -f query/queryNormal.py python3 ./test.py -f query/queryNormal.py
python3 ./test.py -f query/queryError.py python3 ./test.py -f query/queryError.py
python3 ./test.py -f query/filterAllIntTypes.py
python3 ./test.py -f query/filterFloatAndDouble.py
python3 ./test.py -f query/filterOtherTypes.py
#stream #stream
python3 ./test.py -f stream/stream1.py python3 ./test.py -f stream/stream1.py

View File

@ -0,0 +1,117 @@
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import sys
import taos
from util.log import *
from util.cases import *
from util.sql import *
class TDTestCase:
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor())
self.powers = [7, 15, 31, 63]
self.types = ["tinyint", "smallint", "int", "bigint"]
self.rowNum = 10
self.ts = 1537146000000
def run(self):
tdSql.prepare()
for i in range(len(self.powers)):
curType = self.types[i]
print("======= Verify filter for %s type =========" % (curType))
tdLog.debug(
"create table st%s(ts timestamp, num %s) tags(id %s)" % (curType, curType, curType))
tdSql.execute(
"create table st%s(ts timestamp, num %s) tags(id %s)" % (curType, curType, curType))
#create 10 tables, insert 10 rows for each table
for j in range(self.rowNum):
tdSql.execute("create table st%s%d using st%s tags(%d)" % (curType, j + 1, curType, j + 1))
for k in range(self.rowNum):
tdSql.execute("insert into st%s%d values(%d, %d)" % (curType, j + 1, self.ts + k + 1, j * 10 + k + 1))
tdSql.error("insert into st%s10 values(%d, %d)" % (curType, self.ts + 11, pow(2, self.powers[i])))
tdSql.execute("insert into st%s10 values(%d, %d)" % (curType, self.ts + 12, pow(2, self.powers[i]) - 1))
tdSql.error("insert into st%s10 values(%d, %d)" % (curType, self.ts + 13, pow(-2, self.powers[i])))
tdSql.execute("insert into st%s10 values(%d, %d)" % (curType, self.ts + 14, pow(-2, self.powers[i]) + 1))
# > for int type on column
tdSql.query("select * from st%s where num > 50" % curType)
tdSql.checkRows(51)
# >= for int type on column
tdSql.query("select * from st%s where num >= 50" % curType)
tdSql.checkRows(52)
# = for int type on column
tdSql.query("select * from st%s where num = 50" % curType)
tdSql.checkRows(1)
# < for int type on column
tdSql.query("select * from st%s where num < 50" % curType)
tdSql.checkRows(50)
# <= for int type on column
tdSql.query("select * from st%s where num <= 50" % curType)
tdSql.checkRows(51)
# <> for int type on column
tdSql.query("select * from st%s where num <> 50" % curType)
tdSql.checkRows(101)
# != for int type on column
tdSql.query("select * from st%s where num != 50" % curType)
tdSql.checkRows(101)
# > for int type on tag
tdSql.query("select * from st%s where id > 5" % curType)
tdSql.checkRows(52)
# >= for int type on tag
tdSql.query("select * from st%s where id >= 5" % curType)
tdSql.checkRows(62)
# = for int type on tag
tdSql.query("select * from st%s where id = 5" % curType)
tdSql.checkRows(10)
# < for int type on tag
tdSql.query("select * from st%s where id < 5" % curType)
tdSql.checkRows(40)
# <= for int type on tag
tdSql.query("select * from st%s where id <= 5" % curType)
tdSql.checkRows(50)
# <> for int type on tag
tdSql.query("select * from st%s where id <> 5" % curType)
tdSql.checkRows(92)
# != for int type on tag
tdSql.query("select * from st%s where id != 5" % curType)
tdSql.checkRows(92)
print("======= Verify filter for %s type finished =========" % curType)
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())

View File

@ -0,0 +1,160 @@
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import sys
import taos
from util.log import *
from util.cases import *
from util.sql import *
class TDTestCase:
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor())
self.rowNum = 10
self.ts = 1537146000000
def run(self):
tdSql.prepare()
print("======= Verify filter for float and double type =========")
tdLog.debug(
"create table st(ts timestamp, num float, speed double) tags(tagcol1 float, tagcol2 double)")
tdSql.execute(
"create table st(ts timestamp, num float, speed double) tags(tagcol1 float, tagcol2 double)")
for j in range(self.rowNum):
tdSql.execute(
"insert into st1 using st tags(1.1, 2.3) values(%d, %f, %f)" % (self.ts + j + 1, 1.1 * (j + 1), 2.3 * (j + 1)))
# > for float type on column
tdSql.query("select * from st where num > 5.5")
tdSql.checkRows(5)
# >= for float type on column
tdSql.query("select * from st where num >= 5.5")
tdSql.checkRows(6)
# = for float type on column
tdSql.query("select * from st where num = 5.5")
tdSql.checkRows(1)
# <> for float type on column
tdSql.query("select * from st where num <> 5.5")
tdSql.checkRows(9)
# != for float type on column
tdSql.query("select * from st where num != 5.5")
tdSql.checkRows(9)
# <= for float type on column
tdSql.query("select * from st where num <= 5.5")
tdSql.checkRows(5)
# < for float type on column
tdSql.query("select * from st where num < 5.5")
tdSql.checkRows(4)
# > for float type on tag
tdSql.query("select * from st where tagcol1 > 1.1")
tdSql.checkRows(0)
# >= for float type on tag
tdSql.query("select * from st where tagcol1 >= 1.1")
tdSql.checkRows(10)
# = for float type on tag
tdSql.query("select * from st where tagcol1 = 1.1")
tdSql.checkRows(10)
# <> for float type on tag
tdSql.query("select * from st where tagcol1 <> 1.1")
tdSql.checkRows(0)
# != for float type on tag
tdSql.query("select * from st where tagcol1 != 1.1")
tdSql.checkRows(0)
# <= for float type on tag
tdSql.query("select * from st where tagcol1 <= 1.1")
tdSql.checkRows(10)
# < for float type on tag
tdSql.query("select * from st where tagcol1 < 1.1")
tdSql.checkRows(0)
# > for double type on column
tdSql.query("select * from st where speed > 11.5")
tdSql.checkRows(5)
# >= for double type on column
tdSql.query("select * from st where speed >= 11.5")
tdSql.checkRows(6)
# = for double type on column
tdSql.query("select * from st where speed = 11.5")
tdSql.checkRows(1)
# <> for double type on column
tdSql.query("select * from st where speed <> 11.5")
tdSql.checkRows(9)
# != for double type on column
tdSql.query("select * from st where speed != 11.5")
tdSql.checkRows(9)
# <= for double type on column
tdSql.query("select * from st where speed <= 11.5")
tdSql.checkRows(5)
# < for double type on column
tdSql.query("select * from st where speed < 11.5")
tdSql.checkRows(4)
# > for double type on tag
tdSql.query("select * from st where tagcol2 > 2.3")
tdSql.checkRows(0)
# >= for double type on tag
tdSql.query("select * from st where tagcol2 >= 2.3")
tdSql.checkRows(10)
# = for double type on tag
tdSql.query("select * from st where tagcol2 = 2.3")
tdSql.checkRows(10)
# <> for double type on tag
tdSql.query("select * from st where tagcol2 <> 2.3")
tdSql.checkRows(0)
# != for double type on tag
tdSql.query("select * from st where tagcol2 != 2.3")
tdSql.checkRows(0)
# <= for double type on tag
tdSql.query("select * from st where tagcol2 <= 2.3")
tdSql.checkRows(10)
# < for double type on tag
tdSql.query("select * from st where tagcol2 < 2.3")
tdSql.checkRows(0)
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())

View File

@ -0,0 +1,362 @@
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import sys
import taos
from util.log import *
from util.cases import *
from util.sql import *
class TDTestCase:
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor())
self.ts = 1537146000000
def run(self):
tdSql.prepare()
print("======= Verify filter for bool, nchar and binary type =========")
tdLog.debug(
"create table st(ts timestamp, tbcol1 bool, tbcol2 nchar(10), tbcol3 binary(20)) tags(tagcol1 bool, tagcol2 nchar(10), tagcol3 binary(10))")
tdSql.execute(
"create table st(ts timestamp, tbcol1 bool, tbcol2 nchar(10), tbcol3 binary(20)) tags(tagcol1 bool, tagcol2 nchar(10), tagcol3 binary(10))")
tdSql.execute("create table st1 using st tags(true, 'table1', '水表')")
for i in range(1, 6):
tdSql.execute("insert into st1 values(%d, %d, 'taosdata%d', '涛思数据%d')" % (self.ts + i, i % 2, i, i))
tdSql.execute("create table st2 using st tags(false, 'table2', '电表')")
for i in range(6, 11):
tdSql.execute("insert into st2 values(%d, %d, 'taosdata%d', '涛思数据%d')" % (self.ts + i, i % 2, i, i))
# =============Verify stable columns====================
# > for bool type on column
tdSql.error("select * from st where tbcol1 > false")
# >= for bool type on column
tdSql.error("select * from st where tbcol1 >= false")
# = for bool type on column
tdSql.query("select * from st where tbcol1 = false")
tdSql.checkRows(5)
# <> for bool type on column
tdSql.query("select * from st where tbcol1 <> true")
tdSql.checkRows(5)
# != for bool type on column
tdSql.query("select * from st where tbcol1 != true")
tdSql.checkRows(5)
# > for bool type on column
tdSql.error("select * from st where tbcol1 < true")
# >= for bool type on column
tdSql.error("select * from st where tbcol1 <= true")
# % for bool type on column
tdSql.error("select * from st where tbcol1 like '%'")
# _ for bool type on column
tdSql.error("select * from st where tbcol1 like '____'")
# > for nchar type on column
tdSql.error("select * from st where tbcol2 > 'taosdata'")
# >= for nchar type on column
tdSql.error("select * from st where tbcol2 >= 'taosdata'")
# = for nchar type on column
tdSql.query("select * from st where tbcol2 = 'taosdata1'")
tdSql.checkRows(1)
# <> for nchar type on column
tdSql.query("select * from st where tbcol2 <> 'taosdata1'")
tdSql.checkRows(9)
# != for nchar type on column
tdSql.query("select * from st where tbcol2 != 'taosdata1'")
tdSql.checkRows(9)
# > for nchar type on column
tdSql.error("select * from st where tbcol2 < 'taodata'")
# >= for nchar type on column
tdSql.error("select * from st where tbcol2 <= 'taodata'")
# % for nchar type on column case 1
tdSql.query("select * from st where tbcol2 like '%'")
tdSql.checkRows(10)
# % for nchar type on column case 2
tdSql.query("select * from st where tbcol2 like 'a%'")
tdSql.checkRows(0)
# % for nchar type on column case 3
tdSql.query("select * from st where tbcol2 like 't%_'")
tdSql.checkRows(10)
# % for nchar type on column case 4
tdSql.query("select * from st where tbcol2 like '%1'")
# tdSql.checkRows(2)
# _ for nchar type on column case 1
tdSql.query("select * from st where tbcol2 like '____________'")
tdSql.checkRows(0)
# _ for nchar type on column case 2
tdSql.query("select * from st where tbcol2 like '__________'")
tdSql.checkRows(1)
# _ for nchar type on column case 3
tdSql.query("select * from st where tbcol2 like '_________'")
tdSql.checkRows(9)
# _ for nchar type on column case 4
tdSql.query("select * from st where tbcol2 like 't________'")
tdSql.checkRows(9)
# _ for nchar type on column case 5
tdSql.query("select * from st where tbcol2 like '%________'")
tdSql.checkRows(10)
# > for binary type on column
tdSql.error("select * from st where tbcol3 > '涛思数据'")
# >= for binary type on column
tdSql.error("select * from st where tbcol3 >= '涛思数据'")
# = for binary type on column
tdSql.query("select * from st where tbcol3 = '涛思数据1'")
tdSql.checkRows(1)
# <> for binary type on column
tdSql.query("select * from st where tbcol3 <> '涛思数据1'")
tdSql.checkRows(9)
# != for binary type on column
tdSql.query("select * from st where tbcol3 != '涛思数据1'")
tdSql.checkRows(9)
# > for binary type on column
tdSql.error("select * from st where tbcol3 < '涛思数据'")
# >= for binary type on column
tdSql.error("select * from st where tbcol3 <= '涛思数据'")
# % for binary type on column case 1
tdSql.query("select * from st where tbcol3 like '%'")
tdSql.checkRows(10)
# % for binary type on column case 2
tdSql.query("select * from st where tbcol3 like '%'")
tdSql.checkRows(0)
# % for binary type on column case 3
tdSql.query("select * from st where tbcol3 like '%_'")
tdSql.checkRows(10)
# % for binary type on column case 4
tdSql.query("select * from st where tbcol3 like '%1'")
tdSql.checkRows(1)
# _ for binary type on column case 1
tdSql.query("select * from st where tbcol3 like '_______'")
tdSql.checkRows(0)
# _ for binary type on column case 2
tdSql.query("select * from st where tbcol3 like '______'")
tdSql.checkRows(1)
# _ for binary type on column case 2
tdSql.query("select * from st where tbcol3 like '_____'")
tdSql.checkRows(9)
# _ for binary type on column case 3
tdSql.query("select * from st where tbcol3 like '____'")
tdSql.checkRows(0)
# _ for binary type on column case 4
tdSql.query("select * from st where tbcol3 like 't____'")
tdSql.checkRows(0)
# =============Verify stable tags====================
# > for bool type on tag
tdSql.error("select * from st where tagcol1 > false")
# >= for bool type on tag
tdSql.error("select * from st where tagcol1 >= false")
# = for bool type on tag
tdSql.query("select * from st where tagcol1 = false")
tdSql.checkRows(5)
# <> for bool type on tag
tdSql.query("select * from st where tagcol1 <> true")
tdSql.checkRows(5)
# != for bool type on tag
tdSql.query("select * from st where tagcol1 != true")
tdSql.checkRows(5)
# > for bool type on tag
tdSql.error("select * from st where tagcol1 < true")
# >= for bool type on tag
tdSql.error("select * from st where tagcol1 <= true")
# % for bool type on tag
tdSql.error("select * from st where tagcol1 like '%'")
# _ for bool type on tag
tdSql.error("select * from st where tagcol1 like '____'")
# > for nchar type on tag
tdSql.error("select * from st where tagcol2 > 'table'")
# >= for nchar type on tag
tdSql.error("select * from st where tagcol2 >= 'table'")
# = for nchar type on tag
tdSql.query("select * from st where tagcol2 = 'table1'")
tdSql.checkRows(5)
# <> for nchar type on tag
tdSql.query("select * from st where tagcol2 <> 'table1'")
tdSql.checkRows(5)
# != for nchar type on tag
tdSql.query("select * from st where tagcol2 != 'table'")
tdSql.checkRows(10)
# > for nchar type on tag
tdSql.error("select * from st where tagcol2 < 'table'")
# >= for nchar type on tag
tdSql.error("select * from st where tagcol2 <= 'table'")
# % for nchar type on tag case 1
tdSql.query("select * from st where tagcol2 like '%'")
tdSql.checkRows(10)
# % for nchar type on tag case 2
tdSql.query("select * from st where tagcol2 like 'a%'")
tdSql.checkRows(0)
# % for nchar type on tag case 3
tdSql.query("select * from st where tagcol2 like 't%_'")
tdSql.checkRows(10)
# % for nchar type on tag case 4
tdSql.query("select * from st where tagcol2 like '%1'")
tdSql.checkRows(5)
# _ for nchar type on tag case 1
tdSql.query("select * from st where tagcol2 like '_______'")
tdSql.checkRows(0)
# _ for nchar type on tag case 2
tdSql.query("select * from st where tagcol2 like '______'")
tdSql.checkRows(10)
# _ for nchar type on tag case 3
tdSql.query("select * from st where tagcol2 like 't_____'")
tdSql.checkRows(10)
# _ for nchar type on tag case 4
tdSql.query("select * from st where tagcol2 like 's________'")
tdSql.checkRows(0)
# _ for nchar type on tag case 5
tdSql.query("select * from st where tagcol2 like '%__'")
tdSql.checkRows(10)
# > for binary type on tag
tdSql.error("select * from st where tagcol3 > ''")
# >= for binary type on tag
tdSql.error("select * from st where tagcol3 >= ''")
# = for binary type on tag
tdSql.query("select * from st where tagcol3 = '水表'")
tdSql.checkRows(5)
# <> for binary type on tag
tdSql.query("select * from st where tagcol3 <> '水表'")
tdSql.checkRows(5)
# != for binary type on tag
tdSql.query("select * from st where tagcol3 != '水表'")
tdSql.checkRows(5)
# > for binary type on tag
tdSql.error("select * from st where tagcol3 < '水表'")
# >= for binary type on tag
tdSql.error("select * from st where tagcol3 <= '水表'")
# % for binary type on tag case 1
tdSql.query("select * from st where tagcol3 like '%'")
tdSql.checkRows(10)
# % for binary type on tag case 2
tdSql.query("select * from st where tagcol3 like '%'")
tdSql.checkRows(5)
# % for binary type on tag case 3
tdSql.query("select * from st where tagcol3 like '%_'")
tdSql.checkRows(0)
# % for binary type on tag case 4
tdSql.query("select * from st where tagcol3 like '%'")
tdSql.checkRows(10)
# % for binary type on tag case 5
tdSql.query("select * from st where tagcol3 like '%'")
tdSql.checkRows(0)
# _ for binary type on tag case 1
tdSql.query("select * from st where tagcol3 like '__'")
tdSql.checkRows(10)
# _ for binary type on tag case 2
tdSql.query("select * from st where tagcol3 like '水_'")
tdSql.checkRows(5)
# _ for binary type on tag case 2
tdSql.query("select * from st where tagcol3 like '_表'")
tdSql.checkRows(10)
# _ for binary type on tag case 3
tdSql.query("select * from st where tagcol3 like '___'")
tdSql.checkRows(0)
# _ for binary type on tag case 4
tdSql.query("select * from st where tagcol3 like '数_'")
tdSql.checkRows(0)
# _ for binary type on tag case 5
tdSql.query("select * from st where tagcol3 like '_据'")
tdSql.checkRows(0)
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())

View File

@ -131,6 +131,8 @@ python3 ./test.py -f user/pass_len.py
#query #query
python3 ./test.py -f query/filter.py python3 ./test.py -f query/filter.py
python3 ./test.py -f query/filterAllIntTypes.py
python3 ./test.py -f query/filterFloatAndDouble.py
#stream #stream

View File

@ -51,7 +51,7 @@ system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2 sql create dnode $hostname2
sleep 3000 sleep 3000
$totalTableNum = 10000 $totalTableNum = 10
$sleepTimer = 10000 $sleepTimer = 10000
$db = db $db = db
@ -192,7 +192,7 @@ if $data00 != $totalRows then
endi endi
print ============== step4: stop dnode2 for checking if sync success print ============== step4: stop dnode2 for checking if sync ok
system sh/exec.sh -n dnode2 -s stop system sh/exec.sh -n dnode2 -s stop
sleep $sleepTimer sleep $sleepTimer

View File

@ -55,7 +55,7 @@ sql create dnode $hostname3
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 1000 $totalTableNum = 10
$sleepTimer = 10000 $sleepTimer = 10000
$db = db $db = db

View File

@ -173,7 +173,7 @@ if $rows != 3 then
return -1 return -1
endi endi
print ============== step5: remove dnode4 director, then recreate dnode4 into cluster, result should success print ============== step5: remove dnode4 director, then recreate dnode4 into cluster, result should ok
system sh/exec.sh -n dnode4 -s stop system sh/exec.sh -n dnode4 -s stop
system rm -rf ../../../sim/dnode4 system rm -rf ../../../sim/dnode4

View File

@ -55,7 +55,7 @@ sql create dnode $hostname3
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db

View File

@ -55,7 +55,7 @@ sql create dnode $hostname3
#sql create dnode $hostname4 #sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db
@ -177,7 +177,7 @@ if $data00 != $totalRows then
return -1 return -1
endi endi
print ============== step5: stop dnode2, and check if dnode3 sync success print ============== step5: stop dnode2, and check if dnode3 sync ok
system sh/exec.sh -n dnode2 -s stop -x SIGINT system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep $sleepTimer sleep $sleepTimer
wait_dnode2_offline_0: wait_dnode2_offline_0:

View File

@ -55,7 +55,7 @@ sql create dnode $hostname3
#sql create dnode $hostname4 #sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db
@ -105,7 +105,7 @@ if $data00 != $totalRows then
return -1 return -1
endi endi
print ============== step5: stop dnode2, and check if dnode3 sync success print ============== step5: stop dnode2, and check if dnode3 sync ok
system sh/exec.sh -n dnode2 -s stop -x SIGINT system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep $sleepTimer sleep $sleepTimer
wait_dnode2_offline_0: wait_dnode2_offline_0:

View File

@ -55,7 +55,7 @@ sql create dnode $hostname3
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db

View File

@ -55,7 +55,7 @@ sql create dnode $hostname3
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db
@ -152,7 +152,7 @@ print ============== step4: restart dnode2, then create database with replica 2,
system sh/exec.sh -n dnode2 -s start system sh/exec.sh -n dnode2 -s start
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db1 $db = db1

View File

@ -56,7 +56,7 @@ sql create dnode $hostname2
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db

View File

@ -67,7 +67,7 @@ sql use $db
# create table , insert data # create table , insert data
$stb = stb $stb = stb
sql create table $stb (ts timestamp, c1 int, c2 int) tags(t1 int) sql create table $stb (ts timestamp, c1 int, c2 int) tags(t0 int, t1 int)
$rowNum = 500 $rowNum = 500
$tblNum = $totalTableNum $tblNum = $totalTableNum
$totalRows = 0 $totalRows = 0
@ -77,7 +77,7 @@ $tsEnd = 0
$i = 0 $i = 0
while $i < $tblNum while $i < $tblNum
$tb = tb . $i $tb = tb . $i
sql create table $tb using $stb tags( $i ) sql create table $tb using $stb tags( $i , $i )
$x = 0 $x = 0
while $x < $rowNum while $x < $rowNum
@ -164,7 +164,7 @@ $totalRows = 0
$i = 0 $i = 0
while $i < $tblNum while $i < $tblNum
$tb = tb . $i $tb = tb . $i
sql create table $tb using $stb tags( $i , $i ) sql create table $tb using $stb tags( $i , $i , $i )
$x = 0 $x = 0
while $x < $rowNum while $x < $rowNum

View File

@ -56,7 +56,7 @@ sql create dnode $hostname2
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$maxTables = $totalTableNum * 2 $maxTables = $totalTableNum * 2

View File

@ -56,7 +56,7 @@ sql create dnode $hostname2
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db

View File

@ -56,7 +56,7 @@ sql create dnode $hostname2
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db
@ -146,14 +146,14 @@ endi
print ============== step4: drop some tables print ============== step4: drop some tables
$i = 1 $i = 1
$dropTblNum = 21 $dropTblNum = 6
while $i < $dropTblNum while $i < $dropTblNum
$tb = tb . $i $tb = tb . $i
sql drop table if exists $tb sql drop table if exists $tb
$i = $i + 1 $i = $i + 1
endw endw
$tblNum = $tblNum - 20 $tblNum = $tblNum - 5
print ============== step5: restart dnode4, waiting dnode4 synced print ============== step5: restart dnode4, waiting dnode4 synced
system sh/exec.sh -n dnode4 -s start system sh/exec.sh -n dnode4 -s start

View File

@ -56,7 +56,7 @@ sql create dnode $hostname3
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db

View File

@ -67,7 +67,7 @@ sql use $db
# create table , insert data # create table , insert data
$stb = stb $stb = stb
sql create table $stb (ts timestamp, c1 int, c2 int) tags(t1 int) sql create table $stb (ts timestamp, c1 int, c2 int) tags(t0 int, t1 int)
$rowNum = 500 $rowNum = 500
$tblNum = $totalTableNum $tblNum = $totalTableNum
$totalRows = 0 $totalRows = 0
@ -77,7 +77,7 @@ $tsEnd = 0
$i = 0 $i = 0
while $i < $tblNum while $i < $tblNum
$tb = tb . $i $tb = tb . $i
sql create table $tb using $stb tags( $i ) sql create table $tb using $stb tags( $i , $i )
$x = 0 $x = 0
while $x < $rowNum while $x < $rowNum
@ -164,7 +164,7 @@ $totalRows = 0
$i = 0 $i = 0
while $i < $tblNum while $i < $tblNum
$tb = tb . $i $tb = tb . $i
sql create table $tb using $stb tags( $i , $i ) sql create table $tb using $stb tags( $i , $i , $i )
$x = 0 $x = 0
while $x < $rowNum while $x < $rowNum

View File

@ -56,7 +56,7 @@ sql create dnode $hostname3
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$maxTables = $totalTableNum * 2 $maxTables = $totalTableNum * 2

View File

@ -56,7 +56,7 @@ sql create dnode $hostname3
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db

View File

@ -56,7 +56,7 @@ sql create dnode $hostname3
sql create dnode $hostname4 sql create dnode $hostname4
sleep 3000 sleep 3000
$totalTableNum = 100 $totalTableNum = 10
$sleepTimer = 3000 $sleepTimer = 3000
$db = db $db = db
@ -146,14 +146,14 @@ endi
print ============== step4: drop some tables print ============== step4: drop some tables
$i = 1 $i = 1
$dropTblNum = 21 $dropTblNum = 6
while $i < $dropTblNum while $i < $dropTblNum
$tb = tb . $i $tb = tb . $i
sql drop table if exists $tb sql drop table if exists $tb
$i = $i + 1 $i = $i + 1
endw endw
$tblNum = $tblNum - 20 $tblNum = $tblNum - 5
print ============== step5: restart dnode4, waiting dnode4 synced print ============== step5: restart dnode4, waiting dnode4 synced
system sh/exec.sh -n dnode4 -s start system sh/exec.sh -n dnode4 -s start