feat: encryption key optimize and test case adjust
This commit is contained in:
parent
717c4b3d9c
commit
c4aba0ac37
|
@ -221,6 +221,7 @@
|
||||||
TD_DEF_MSG_TYPE(TDMT_MND_COMPACT_TIMER, "compact-tmr", NULL, NULL)
|
TD_DEF_MSG_TYPE(TDMT_MND_COMPACT_TIMER, "compact-tmr", NULL, NULL)
|
||||||
TD_DEF_MSG_TYPE(TDMT_MND_STREAM_REQ_CHKPT, "stream-req-checkpoint", NULL, NULL)
|
TD_DEF_MSG_TYPE(TDMT_MND_STREAM_REQ_CHKPT, "stream-req-checkpoint", NULL, NULL)
|
||||||
TD_DEF_MSG_TYPE(TDMT_MND_CONFIG_CLUSTER, "config-cluster", NULL, NULL)
|
TD_DEF_MSG_TYPE(TDMT_MND_CONFIG_CLUSTER, "config-cluster", NULL, NULL)
|
||||||
|
TD_DEF_MSG_TYPE(TDMT_MND_CREATE_ENCRYPT_KEY, "create-encrypt-key", NULL, NULL)
|
||||||
TD_DEF_MSG_TYPE(TDMT_MND_MAX_MSG, "mnd-max", NULL, NULL)
|
TD_DEF_MSG_TYPE(TDMT_MND_MAX_MSG, "mnd-max", NULL, NULL)
|
||||||
TD_CLOSE_MSG_SEG(TDMT_END_MND_MSG)
|
TD_CLOSE_MSG_SEG(TDMT_END_MND_MSG)
|
||||||
|
|
||||||
|
|
|
@ -425,6 +425,8 @@ int32_t* taosGetErrno();
|
||||||
#define TSDB_CODE_DNODE_INVALID_ENCRYPT_CONFIG TAOS_DEF_ERROR_CODE(0, 0x0419)
|
#define TSDB_CODE_DNODE_INVALID_ENCRYPT_CONFIG TAOS_DEF_ERROR_CODE(0, 0x0419)
|
||||||
#define TSDB_CODE_DNODE_INVALID_ENCRYPTKEY TAOS_DEF_ERROR_CODE(0, 0x0420)
|
#define TSDB_CODE_DNODE_INVALID_ENCRYPTKEY TAOS_DEF_ERROR_CODE(0, 0x0420)
|
||||||
#define TSDB_CODE_DNODE_ENCRYPTKEY_CHANGED TAOS_DEF_ERROR_CODE(0, 0x0421)
|
#define TSDB_CODE_DNODE_ENCRYPTKEY_CHANGED TAOS_DEF_ERROR_CODE(0, 0x0421)
|
||||||
|
#define TSDB_CODE_DNODE_INVALID_ENCRYPT_KLEN TAOS_DEF_ERROR_CODE(0, 0x0422)
|
||||||
|
|
||||||
|
|
||||||
// mnode-sma
|
// mnode-sma
|
||||||
#define TSDB_CODE_MND_SMA_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x0480)
|
#define TSDB_CODE_MND_SMA_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x0480)
|
||||||
|
|
|
@ -189,6 +189,7 @@ typedef enum ELogicConditionType {
|
||||||
|
|
||||||
#define ENCRYPTED_LEN(len) (len/16) * 16 + (len%16?1:0) * 16
|
#define ENCRYPTED_LEN(len) (len/16) * 16 + (len%16?1:0) * 16
|
||||||
#define ENCRYPT_KEY_LEN 16
|
#define ENCRYPT_KEY_LEN 16
|
||||||
|
#define ENCRYPT_KEY_LEN_MIN 8
|
||||||
|
|
||||||
#define TSDB_INT32_ID_LEN 11
|
#define TSDB_INT32_ID_LEN 11
|
||||||
|
|
||||||
|
|
|
@ -196,6 +196,7 @@ SArray *mmGetMsgHandles() {
|
||||||
if (dmSetMgmtHandle(pArray, TDMT_MND_KILL_COMPACT, mmPutMsgToReadQueue, 0) == NULL) goto _OVER;
|
if (dmSetMgmtHandle(pArray, TDMT_MND_KILL_COMPACT, mmPutMsgToReadQueue, 0) == NULL) goto _OVER;
|
||||||
if (dmSetMgmtHandle(pArray, TDMT_MND_CONFIG_CLUSTER, mmPutMsgToWriteQueue, 0) == NULL) goto _OVER;
|
if (dmSetMgmtHandle(pArray, TDMT_MND_CONFIG_CLUSTER, mmPutMsgToWriteQueue, 0) == NULL) goto _OVER;
|
||||||
if (dmSetMgmtHandle(pArray, TDMT_VND_QUERY_COMPACT_PROGRESS_RSP, mmPutMsgToReadQueue, 0) == NULL) goto _OVER;
|
if (dmSetMgmtHandle(pArray, TDMT_VND_QUERY_COMPACT_PROGRESS_RSP, mmPutMsgToReadQueue, 0) == NULL) goto _OVER;
|
||||||
|
if (dmSetMgmtHandle(pArray, TDMT_MND_CREATE_ENCRYPT_KEY, mmPutMsgToReadQueue, 0) == NULL) goto _OVER;
|
||||||
|
|
||||||
if (dmSetMgmtHandle(pArray, TDMT_SCH_QUERY, mmPutMsgToQueryQueue, 1) == NULL) goto _OVER;
|
if (dmSetMgmtHandle(pArray, TDMT_SCH_QUERY, mmPutMsgToQueryQueue, 1) == NULL) goto _OVER;
|
||||||
if (dmSetMgmtHandle(pArray, TDMT_SCH_MERGE_QUERY, mmPutMsgToQueryQueue, 1) == NULL) goto _OVER;
|
if (dmSetMgmtHandle(pArray, TDMT_SCH_MERGE_QUERY, mmPutMsgToQueryQueue, 1) == NULL) goto _OVER;
|
||||||
|
|
|
@ -299,11 +299,11 @@ int32_t vmProcessCreateVnodeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//if(req.encryptAlgorithm == DND_CA_SM4){
|
//if(req.encryptAlgorithm == DND_CA_SM4){
|
||||||
if(strlen(tsEncryptKey) == 0){
|
// if(strlen(tsEncryptKey) == 0){
|
||||||
terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
|
// terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
|
||||||
dError("vgId:%d, failed to create vnode since encrypt key is empty", req.vgId);
|
// dError("vgId:%d, failed to create vnode since encrypt key is empty", req.vgId);
|
||||||
return -1;
|
// return -1;
|
||||||
}
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
vmGenerateVnodeCfg(&req, &vnodeCfg);
|
vmGenerateVnodeCfg(&req, &vnodeCfg);
|
||||||
|
|
|
@ -80,6 +80,7 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq);
|
||||||
static int32_t mndProcessNotifyReq(SRpcMsg *pReq);
|
static int32_t mndProcessNotifyReq(SRpcMsg *pReq);
|
||||||
static int32_t mndProcessRestoreDnodeReq(SRpcMsg *pReq);
|
static int32_t mndProcessRestoreDnodeReq(SRpcMsg *pReq);
|
||||||
static int32_t mndProcessStatisReq(SRpcMsg *pReq);
|
static int32_t mndProcessStatisReq(SRpcMsg *pReq);
|
||||||
|
static int32_t mndProcessCreateEncryptKeyReq(SRpcMsg *pRsp);
|
||||||
static int32_t mndProcessCreateEncryptKeyRsp(SRpcMsg *pRsp);
|
static int32_t mndProcessCreateEncryptKeyRsp(SRpcMsg *pRsp);
|
||||||
|
|
||||||
static int32_t mndRetrieveConfigs(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows);
|
static int32_t mndRetrieveConfigs(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows);
|
||||||
|
@ -117,6 +118,7 @@ int32_t mndInitDnode(SMnode *pMnode) {
|
||||||
mndSetMsgHandle(pMnode, TDMT_MND_SHOW_VARIABLES, mndProcessShowVariablesReq);
|
mndSetMsgHandle(pMnode, TDMT_MND_SHOW_VARIABLES, mndProcessShowVariablesReq);
|
||||||
mndSetMsgHandle(pMnode, TDMT_MND_RESTORE_DNODE, mndProcessRestoreDnodeReq);
|
mndSetMsgHandle(pMnode, TDMT_MND_RESTORE_DNODE, mndProcessRestoreDnodeReq);
|
||||||
mndSetMsgHandle(pMnode, TDMT_MND_STATIS, mndProcessStatisReq);
|
mndSetMsgHandle(pMnode, TDMT_MND_STATIS, mndProcessStatisReq);
|
||||||
|
mndSetMsgHandle(pMnode, TDMT_MND_CREATE_ENCRYPT_KEY, mndProcessCreateEncryptKeyReq);
|
||||||
mndSetMsgHandle(pMnode, TDMT_DND_CREATE_ENCRYPT_KEY_RSP, mndProcessCreateEncryptKeyRsp);
|
mndSetMsgHandle(pMnode, TDMT_DND_CREATE_ENCRYPT_KEY_RSP, mndProcessCreateEncryptKeyRsp);
|
||||||
|
|
||||||
mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_CONFIGS, mndRetrieveConfigs);
|
mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_CONFIGS, mndRetrieveConfigs);
|
||||||
|
@ -1409,59 +1411,6 @@ _err:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t mndProcessCreateEncryptKeyReq(SRpcMsg *pReq, int32_t dnodeId, SDCfgDnodeReq *pDcfgReq) {
|
|
||||||
int32_t code = 0;
|
|
||||||
SMnode *pMnode = pReq->info.node;
|
|
||||||
SSdb *pSdb = pMnode->pSdb;
|
|
||||||
void *pIter = NULL;
|
|
||||||
int8_t encrypting = 0;
|
|
||||||
|
|
||||||
const STraceId *trace = &pReq->info.traceId;
|
|
||||||
if (0 != (encrypting = atomic_val_compare_exchange_8(&pMnode->encryptMgmt.encrypting, 0, 1))) {
|
|
||||||
mGWarn("msg:%p, failed to create encrypt key since %s, encrypting:%" PRIi8, pReq, tstrerror(code), encrypting);
|
|
||||||
code = TSDB_CODE_QRY_DUPLICATED_OPERATION;
|
|
||||||
goto _exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tsEncryptionKeyStat == ENCRYPT_KEY_STAT_SET || tsEncryptionKeyStat == ENCRYPT_KEY_STAT_LOADED) {
|
|
||||||
code = TSDB_CODE_QRY_DUPLICATED_OPERATION;
|
|
||||||
atomic_store_8(&pMnode->encryptMgmt.encrypting, 0);
|
|
||||||
mGWarn("msg:%p, failed to create encrypt key since %s, stat:%" PRIi8 ", checksum:%u", pReq, tstrerror(code),
|
|
||||||
tsEncryptionKeyStat, tsEncryptionKeyChksum);
|
|
||||||
goto _exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
atomic_store_16(&pMnode->encryptMgmt.nEncrypt, 0);
|
|
||||||
atomic_store_16(&pMnode->encryptMgmt.nSuccess, 0);
|
|
||||||
atomic_store_16(&pMnode->encryptMgmt.nFailed, 0);
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
SDnodeObj *pDnode = NULL;
|
|
||||||
pIter = sdbFetch(pSdb, SDB_DNODE, pIter, (void **)&pDnode);
|
|
||||||
if (pIter == NULL) break;
|
|
||||||
if (pDnode->offlineReason != DND_REASON_ONLINE) continue;
|
|
||||||
|
|
||||||
if (dnodeId == -1 || pDnode->id == dnodeId || dnodeId == 0) {
|
|
||||||
SEpSet epSet = mndGetDnodeEpset(pDnode);
|
|
||||||
int32_t bufLen = tSerializeSDCfgDnodeReq(NULL, 0, pDcfgReq);
|
|
||||||
void *pBuf = rpcMallocCont(bufLen);
|
|
||||||
|
|
||||||
if (pBuf != NULL) {
|
|
||||||
tSerializeSDCfgDnodeReq(pBuf, bufLen, pDcfgReq);
|
|
||||||
SRpcMsg rpcMsg = {.msgType = TDMT_DND_CREATE_ENCRYPT_KEY, .pCont = pBuf, .contLen = bufLen};
|
|
||||||
if (0 == tmsgSendReq(&epSet, &rpcMsg)) {
|
|
||||||
atomic_add_fetch_16(&pMnode->encryptMgmt.nEncrypt, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sdbRelease(pSdb, pDnode);
|
|
||||||
}
|
|
||||||
|
|
||||||
_exit:
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int32_t mndSendCfgDnodeReq(SMnode *pMnode, int32_t dnodeId, SDCfgDnodeReq *pDcfgReq) {
|
static int32_t mndSendCfgDnodeReq(SMnode *pMnode, int32_t dnodeId, SDCfgDnodeReq *pDcfgReq) {
|
||||||
int32_t code = -1;
|
int32_t code = -1;
|
||||||
SSdb *pSdb = pMnode->pSdb;
|
SSdb *pSdb = pMnode->pSdb;
|
||||||
|
@ -1528,18 +1477,6 @@ static int32_t mndProcessConfigDnodeReq(SRpcMsg *pReq) {
|
||||||
|
|
||||||
strcpy(dcfgReq.config, "s3blocksize");
|
strcpy(dcfgReq.config, "s3blocksize");
|
||||||
snprintf(dcfgReq.value, TSDB_DNODE_VALUE_LEN, "%d", flag);
|
snprintf(dcfgReq.value, TSDB_DNODE_VALUE_LEN, "%d", flag);
|
||||||
} else if (strncasecmp(cfgReq.config, "encrypt_key", 12) == 0) {
|
|
||||||
int32_t vlen = strlen(cfgReq.value);
|
|
||||||
if (vlen > ENCRYPT_KEY_LEN || vlen < 8) {
|
|
||||||
mError("dnode:%d, failed to create encrypt_key since invalid vlen:%d, valid range:[%d, %d]", cfgReq.dnodeId, vlen,
|
|
||||||
8, ENCRYPT_KEY_LEN); // ENCRYPT_TODO: range[min, max]
|
|
||||||
terrno = TSDB_CODE_INVALID_CFG;
|
|
||||||
goto _err_out;
|
|
||||||
}
|
|
||||||
strcpy(dcfgReq.config, cfgReq.config);
|
|
||||||
strcpy(dcfgReq.value, cfgReq.value);
|
|
||||||
tFreeSMCfgDnodeReq(&cfgReq);
|
|
||||||
return mndProcessCreateEncryptKeyReq(pReq, cfgReq.dnodeId, &dcfgReq);
|
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
if (mndMCfg2DCfg(&cfgReq, &dcfgReq)) goto _err_out;
|
if (mndMCfg2DCfg(&cfgReq, &dcfgReq)) goto _err_out;
|
||||||
|
@ -1573,6 +1510,110 @@ static int32_t mndProcessConfigDnodeRsp(SRpcMsg *pRsp) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t mndProcessCreateEncryptKeyReqImpl(SRpcMsg *pReq, int32_t dnodeId, SDCfgDnodeReq *pDcfgReq) {
|
||||||
|
int32_t code = 0;
|
||||||
|
SMnode *pMnode = pReq->info.node;
|
||||||
|
SSdb *pSdb = pMnode->pSdb;
|
||||||
|
void *pIter = NULL;
|
||||||
|
int8_t encrypting = 0;
|
||||||
|
|
||||||
|
const STraceId *trace = &pReq->info.traceId;
|
||||||
|
|
||||||
|
int32_t klen = strlen(pDcfgReq->value);
|
||||||
|
if (klen > ENCRYPT_KEY_LEN || klen < ENCRYPT_KEY_LEN_MIN) {
|
||||||
|
code = TSDB_CODE_DNODE_INVALID_ENCRYPT_KLEN;
|
||||||
|
mGError("msg:%p, failed to create encrypt_key since invalid key length:%d, valid range:[%d, %d]", pReq, klen,
|
||||||
|
ENCRYPT_KEY_LEN_MIN, ENCRYPT_KEY_LEN); // ENCRYPT_TODO: range[min, max]
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 != (encrypting = atomic_val_compare_exchange_8(&pMnode->encryptMgmt.encrypting, 0, 1))) {
|
||||||
|
code = TSDB_CODE_QRY_DUPLICATED_OPERATION;
|
||||||
|
mGWarn("msg:%p, failed to create encrypt key since %s, encrypting:%" PRIi8, pReq, tstrerror(code), encrypting);
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tsEncryptionKeyStat == ENCRYPT_KEY_STAT_SET || tsEncryptionKeyStat == ENCRYPT_KEY_STAT_LOADED) {
|
||||||
|
atomic_store_8(&pMnode->encryptMgmt.encrypting, 0);
|
||||||
|
code = TSDB_CODE_QRY_DUPLICATED_OPERATION;
|
||||||
|
mGWarn("msg:%p, failed to create encrypt key since %s, stat:%" PRIi8 ", checksum:%u", pReq, tstrerror(code),
|
||||||
|
tsEncryptionKeyStat, tsEncryptionKeyChksum);
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
atomic_store_16(&pMnode->encryptMgmt.nEncrypt, 0);
|
||||||
|
atomic_store_16(&pMnode->encryptMgmt.nSuccess, 0);
|
||||||
|
atomic_store_16(&pMnode->encryptMgmt.nFailed, 0);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
SDnodeObj *pDnode = NULL;
|
||||||
|
pIter = sdbFetch(pSdb, SDB_DNODE, pIter, (void **)&pDnode);
|
||||||
|
if (pIter == NULL) break;
|
||||||
|
if (pDnode->offlineReason != DND_REASON_ONLINE) {
|
||||||
|
mGWarn("msg:%p, don't send create encrypt_key req since dnode:%d in offline state:%s", pReq, pDnode->id,
|
||||||
|
offlineReason[pDnode->offlineReason]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dnodeId == -1 || pDnode->id == dnodeId || dnodeId == 0) {
|
||||||
|
SEpSet epSet = mndGetDnodeEpset(pDnode);
|
||||||
|
int32_t bufLen = tSerializeSDCfgDnodeReq(NULL, 0, pDcfgReq);
|
||||||
|
void *pBuf = rpcMallocCont(bufLen);
|
||||||
|
|
||||||
|
if (pBuf != NULL) {
|
||||||
|
tSerializeSDCfgDnodeReq(pBuf, bufLen, pDcfgReq);
|
||||||
|
SRpcMsg rpcMsg = {.msgType = TDMT_DND_CREATE_ENCRYPT_KEY, .pCont = pBuf, .contLen = bufLen};
|
||||||
|
if (0 == tmsgSendReq(&epSet, &rpcMsg)) {
|
||||||
|
atomic_add_fetch_16(&pMnode->encryptMgmt.nEncrypt, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sdbRelease(pSdb, pDnode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (atomic_load_16(&pMnode->encryptMgmt.nEncrypt) <= 0) {
|
||||||
|
atomic_store_8(&pMnode->encryptMgmt.encrypting, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
_exit:
|
||||||
|
if (code != 0) {
|
||||||
|
if (terrno == 0) terrno = code;
|
||||||
|
}
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t mndProcessCreateEncryptKeyReq(SRpcMsg *pReq) {
|
||||||
|
#ifdef TD_ENTERPRISE
|
||||||
|
SMnode *pMnode = pReq->info.node;
|
||||||
|
SMCfgDnodeReq cfgReq = {0};
|
||||||
|
if (tDeserializeSMCfgDnodeReq(pReq->pCont, pReq->contLen, &cfgReq) != 0) {
|
||||||
|
terrno = TSDB_CODE_INVALID_MSG;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mndCheckOperPrivilege(pMnode, pReq->info.conn.user, MND_OPER_CONFIG_DNODE) != 0) {
|
||||||
|
tFreeSMCfgDnodeReq(&cfgReq);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
const STraceId *trace = &pReq->info.traceId;
|
||||||
|
SDCfgDnodeReq dcfgReq = {0};
|
||||||
|
if (strncasecmp(cfgReq.config, "encrypt_key", 12) == 0) {
|
||||||
|
strcpy(dcfgReq.config, cfgReq.config);
|
||||||
|
strcpy(dcfgReq.value, cfgReq.value);
|
||||||
|
tFreeSMCfgDnodeReq(&cfgReq);
|
||||||
|
return mndProcessCreateEncryptKeyReqImpl(pReq, cfgReq.dnodeId, &dcfgReq);
|
||||||
|
} else {
|
||||||
|
terrno = TSDB_CODE_PAR_INTERNAL_ERROR;
|
||||||
|
tFreeSMCfgDnodeReq(&cfgReq);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t mndProcessCreateEncryptKeyRsp(SRpcMsg *pRsp) {
|
static int32_t mndProcessCreateEncryptKeyRsp(SRpcMsg *pRsp) {
|
||||||
SMnode *pMnode = pRsp->info.node;
|
SMnode *pMnode = pRsp->info.node;
|
||||||
int16_t nSuccess = 0;
|
int16_t nSuccess = 0;
|
||||||
|
@ -1591,8 +1632,9 @@ static int32_t mndProcessCreateEncryptKeyRsp(SRpcMsg *pRsp) {
|
||||||
atomic_store_8(&pMnode->encryptMgmt.encrypting, 0);
|
atomic_store_8(&pMnode->encryptMgmt.encrypting, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
mInfo("create encrypt key rsp, nReq:%" PRIi16 ", nSucess:%" PRIi16 ", nFailed:%" PRIi16 ", %s", nReq, nSuccess,
|
const STraceId *trace = &pRsp->info.traceId;
|
||||||
nFailed, finished ? "encrypt done" : "in encrypting") return 0;
|
mGInfo("msg:%p, create encrypt key rsp, nReq:%" PRIi16 ", nSucess:%" PRIi16 ", nFailed:%" PRIi16 ", %s", pRsp, nReq,
|
||||||
|
nSuccess, nFailed, finished ? "encrypt done" : "in encrypting") return 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -477,16 +477,16 @@ static int32_t mndInitWal(SMnode *pMnode) {
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(TD_ENTERPRISE)
|
#if defined(TD_ENTERPRISE)
|
||||||
if(tsiEncryptAlgorithm == DND_CA_SM4 && (tsiEncryptScope & DND_CS_MNODE_WAL) == DND_CS_MNODE_WAL){
|
// if(tsiEncryptAlgorithm == DND_CA_SM4 && (tsiEncryptScope & DND_CS_MNODE_WAL) == DND_CS_MNODE_WAL){
|
||||||
cfg.encryptAlgorithm = (tsiEncryptScope & DND_CS_MNODE_WAL)? tsiEncryptAlgorithm : 0;
|
// cfg.encryptAlgorithm = (tsiEncryptScope & DND_CS_MNODE_WAL)? tsiEncryptAlgorithm : 0;
|
||||||
if(tsEncryptKey[0] == '\0'){
|
// if(tsEncryptKey[0] == '\0'){
|
||||||
terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
|
// terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
|
||||||
return -1;
|
// return -1;
|
||||||
}
|
// }
|
||||||
else{
|
// else{
|
||||||
strncpy(cfg.encryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
|
// strncpy(cfg.encryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pMnode->pWal = walOpen(path, &cfg);
|
pMnode->pWal = walOpen(path, &cfg);
|
||||||
|
|
|
@ -246,15 +246,15 @@ int vnodeDecodeConfig(const SJson *pJson, void *pObj) {
|
||||||
tjsonGetNumberValue(pJson, "tsdb.encryptAlgorithm", pCfg->tsdbCfg.encryptAlgorithm, code);
|
tjsonGetNumberValue(pJson, "tsdb.encryptAlgorithm", pCfg->tsdbCfg.encryptAlgorithm, code);
|
||||||
if (code < 0) return -1;
|
if (code < 0) return -1;
|
||||||
#if defined(TD_ENTERPRISE)
|
#if defined(TD_ENTERPRISE)
|
||||||
if(pCfg->tsdbCfg.encryptAlgorithm == DND_CA_SM4){
|
// if(pCfg->tsdbCfg.encryptAlgorithm == DND_CA_SM4){
|
||||||
if(tsEncryptKey[0] == 0){
|
// if(tsEncryptKey[0] == 0){
|
||||||
terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
|
// terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
|
||||||
return -1;
|
// return -1;
|
||||||
}
|
// }
|
||||||
else{
|
// else{
|
||||||
strncpy(pCfg->tsdbCfg.encryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
|
// strncpy(pCfg->tsdbCfg.encryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
#endif
|
#endif
|
||||||
tjsonGetNumberValue(pJson, "wal.vgId", pCfg->walCfg.vgId, code);
|
tjsonGetNumberValue(pJson, "wal.vgId", pCfg->walCfg.vgId, code);
|
||||||
if (code < 0) return -1;
|
if (code < 0) return -1;
|
||||||
|
@ -273,28 +273,28 @@ int vnodeDecodeConfig(const SJson *pJson, void *pObj) {
|
||||||
tjsonGetNumberValue(pJson, "wal.encryptAlgorithm", pCfg->walCfg.encryptAlgorithm, code);
|
tjsonGetNumberValue(pJson, "wal.encryptAlgorithm", pCfg->walCfg.encryptAlgorithm, code);
|
||||||
if (code < 0) return -1;
|
if (code < 0) return -1;
|
||||||
#if defined(TD_ENTERPRISE)
|
#if defined(TD_ENTERPRISE)
|
||||||
if(pCfg->walCfg.encryptAlgorithm == DND_CA_SM4){
|
// if(pCfg->walCfg.encryptAlgorithm == DND_CA_SM4){
|
||||||
if(tsEncryptKey[0] == 0){
|
// if(tsEncryptKey[0] == 0){
|
||||||
terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
|
// terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
|
||||||
return -1;
|
// return -1;
|
||||||
}
|
// }
|
||||||
else{
|
// else{
|
||||||
strncpy(pCfg->walCfg.encryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
|
// strncpy(pCfg->walCfg.encryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
#endif
|
#endif
|
||||||
tjsonGetNumberValue(pJson, "tdbEncryptAlgorithm", pCfg->tdbEncryptAlgorithm, code);
|
tjsonGetNumberValue(pJson, "tdbEncryptAlgorithm", pCfg->tdbEncryptAlgorithm, code);
|
||||||
if (code < 0) return -1;
|
if (code < 0) return -1;
|
||||||
#if defined(TD_ENTERPRISE)
|
#if defined(TD_ENTERPRISE)
|
||||||
if(pCfg->tdbEncryptAlgorithm == DND_CA_SM4){
|
// if(pCfg->tdbEncryptAlgorithm == DND_CA_SM4){
|
||||||
if(tsEncryptKey[0] == 0){
|
// if(tsEncryptKey[0] == 0){
|
||||||
terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
|
// terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
|
||||||
return -1;
|
// return -1;
|
||||||
}
|
// }
|
||||||
else{
|
// else{
|
||||||
strncpy(pCfg->tdbEncryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
|
// strncpy(pCfg->tdbEncryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
#endif
|
#endif
|
||||||
tjsonGetNumberValue(pJson, "sstTrigger", pCfg->sttTrigger, code);
|
tjsonGetNumberValue(pJson, "sstTrigger", pCfg->sttTrigger, code);
|
||||||
if (code < 0) pCfg->sttTrigger = TSDB_DEFAULT_SST_TRIGGER;
|
if (code < 0) pCfg->sttTrigger = TSDB_DEFAULT_SST_TRIGGER;
|
||||||
|
|
|
@ -5713,6 +5713,11 @@ static int32_t fillCmdSql(STranslateContext* pCxt, int16_t msgType, void* pReq)
|
||||||
FILL_CMD_SQL(sql, sqlLen, pCmdReq, SMCfgClusterReq, pReq);
|
FILL_CMD_SQL(sql, sqlLen, pCmdReq, SMCfgClusterReq, pReq);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TDMT_MND_CREATE_ENCRYPT_KEY: {
|
||||||
|
FILL_CMD_SQL(sql, sqlLen, pCmdReq, SMCfgDnodeReq, pReq);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -6908,7 +6913,20 @@ static int32_t translateAlterDnode(STranslateContext* pCxt, SAlterDnodeStmt* pSt
|
||||||
strcpy(cfgReq.config, pStmt->config);
|
strcpy(cfgReq.config, pStmt->config);
|
||||||
strcpy(cfgReq.value, pStmt->value);
|
strcpy(cfgReq.value, pStmt->value);
|
||||||
|
|
||||||
int32_t code = buildCmdMsg(pCxt, TDMT_MND_CONFIG_DNODE, (FSerializeFunc)tSerializeSMCfgDnodeReq, &cfgReq);
|
int32_t code = 0;
|
||||||
|
if (0 == strncasecmp(cfgReq.config, "encrypt_key", 12)) {
|
||||||
|
int32_t klen = strlen(cfgReq.value);
|
||||||
|
if (klen > ENCRYPT_KEY_LEN || klen < ENCRYPT_KEY_LEN_MIN) {
|
||||||
|
tFreeSMCfgDnodeReq(&cfgReq);
|
||||||
|
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_DNODE_INVALID_ENCRYPT_KLEN,
|
||||||
|
"Invalid encryption key length: %d, valid range [%d,%d]", klen,
|
||||||
|
ENCRYPT_KEY_LEN_MIN, ENCRYPT_KEY_LEN);
|
||||||
|
}
|
||||||
|
code = buildCmdMsg(pCxt, TDMT_MND_CREATE_ENCRYPT_KEY, (FSerializeFunc)tSerializeSMCfgDnodeReq, &cfgReq);
|
||||||
|
} else {
|
||||||
|
code = buildCmdMsg(pCxt, TDMT_MND_CONFIG_DNODE, (FSerializeFunc)tSerializeSMCfgDnodeReq, &cfgReq);
|
||||||
|
}
|
||||||
|
|
||||||
tFreeSMCfgDnodeReq(&cfgReq);
|
tFreeSMCfgDnodeReq(&cfgReq);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -358,6 +358,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_NO_ENCRYPT_KEY, "Dnode can not get enc
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_ENCRYPT_CONFIG, "invalid encryption configuration")
|
TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_ENCRYPT_CONFIG, "invalid encryption configuration")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_ENCRYPTKEY, "invalid encryption key")
|
TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_ENCRYPTKEY, "invalid encryption key")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_ENCRYPTKEY_CHANGED, "encryption key was changed")
|
TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_ENCRYPTKEY_CHANGED, "encryption key was changed")
|
||||||
|
TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_ENCRYPT_KLEN, "Invalid encryption key length")
|
||||||
|
|
||||||
// vnode
|
// vnode
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_VND_INVALID_VGROUP_ID, "Vnode is closed or removed")
|
TAOS_DEFINE_ERROR(TSDB_CODE_VND_INVALID_VGROUP_ID, "Vnode is closed or removed")
|
||||||
|
|
|
@ -42,17 +42,17 @@ class TDTestCase:
|
||||||
tdSql.query('show create database scd;')
|
tdSql.query('show create database scd;')
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0, 0, 'scd')
|
tdSql.checkData(0, 0, 'scd')
|
||||||
tdSql.checkData(0, 1, "CREATE DATABASE `scd` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 2 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0")
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 2 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
tdSql.query('show create database scd2;')
|
tdSql.query('show create database scd2;')
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0, 0, 'scd2')
|
tdSql.checkData(0, 0, 'scd2')
|
||||||
tdSql.checkData(0, 1, "CREATE DATABASE `scd2` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 3 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0")
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd2` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 3 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
tdSql.query('show create database scd4')
|
tdSql.query('show create database scd4')
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0, 0, 'scd4')
|
tdSql.checkData(0, 0, 'scd4')
|
||||||
tdSql.checkData(0, 1, "CREATE DATABASE `scd4` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 13 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0")
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd4` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 13 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
|
|
||||||
self.restartTaosd(1, dbname='scd')
|
self.restartTaosd(1, dbname='scd')
|
||||||
|
@ -60,17 +60,17 @@ class TDTestCase:
|
||||||
tdSql.query('show create database scd;')
|
tdSql.query('show create database scd;')
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0, 0, 'scd')
|
tdSql.checkData(0, 0, 'scd')
|
||||||
tdSql.checkData(0, 1, "CREATE DATABASE `scd` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 2 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0")
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 2 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
tdSql.query('show create database scd2;')
|
tdSql.query('show create database scd2;')
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0, 0, 'scd2')
|
tdSql.checkData(0, 0, 'scd2')
|
||||||
tdSql.checkData(0, 1, "CREATE DATABASE `scd2` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 3 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0")
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd2` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 3 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
tdSql.query('show create database scd4')
|
tdSql.query('show create database scd4')
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0, 0, 'scd4')
|
tdSql.checkData(0, 0, 'scd4')
|
||||||
tdSql.checkData(0, 1, "CREATE DATABASE `scd4` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 13 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0")
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd4` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 13 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
|
|
||||||
tdSql.execute('drop database scd')
|
tdSql.execute('drop database scd')
|
||||||
|
|
|
@ -65,7 +65,7 @@ class TDTestCase:
|
||||||
|
|
||||||
tdSql.query('select count(*),db_name, stable_name from information_schema.ins_tables group by db_name, stable_name;')
|
tdSql.query('select count(*),db_name, stable_name from information_schema.ins_tables group by db_name, stable_name;')
|
||||||
tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
tdSql.checkData(0, 0, 30)
|
tdSql.checkData(0, 0, 31)
|
||||||
tdSql.checkData(0, 1, 'information_schema')
|
tdSql.checkData(0, 1, 'information_schema')
|
||||||
tdSql.checkData(0, 2, None)
|
tdSql.checkData(0, 2, None)
|
||||||
tdSql.checkData(1, 0, 3)
|
tdSql.checkData(1, 0, 3)
|
||||||
|
@ -77,7 +77,7 @@ class TDTestCase:
|
||||||
|
|
||||||
tdSql.query('select count(1) v,db_name, stable_name from information_schema.ins_tables group by db_name, stable_name order by v desc;')
|
tdSql.query('select count(1) v,db_name, stable_name from information_schema.ins_tables group by db_name, stable_name order by v desc;')
|
||||||
tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
tdSql.checkData(0, 0, 30)
|
tdSql.checkData(0, 0, 31)
|
||||||
tdSql.checkData(0, 1, 'information_schema')
|
tdSql.checkData(0, 1, 'information_schema')
|
||||||
tdSql.checkData(0, 2, None)
|
tdSql.checkData(0, 2, None)
|
||||||
tdSql.checkData(1, 0, 5)
|
tdSql.checkData(1, 0, 5)
|
||||||
|
@ -93,7 +93,7 @@ class TDTestCase:
|
||||||
tdSql.checkData(1, 1, 'performance_schema')
|
tdSql.checkData(1, 1, 'performance_schema')
|
||||||
tdSql.checkData(0, 0, 3)
|
tdSql.checkData(0, 0, 3)
|
||||||
tdSql.checkData(0, 1, 'tbl_count')
|
tdSql.checkData(0, 1, 'tbl_count')
|
||||||
tdSql.checkData(2, 0, 30)
|
tdSql.checkData(2, 0, 31)
|
||||||
tdSql.checkData(2, 1, 'information_schema')
|
tdSql.checkData(2, 1, 'information_schema')
|
||||||
|
|
||||||
tdSql.query("select count(*) from information_schema.ins_tables where db_name='tbl_count'")
|
tdSql.query("select count(*) from information_schema.ins_tables where db_name='tbl_count'")
|
||||||
|
@ -106,7 +106,7 @@ class TDTestCase:
|
||||||
|
|
||||||
tdSql.query('select count(*) from information_schema.ins_tables')
|
tdSql.query('select count(*) from information_schema.ins_tables')
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0, 0, 38)
|
tdSql.checkData(0, 0, 39)
|
||||||
|
|
||||||
|
|
||||||
tdSql.execute('create table stba (ts timestamp, c1 bool, c2 tinyint, c3 smallint, c4 int, c5 bigint, c6 float, c7 double, c8 binary(10), c9 nchar(10), c10 tinyint unsigned, c11 smallint unsigned, c12 int unsigned, c13 bigint unsigned) TAGS(t1 int, t2 binary(10), t3 double);')
|
tdSql.execute('create table stba (ts timestamp, c1 bool, c2 tinyint, c3 smallint, c4 int, c5 bigint, c6 float, c7 double, c8 binary(10), c9 nchar(10), c10 tinyint unsigned, c11 smallint unsigned, c12 int unsigned, c13 bigint unsigned) TAGS(t1 int, t2 binary(10), t3 double);')
|
||||||
|
@ -189,7 +189,7 @@ class TDTestCase:
|
||||||
tdSql.checkData(2, 0, 5)
|
tdSql.checkData(2, 0, 5)
|
||||||
tdSql.checkData(2, 1, 'performance_schema')
|
tdSql.checkData(2, 1, 'performance_schema')
|
||||||
tdSql.checkData(2, 2, None)
|
tdSql.checkData(2, 2, None)
|
||||||
tdSql.checkData(3, 0, 30)
|
tdSql.checkData(3, 0, 31)
|
||||||
tdSql.checkData(3, 1, 'information_schema')
|
tdSql.checkData(3, 1, 'information_schema')
|
||||||
tdSql.checkData(3, 2, None)
|
tdSql.checkData(3, 2, None)
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ class TDTestCase:
|
||||||
tdSql.checkData(2, 0, 5)
|
tdSql.checkData(2, 0, 5)
|
||||||
tdSql.checkData(2, 1, 'performance_schema')
|
tdSql.checkData(2, 1, 'performance_schema')
|
||||||
tdSql.checkData(2, 2, None)
|
tdSql.checkData(2, 2, None)
|
||||||
tdSql.checkData(3, 0, 30)
|
tdSql.checkData(3, 0, 31)
|
||||||
tdSql.checkData(3, 1, 'information_schema')
|
tdSql.checkData(3, 1, 'information_schema')
|
||||||
tdSql.checkData(3, 2, None)
|
tdSql.checkData(3, 2, None)
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ class TDTestCase:
|
||||||
tdSql.checkData(0, 1, 'tbl_count')
|
tdSql.checkData(0, 1, 'tbl_count')
|
||||||
tdSql.checkData(1, 0, 5)
|
tdSql.checkData(1, 0, 5)
|
||||||
tdSql.checkData(1, 1, 'performance_schema')
|
tdSql.checkData(1, 1, 'performance_schema')
|
||||||
tdSql.checkData(2, 0, 30)
|
tdSql.checkData(2, 0, 31)
|
||||||
tdSql.checkData(2, 1, 'information_schema')
|
tdSql.checkData(2, 1, 'information_schema')
|
||||||
|
|
||||||
tdSql.query("select count(*) from information_schema.ins_tables where db_name='tbl_count'")
|
tdSql.query("select count(*) from information_schema.ins_tables where db_name='tbl_count'")
|
||||||
|
@ -228,7 +228,7 @@ class TDTestCase:
|
||||||
|
|
||||||
tdSql.query('select count(*) from information_schema.ins_tables')
|
tdSql.query('select count(*) from information_schema.ins_tables')
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0, 0, 39)
|
tdSql.checkData(0, 0, 40)
|
||||||
|
|
||||||
|
|
||||||
tdSql.execute('drop database tbl_count')
|
tdSql.execute('drop database tbl_count')
|
||||||
|
|
|
@ -58,7 +58,7 @@ endi
|
||||||
|
|
||||||
sql select tbname from information_schema.ins_tables;
|
sql select tbname from information_schema.ins_tables;
|
||||||
print $rows $data00
|
print $rows $data00
|
||||||
if $rows != 39 then
|
if $rows != 40 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data00 != @ins_tables@ then
|
if $data00 != @ins_tables@ then
|
||||||
|
|
|
@ -53,7 +53,7 @@ sql select stable_name,count(table_name) from information_schema.ins_tables grou
|
||||||
if $rows != 3 then
|
if $rows != 3 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data01 != 36 then
|
if $data01 != 37 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data11 != 10 then
|
if $data11 != 10 then
|
||||||
|
@ -72,7 +72,7 @@ endi
|
||||||
if $data11 != 5 then
|
if $data11 != 5 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data21 != 30 then
|
if $data21 != 31 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data31 != 5 then
|
if $data31 != 5 then
|
||||||
|
@ -97,7 +97,7 @@ endi
|
||||||
if $data42 != 3 then
|
if $data42 != 3 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data52 != 30 then
|
if $data52 != 31 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data62 != 5 then
|
if $data62 != 5 then
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
import sys
|
||||||
|
from util.log import *
|
||||||
|
from util.cases import *
|
||||||
|
from util.sql import *
|
||||||
|
from util.dnodes import tdDnodes
|
||||||
|
from math import inf
|
||||||
|
|
||||||
|
class TDTestCase:
|
||||||
|
def caseDescription(self):
|
||||||
|
'''
|
||||||
|
case1<shenglian zhou>: [TD-11204]Difference improvement that can ignore negative
|
||||||
|
'''
|
||||||
|
return
|
||||||
|
|
||||||
|
def init(self, conn, logSql, replicaVer=1):
|
||||||
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
|
tdSql.init(conn.cursor(), False)
|
||||||
|
self._conn = conn
|
||||||
|
|
||||||
|
def restartTaosd(self, index=1, dbname="db"):
|
||||||
|
tdDnodes.stop(index)
|
||||||
|
tdDnodes.startWithoutSleep(index)
|
||||||
|
tdSql.execute(f"use scd")
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
print("running {}".format(__file__))
|
||||||
|
tdSql.execute("drop database if exists scd")
|
||||||
|
tdSql.execute("create database if not exists scd")
|
||||||
|
tdSql.execute('use scd')
|
||||||
|
tdSql.execute('create table stb1 (ts timestamp, c1 bool, c2 tinyint, c3 smallint, c4 int, c5 bigint, c6 float, c7 double, c8 binary(10), c9 nchar(10), c10 tinyint unsigned, c11 smallint unsigned, c12 int unsigned, c13 bigint unsigned) TAGS(t1 int, t2 binary(10), t3 double);')
|
||||||
|
|
||||||
|
tdSql.execute("create table tb1 using stb1 tags(1,'1',1.0);")
|
||||||
|
|
||||||
|
tdSql.execute("create table tb2 using stb1 tags(2,'2',2.0);")
|
||||||
|
|
||||||
|
tdSql.execute("create table tb3 using stb1 tags(3,'3',3.0);")
|
||||||
|
|
||||||
|
tdSql.execute('create database scd2 stt_trigger 3;')
|
||||||
|
|
||||||
|
tdSql.execute('create database scd4 stt_trigger 13;')
|
||||||
|
|
||||||
|
tdSql.query('show create database scd;')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 'scd')
|
||||||
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 2 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
|
tdSql.query('show create database scd2;')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 'scd2')
|
||||||
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd2` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 3 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
|
tdSql.query('show create database scd4')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 'scd4')
|
||||||
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd4` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 13 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
|
|
||||||
|
self.restartTaosd(1, dbname='scd')
|
||||||
|
|
||||||
|
tdSql.query('show create database scd;')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 'scd')
|
||||||
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 2 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
|
tdSql.query('show create database scd2;')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 'scd2')
|
||||||
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd2` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 3 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
|
tdSql.query('show create database scd4')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 'scd4')
|
||||||
|
tdSql.checkData(0, 1, "CREATE DATABASE `scd4` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 13 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0 ENCRYPT_ALGORITHM 'none'")
|
||||||
|
|
||||||
|
|
||||||
|
tdSql.execute('drop database scd')
|
||||||
|
def stop(self):
|
||||||
|
tdSql.close()
|
||||||
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
||||||
|
tdCases.addWindows(__file__, TDTestCase())
|
||||||
|
tdCases.addLinux(__file__, TDTestCase())
|
|
@ -0,0 +1,240 @@
|
||||||
|
import sys
|
||||||
|
from util.log import *
|
||||||
|
from util.cases import *
|
||||||
|
from util.sql import *
|
||||||
|
from util.dnodes import tdDnodes
|
||||||
|
from math import inf
|
||||||
|
|
||||||
|
class TDTestCase:
|
||||||
|
def caseDescription(self):
|
||||||
|
'''
|
||||||
|
case1<shenglian zhou>: [TD-21890] table count scan test case
|
||||||
|
'''
|
||||||
|
return
|
||||||
|
|
||||||
|
def init(self, conn, logSql, replicaVer=1):
|
||||||
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
|
tdSql.init(conn.cursor(), True)
|
||||||
|
self._conn = conn
|
||||||
|
|
||||||
|
def restartTaosd(self, index=1, dbname="db"):
|
||||||
|
tdDnodes.stop(index)
|
||||||
|
tdDnodes.startWithoutSleep(index)
|
||||||
|
tdSql.execute(f"use tbl_count")
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
print("running {}".format(__file__))
|
||||||
|
tdSql.execute("drop database if exists tbl_count")
|
||||||
|
tdSql.execute("create database if not exists tbl_count")
|
||||||
|
tdSql.execute('use tbl_count')
|
||||||
|
tdSql.execute('create table stb1 (ts timestamp, c1 bool, c2 tinyint, c3 smallint, c4 int, c5 bigint, c6 float, c7 double, c8 binary(10), c9 nchar(10), c10 tinyint unsigned, c11 smallint unsigned, c12 int unsigned, c13 bigint unsigned) TAGS(t1 int, t2 binary(10), t3 double);')
|
||||||
|
|
||||||
|
tdSql.execute("create table tb1 using stb1 tags(1,'1',1.0);")
|
||||||
|
|
||||||
|
tdSql.execute("create table tb2 using stb1 tags(2,'2',2.0);")
|
||||||
|
|
||||||
|
tdSql.execute("create table tb3 using stb1 tags(3,'3',3.0);")
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb1 values (\'2021-11-11 09:00:00\',true,1,1,1,1,1,1,"123","1234",1,1,1,1);')
|
||||||
|
|
||||||
|
tdSql.execute("insert into tb1 values ('2021-11-11 09:00:01',true,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);")
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb1 values (\'2021-11-11 09:00:02\',true,2,NULL,2,NULL,2,NULL,"234",NULL,2,NULL,2,NULL);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb1 values (\'2021-11-11 09:00:03\',false,NULL,3,NULL,3,NULL,3,NULL,"3456",NULL,3,NULL,3);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb1 values (\'2021-11-11 09:00:04\',true,4,4,4,4,4,4,"456","4567",4,4,4,4);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb1 values (\'2021-11-11 09:00:05\',true,127,32767,2147483647,9223372036854775807,3.402823466e+38,1.79769e+308,"567","5678",254,65534,4294967294,9223372036854775807);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb1 values (\'2021-11-11 09:00:06\',true,-127,-32767,-2147483647,-9223372036854775807,-3.402823466e+38,-1.79769e+308,"678","6789",0,0,0,0);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb2 values (\'2021-11-11 09:00:00\',true,1,1,1,1,1,1,"111","1111",1,1,1,1);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb2 values (\'2021-11-11 09:00:01\',true,2,2,2,2,2,2,"222","2222",2,2,2,2);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb2 values (\'2021-11-11 09:00:02\',true,3,3,2,3,3,3,"333","3333",3,3,3,3);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb2 values (\'2021-11-11 09:00:03\',false,4,4,4,4,4,4,"444","4444",4,4,4,4);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb2 values (\'2021-11-11 09:00:04\',true,5,5,5,5,5,5,"555","5555",5,5,5,5);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb2 values (\'2021-11-11 09:00:05\',true,6,6,6,6,6,6,"666","6666",6,6,6,6);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tb2 values (\'2021-11-11 09:00:06\',true,7,7,7,7,7,7,"777","7777",7,7,7,7);')
|
||||||
|
|
||||||
|
tdSql.query('select count(*),db_name, stable_name from information_schema.ins_tables group by db_name, stable_name;')
|
||||||
|
tdSql.checkRows(3)
|
||||||
|
tdSql.checkData(0, 0, 31)
|
||||||
|
tdSql.checkData(0, 1, 'information_schema')
|
||||||
|
tdSql.checkData(0, 2, None)
|
||||||
|
tdSql.checkData(1, 0, 3)
|
||||||
|
tdSql.checkData(1, 1, 'tbl_count')
|
||||||
|
tdSql.checkData(1, 2, 'stb1')
|
||||||
|
tdSql.checkData(2, 0, 5)
|
||||||
|
tdSql.checkData(2, 1, 'performance_schema')
|
||||||
|
tdSql.checkData(2, 2, None)
|
||||||
|
|
||||||
|
tdSql.query('select count(1) v,db_name, stable_name from information_schema.ins_tables group by db_name, stable_name order by v desc;')
|
||||||
|
tdSql.checkRows(3)
|
||||||
|
tdSql.checkData(0, 0, 31)
|
||||||
|
tdSql.checkData(0, 1, 'information_schema')
|
||||||
|
tdSql.checkData(0, 2, None)
|
||||||
|
tdSql.checkData(1, 0, 5)
|
||||||
|
tdSql.checkData(1, 1, 'performance_schema')
|
||||||
|
tdSql.checkData(1, 2, None)
|
||||||
|
tdSql.checkData(2, 0, 3)
|
||||||
|
tdSql.checkData(2, 1, 'tbl_count')
|
||||||
|
tdSql.checkData(2, 2, 'stb1')
|
||||||
|
|
||||||
|
tdSql.query('select count(1) v,db_name from information_schema.ins_tables group by db_name order by v asc')
|
||||||
|
tdSql.checkRows(3)
|
||||||
|
tdSql.checkData(1, 0, 5)
|
||||||
|
tdSql.checkData(1, 1, 'performance_schema')
|
||||||
|
tdSql.checkData(0, 0, 3)
|
||||||
|
tdSql.checkData(0, 1, 'tbl_count')
|
||||||
|
tdSql.checkData(2, 0, 31)
|
||||||
|
tdSql.checkData(2, 1, 'information_schema')
|
||||||
|
|
||||||
|
tdSql.query("select count(*) from information_schema.ins_tables where db_name='tbl_count'")
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 3)
|
||||||
|
|
||||||
|
tdSql.query('select count(*) from information_schema.ins_tables where db_name=\'tbl_count\' and stable_name="stb1";')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 3)
|
||||||
|
|
||||||
|
tdSql.query('select count(*) from information_schema.ins_tables')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 39)
|
||||||
|
|
||||||
|
|
||||||
|
tdSql.execute('create table stba (ts timestamp, c1 bool, c2 tinyint, c3 smallint, c4 int, c5 bigint, c6 float, c7 double, c8 binary(10), c9 nchar(10), c10 tinyint unsigned, c11 smallint unsigned, c12 int unsigned, c13 bigint unsigned) TAGS(t1 int, t2 binary(10), t3 double);')
|
||||||
|
|
||||||
|
tdSql.execute("create table tba1 using stba tags(1,'1',1.0);")
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:00\',true, 1,1,1,1,1,1,"111","1111",1,1,1,1);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:01\',true, 2,2,2,2,2,2,"222","2222",2,2,2,2);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:02\',true, 3,3,2,3,3,3,"333","3333",3,3,3,3);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:03\',false,4,4,4,4,4,4,"444","4444",4,4,4,4);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:04\',true, 5,5,5,5,5,5,"555","5555",5,5,5,5);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:05\',true, 6,6,6,6,6,6,"666","6666",6,6,6,6);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:06\',true, 7,7,7,7,7,7,"777","7777",7,7,7,7);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:07\',true, 8,8,8,8,8,8,"888","8888",8,8,8,8);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:08\',true, 9,9,9,9,9,9,"999","9999",9,9,9,9);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:09\',true, 0,0,0,0,0,0,"000","0000",0,0,0,0);')
|
||||||
|
|
||||||
|
self.restartTaosd(1, dbname='tbl_count')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:10\',true, 1,1,1,1,1,1,"111","1111",1,1,1,1);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:11\',true, 2,2,2,2,2,2,"222","2222",2,2,2,2);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:12\',true, 3,3,2,3,3,3,"333","3333",3,3,3,3);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:13\',false,4,4,4,4,4,4,"444","4444",4,4,4,4);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:14\',true, 5,5,5,5,5,5,"555","5555",5,5,5,5);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:15\',true, 6,6,6,6,6,6,"666","6666",6,6,6,6);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:16\',true, 7,7,7,7,7,7,"777","7777",7,7,7,7);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:17\',true, 8,8,8,8,8,8,"888","8888",8,8,8,8);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:18\',true, 9,9,9,9,9,9,"999","9999",9,9,9,9);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:19\',true, 0,0,0,0,0,0,"000","0000",0,0,0,0);')
|
||||||
|
|
||||||
|
self.restartTaosd(1, dbname='tbl_count')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:20\',true, 1,1,1,1,1,1,"111","1111",1,1,1,1);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:21\',true, 2,2,2,2,2,2,"222","2222",2,2,2,2);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:22\',true, 3,3,2,3,3,3,"333","3333",3,3,3,3);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:23\',false,4,4,4,4,4,4,"444","4444",4,4,4,4);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:24\',true, 5,5,5,5,5,5,"555","5555",5,5,5,5);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:25\',true, 6,6,6,6,6,6,"666","6666",6,6,6,6);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:26\',true, 7,7,7,7,7,7,"777","7777",7,7,7,7);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:27\',true, 8,8,8,8,8,8,"888","8888",8,8,8,8);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:28\',true, 9,9,9,9,9,9,"999","9999",9,9,9,9);')
|
||||||
|
|
||||||
|
tdSql.execute('insert into tba1 values (\'2021-11-11 09:00:29\',true, 0,0,0,0,0,0,"000","0000",0,0,0,0);')
|
||||||
|
|
||||||
|
tdSql.query('select count(*) v,db_name, stable_name from information_schema.ins_tables group by db_name, stable_name order by v;')
|
||||||
|
tdSql.checkRows(4)
|
||||||
|
tdSql.checkData(0, 0, 1)
|
||||||
|
tdSql.checkData(0, 1, 'tbl_count')
|
||||||
|
tdSql.checkData(0, 2, 'stba')
|
||||||
|
|
||||||
|
tdSql.checkData(1, 0, 3)
|
||||||
|
tdSql.checkData(1, 1, 'tbl_count')
|
||||||
|
tdSql.checkData(1, 2, 'stb1')
|
||||||
|
tdSql.checkData(2, 0, 5)
|
||||||
|
tdSql.checkData(2, 1, 'performance_schema')
|
||||||
|
tdSql.checkData(2, 2, None)
|
||||||
|
tdSql.checkData(3, 0, 31)
|
||||||
|
tdSql.checkData(3, 1, 'information_schema')
|
||||||
|
tdSql.checkData(3, 2, None)
|
||||||
|
|
||||||
|
tdSql.query('select count(1) v,db_name, stable_name from information_schema.ins_tables group by db_name, stable_name order by v;')
|
||||||
|
tdSql.checkRows(4)
|
||||||
|
tdSql.checkData(0, 0, 1)
|
||||||
|
tdSql.checkData(0, 1, 'tbl_count')
|
||||||
|
tdSql.checkData(0, 2, 'stba')
|
||||||
|
tdSql.checkData(1, 0, 3)
|
||||||
|
tdSql.checkData(1, 1, 'tbl_count')
|
||||||
|
tdSql.checkData(1, 2, 'stb1')
|
||||||
|
tdSql.checkData(2, 0, 5)
|
||||||
|
tdSql.checkData(2, 1, 'performance_schema')
|
||||||
|
tdSql.checkData(2, 2, None)
|
||||||
|
tdSql.checkData(3, 0, 31)
|
||||||
|
tdSql.checkData(3, 1, 'information_schema')
|
||||||
|
tdSql.checkData(3, 2, None)
|
||||||
|
|
||||||
|
tdSql.query('select count(1) v,db_name from information_schema.ins_tables group by db_name order by v')
|
||||||
|
tdSql.checkRows(3)
|
||||||
|
|
||||||
|
tdSql.checkData(0, 0, 4)
|
||||||
|
tdSql.checkData(0, 1, 'tbl_count')
|
||||||
|
tdSql.checkData(1, 0, 5)
|
||||||
|
tdSql.checkData(1, 1, 'performance_schema')
|
||||||
|
tdSql.checkData(2, 0, 31)
|
||||||
|
tdSql.checkData(2, 1, 'information_schema')
|
||||||
|
|
||||||
|
tdSql.query("select count(*) from information_schema.ins_tables where db_name='tbl_count'")
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 4)
|
||||||
|
|
||||||
|
tdSql.query('select count(*) from information_schema.ins_tables where db_name=\'tbl_count\' and stable_name="stb1";')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 3)
|
||||||
|
|
||||||
|
tdSql.query('select count(*) from information_schema.ins_tables')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 40)
|
||||||
|
|
||||||
|
|
||||||
|
tdSql.execute('drop database tbl_count')
|
||||||
|
def stop(self):
|
||||||
|
tdSql.close()
|
||||||
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
||||||
|
tdCases.addWindows(__file__, TDTestCase())
|
||||||
|
tdCases.addLinux(__file__, TDTestCase())
|
Loading…
Reference in New Issue