merge from master
This commit is contained in:
commit
4dac6ac4f1
|
@ -4,7 +4,7 @@ PROJECT(TDengine)
|
||||||
IF (DEFINED VERNUMBER)
|
IF (DEFINED VERNUMBER)
|
||||||
SET(TD_VER_NUMBER ${VERNUMBER})
|
SET(TD_VER_NUMBER ${VERNUMBER})
|
||||||
ELSE ()
|
ELSE ()
|
||||||
SET(TD_VER_NUMBER "2.1.5.0")
|
SET(TD_VER_NUMBER "2.0.20.10")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
IF (DEFINED VERCOMPATIBLE)
|
IF (DEFINED VERCOMPATIBLE)
|
||||||
|
|
|
@ -777,7 +777,7 @@ function is_version_compatible() {
|
||||||
if [ -f ${script_dir}/driver/vercomp.txt ]; then
|
if [ -f ${script_dir}/driver/vercomp.txt ]; then
|
||||||
min_compatible_version=`cat ${script_dir}/driver/vercomp.txt`
|
min_compatible_version=`cat ${script_dir}/driver/vercomp.txt`
|
||||||
else
|
else
|
||||||
min_compatible_version=$(${script_dir}/bin/tqd -V | head -1 | cut -d ' ' -f 5)
|
min_compatible_version=$(${script_dir}/bin/taosd -V | head -1 | cut -d ' ' -f 5)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
vercomp $curr_version $min_compatible_version
|
vercomp $curr_version $min_compatible_version
|
||||||
|
|
|
@ -746,7 +746,7 @@ function is_version_compatible() {
|
||||||
if [ -f ${script_dir}/driver/vercomp.txt ]; then
|
if [ -f ${script_dir}/driver/vercomp.txt ]; then
|
||||||
min_compatible_version=`cat ${script_dir}/driver/vercomp.txt`
|
min_compatible_version=`cat ${script_dir}/driver/vercomp.txt`
|
||||||
else
|
else
|
||||||
min_compatible_version=$(${script_dir}/bin/tqd -V | head -1 | cut -d ' ' -f 5)
|
min_compatible_version=$(${script_dir}/bin/powerd -V | head -1 | cut -d ' ' -f 5)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
vercomp $curr_version $min_compatible_version
|
vercomp $curr_version $min_compatible_version
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name: tdengine
|
name: tdengine
|
||||||
base: core18
|
base: core18
|
||||||
version: '2.1.5.0'
|
version: '2.0.20.10'
|
||||||
icon: snap/gui/t-dengine.svg
|
icon: snap/gui/t-dengine.svg
|
||||||
summary: an open-source big data platform designed and optimized for IoT.
|
summary: an open-source big data platform designed and optimized for IoT.
|
||||||
description: |
|
description: |
|
||||||
|
@ -72,7 +72,7 @@ parts:
|
||||||
- usr/bin/taosd
|
- usr/bin/taosd
|
||||||
- usr/bin/taos
|
- usr/bin/taos
|
||||||
- usr/bin/taosdemo
|
- usr/bin/taosdemo
|
||||||
- usr/lib/libtaos.so.2.1.5.0
|
- usr/lib/libtaos.so.2.0.20.10
|
||||||
- usr/lib/libtaos.so.1
|
- usr/lib/libtaos.so.1
|
||||||
- usr/lib/libtaos.so
|
- usr/lib/libtaos.so
|
||||||
|
|
||||||
|
|
|
@ -3192,6 +3192,7 @@ static void freeQueryInfoImpl(SQueryInfo* pQueryInfo) {
|
||||||
pQueryInfo->tsBuf = tsBufDestroy(pQueryInfo->tsBuf);
|
pQueryInfo->tsBuf = tsBufDestroy(pQueryInfo->tsBuf);
|
||||||
|
|
||||||
tfree(pQueryInfo->fillVal);
|
tfree(pQueryInfo->fillVal);
|
||||||
|
pQueryInfo->fillType = 0;
|
||||||
tfree(pQueryInfo->buf);
|
tfree(pQueryInfo->buf);
|
||||||
|
|
||||||
taosArrayDestroy(pQueryInfo->pUpstream);
|
taosArrayDestroy(pQueryInfo->pUpstream);
|
||||||
|
|
|
@ -38,7 +38,7 @@ uint16_t tsDnodeDnodePort = 6035; // udp/tcp
|
||||||
uint16_t tsSyncPort = 6040;
|
uint16_t tsSyncPort = 6040;
|
||||||
uint16_t tsArbitratorPort = 6042;
|
uint16_t tsArbitratorPort = 6042;
|
||||||
int32_t tsStatusInterval = 1; // second
|
int32_t tsStatusInterval = 1; // second
|
||||||
int32_t tsNumOfMnodes = 3;
|
int32_t tsNumOfMnodes = 1;
|
||||||
int8_t tsEnableVnodeBak = 1;
|
int8_t tsEnableVnodeBak = 1;
|
||||||
int8_t tsEnableTelemetryReporting = 1;
|
int8_t tsEnableTelemetryReporting = 1;
|
||||||
int8_t tsArbOnline = 0;
|
int8_t tsArbOnline = 0;
|
||||||
|
|
|
@ -110,19 +110,18 @@ typedef struct TAOS_MULTI_BIND {
|
||||||
int num;
|
int num;
|
||||||
} TAOS_MULTI_BIND;
|
} TAOS_MULTI_BIND;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DLL_EXPORT TAOS_STMT *taos_stmt_init(TAOS *taos);
|
DLL_EXPORT TAOS_STMT *taos_stmt_init(TAOS *taos);
|
||||||
DLL_EXPORT int taos_stmt_prepare(TAOS_STMT *stmt, const char *sql, unsigned long length);
|
DLL_EXPORT int taos_stmt_prepare(TAOS_STMT *stmt, const char *sql, unsigned long length);
|
||||||
DLL_EXPORT int taos_stmt_set_tbname_tags(TAOS_STMT* stmt, const char* name, TAOS_BIND* tags);
|
DLL_EXPORT int taos_stmt_set_tbname_tags(TAOS_STMT* stmt, const char* name, TAOS_BIND* tags);
|
||||||
DLL_EXPORT int taos_stmt_set_tbname(TAOS_STMT* stmt, const char* name);
|
DLL_EXPORT int taos_stmt_set_tbname(TAOS_STMT* stmt, const char* name);
|
||||||
DLL_EXPORT int taos_stmt_set_sub_tbname(TAOS_STMT* stmt, const char* name);
|
DLL_EXPORT int taos_stmt_set_sub_tbname(TAOS_STMT* stmt, const char* name);
|
||||||
|
|
||||||
DLL_EXPORT int taos_stmt_is_insert(TAOS_STMT *stmt, int *insert);
|
DLL_EXPORT int taos_stmt_is_insert(TAOS_STMT *stmt, int *insert);
|
||||||
DLL_EXPORT int taos_stmt_num_params(TAOS_STMT *stmt, int *nums);
|
DLL_EXPORT int taos_stmt_num_params(TAOS_STMT *stmt, int *nums);
|
||||||
int taos_stmt_get_param(TAOS_STMT *stmt, int idx, int *type, int *bytes);
|
DLL_EXPORT int taos_stmt_get_param(TAOS_STMT *stmt, int idx, int *type, int *bytes);
|
||||||
DLL_EXPORT int taos_stmt_bind_param(TAOS_STMT *stmt, TAOS_BIND *bind);
|
DLL_EXPORT int taos_stmt_bind_param(TAOS_STMT *stmt, TAOS_BIND *bind);
|
||||||
int taos_stmt_bind_param_batch(TAOS_STMT* stmt, TAOS_MULTI_BIND* bind);
|
DLL_EXPORT int taos_stmt_bind_param_batch(TAOS_STMT* stmt, TAOS_MULTI_BIND* bind);
|
||||||
int taos_stmt_bind_single_param_batch(TAOS_STMT* stmt, TAOS_MULTI_BIND* bind, int colIdx);
|
DLL_EXPORT int taos_stmt_bind_single_param_batch(TAOS_STMT* stmt, TAOS_MULTI_BIND* bind, int colIdx);
|
||||||
DLL_EXPORT int taos_stmt_add_batch(TAOS_STMT *stmt);
|
DLL_EXPORT int taos_stmt_add_batch(TAOS_STMT *stmt);
|
||||||
DLL_EXPORT int taos_stmt_execute(TAOS_STMT *stmt);
|
DLL_EXPORT int taos_stmt_execute(TAOS_STMT *stmt);
|
||||||
DLL_EXPORT TAOS_RES * taos_stmt_use_result(TAOS_STMT *stmt);
|
DLL_EXPORT TAOS_RES * taos_stmt_use_result(TAOS_STMT *stmt);
|
||||||
|
@ -141,7 +140,6 @@ DLL_EXPORT int taos_select_db(TAOS *taos, const char *db);
|
||||||
DLL_EXPORT int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields);
|
DLL_EXPORT int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields);
|
||||||
DLL_EXPORT void taos_stop_query(TAOS_RES *res);
|
DLL_EXPORT void taos_stop_query(TAOS_RES *res);
|
||||||
DLL_EXPORT bool taos_is_null(TAOS_RES *res, int32_t row, int32_t col);
|
DLL_EXPORT bool taos_is_null(TAOS_RES *res, int32_t row, int32_t col);
|
||||||
|
|
||||||
DLL_EXPORT int taos_fetch_block(TAOS_RES *res, TAOS_ROW *rows);
|
DLL_EXPORT int taos_fetch_block(TAOS_RES *res, TAOS_ROW *rows);
|
||||||
DLL_EXPORT int taos_validate_sql(TAOS *taos, const char *sql);
|
DLL_EXPORT int taos_validate_sql(TAOS *taos, const char *sql);
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ typedef struct {
|
||||||
int32_t vgId;
|
int32_t vgId;
|
||||||
char user[TSDB_USER_LEN];
|
char user[TSDB_USER_LEN];
|
||||||
char pass[TSDB_KEY_LEN];
|
char pass[TSDB_KEY_LEN];
|
||||||
char db[TSDB_ACCT_ID_LEN + TSDB_DB_NAME_LEN];
|
char db[TSDB_ACCT_ID_LEN + TSDB_DB_NAME_LEN]; // size must same with SVnodeObj.db[TSDB_ACCT_ID_LEN + TSDB_DB_NAME_LEN]
|
||||||
FCqWrite cqWrite;
|
FCqWrite cqWrite;
|
||||||
} SCqCfg;
|
} SCqCfg;
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,6 @@ extern char configDir[];
|
||||||
#define BUFFER_SIZE TSDB_MAX_ALLOWED_SQL_LEN
|
#define BUFFER_SIZE TSDB_MAX_ALLOWED_SQL_LEN
|
||||||
#define COND_BUF_LEN (BUFFER_SIZE - 30)
|
#define COND_BUF_LEN (BUFFER_SIZE - 30)
|
||||||
#define COL_BUFFER_LEN ((TSDB_COL_NAME_LEN + 15) * TSDB_MAX_COLUMNS)
|
#define COL_BUFFER_LEN ((TSDB_COL_NAME_LEN + 15) * TSDB_MAX_COLUMNS)
|
||||||
|
|
||||||
#define MAX_USERNAME_SIZE 64
|
#define MAX_USERNAME_SIZE 64
|
||||||
#define MAX_PASSWORD_SIZE 64
|
#define MAX_PASSWORD_SIZE 64
|
||||||
#define MAX_HOSTNAME_SIZE 253 // https://man7.org/linux/man-pages/man7/hostname.7.html
|
#define MAX_HOSTNAME_SIZE 253 // https://man7.org/linux/man-pages/man7/hostname.7.html
|
||||||
|
|
|
@ -1264,7 +1264,7 @@ static int taosGetTableDes(
|
||||||
fields[TSDB_DESCRIBE_METRIC_FIELD_INDEX].bytes + 1));
|
fields[TSDB_DESCRIBE_METRIC_FIELD_INDEX].bytes + 1));
|
||||||
tstrncpy(tableDes->cols[count].type,
|
tstrncpy(tableDes->cols[count].type,
|
||||||
(char *)row[TSDB_DESCRIBE_METRIC_TYPE_INDEX],
|
(char *)row[TSDB_DESCRIBE_METRIC_TYPE_INDEX],
|
||||||
min(16, fields[TSDB_DESCRIBE_METRIC_TYPE_INDEX].bytes) + 1);
|
min(16, fields[TSDB_DESCRIBE_METRIC_TYPE_INDEX].bytes + 1));
|
||||||
tableDes->cols[count].length =
|
tableDes->cols[count].length =
|
||||||
*((int *)row[TSDB_DESCRIBE_METRIC_LENGTH_INDEX]);
|
*((int *)row[TSDB_DESCRIBE_METRIC_LENGTH_INDEX]);
|
||||||
tstrncpy(tableDes->cols[count].note,
|
tstrncpy(tableDes->cols[count].note,
|
||||||
|
|
|
@ -5555,6 +5555,8 @@ static SSDataBlock* doIntervalAgg(void* param, bool* newgroup) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setTagValue(pOperator, pRuntimeEnv->current->pTable, pIntervalInfo->pCtx, pOperator->numOfOutput);
|
||||||
|
|
||||||
// the pDataBlock are always the same one, no need to call this again
|
// the pDataBlock are always the same one, no need to call this again
|
||||||
setInputDataBlock(pOperator, pIntervalInfo->pCtx, pBlock, pQueryAttr->order.order);
|
setInputDataBlock(pOperator, pIntervalInfo->pCtx, pBlock, pQueryAttr->order.order);
|
||||||
hashIntervalAgg(pOperator, &pIntervalInfo->resultRowInfo, pBlock, 0);
|
hashIntervalAgg(pOperator, &pIntervalInfo->resultRowInfo, pBlock, 0);
|
||||||
|
|
|
@ -391,11 +391,18 @@ int32_t columnValueAscendingComparator(char *f1, char *f2, int32_t type, int32_t
|
||||||
|
|
||||||
};
|
};
|
||||||
case TSDB_DATA_TYPE_NCHAR: { // todo handle the var string compare
|
case TSDB_DATA_TYPE_NCHAR: { // todo handle the var string compare
|
||||||
int32_t ret = tasoUcs4Compare(f1, f2, bytes);
|
int32_t len1 = varDataLen(f1);
|
||||||
if (ret == 0) {
|
int32_t len2 = varDataLen(f2);
|
||||||
return 0;
|
|
||||||
|
if (len1 != len2) {
|
||||||
|
return len1 > len2 ? 1 : -1;
|
||||||
|
} else {
|
||||||
|
int32_t ret = tasoUcs4Compare(varDataVal(f1), varDataVal(f2), len1);
|
||||||
|
if (ret == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return (ret < 0) ? -1 : 1;
|
||||||
}
|
}
|
||||||
return (ret < 0) ? -1 : 1;
|
|
||||||
};
|
};
|
||||||
case TSDB_DATA_TYPE_UTINYINT: DEFAULT_COMP(GET_UINT8_VAL(f1), GET_UINT8_VAL(f2));
|
case TSDB_DATA_TYPE_UTINYINT: DEFAULT_COMP(GET_UINT8_VAL(f1), GET_UINT8_VAL(f2));
|
||||||
case TSDB_DATA_TYPE_USMALLINT: DEFAULT_COMP(GET_UINT16_VAL(f1), GET_UINT16_VAL(f2));
|
case TSDB_DATA_TYPE_USMALLINT: DEFAULT_COMP(GET_UINT16_VAL(f1), GET_UINT16_VAL(f2));
|
||||||
|
|
|
@ -25,7 +25,7 @@ typedef struct {
|
||||||
uint32_t serverIp;
|
uint32_t serverIp;
|
||||||
int16_t port;
|
int16_t port;
|
||||||
int32_t bufferSize;
|
int32_t bufferSize;
|
||||||
void (*processBrokenLink)(int64_t handleId);
|
void (*processBrokenLink)(int64_t handleId, int32_t closedByApp);
|
||||||
int32_t (*processIncomingMsg)(int64_t handleId, void *buffer);
|
int32_t (*processIncomingMsg)(int64_t handleId, void *buffer);
|
||||||
void (*processIncomingConn)(SOCKET fd, uint32_t ip);
|
void (*processIncomingConn)(SOCKET fd, uint32_t ip);
|
||||||
} SPoolInfo;
|
} SPoolInfo;
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
extern void syncProcessTestMsg(SSyncMsg *pMsg, SOCKET connFd);
|
extern void syncProcessTestMsg(SSyncMsg *pMsg, SOCKET connFd);
|
||||||
static void arbSignalHandler(int32_t signum, void *sigInfo, void *context);
|
static void arbSignalHandler(int32_t signum, void *sigInfo, void *context);
|
||||||
static void arbProcessIncommingConnection(SOCKET connFd, uint32_t sourceIp);
|
static void arbProcessIncommingConnection(SOCKET connFd, uint32_t sourceIp);
|
||||||
static void arbProcessBrokenLink(int64_t rid);
|
static void arbProcessBrokenLink(int64_t rid, int32_t closedByApp);
|
||||||
static int32_t arbProcessPeerMsg(int64_t rid, void *buffer);
|
static int32_t arbProcessPeerMsg(int64_t rid, void *buffer);
|
||||||
static tsem_t tsArbSem;
|
static tsem_t tsArbSem;
|
||||||
static void * tsArbTcpPool;
|
static void * tsArbTcpPool;
|
||||||
|
@ -147,10 +147,10 @@ static void arbProcessIncommingConnection(SOCKET connFd, uint32_t sourceIp) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void arbProcessBrokenLink(int64_t rid) {
|
static void arbProcessBrokenLink(int64_t rid, int32_t closedByApp) {
|
||||||
SNodeConn *pNode = (SNodeConn *)rid;
|
SNodeConn *pNode = (SNodeConn *)rid;
|
||||||
|
|
||||||
sDebug("%s, TCP link is broken since %s, close connection", pNode->id, strerror(errno));
|
sDebug("%s, TCP link is broken since %s, closedByApp:%d", pNode->id, strerror(errno), closedByApp);
|
||||||
tfree(pNode);
|
tfree(pNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ static void syncProcessSyncRequest(char *pMsg, SSyncPeer *pPeer);
|
||||||
static void syncRecoverFromMaster(SSyncPeer *pPeer);
|
static void syncRecoverFromMaster(SSyncPeer *pPeer);
|
||||||
static void syncCheckPeerConnection(void *param, void *tmrId);
|
static void syncCheckPeerConnection(void *param, void *tmrId);
|
||||||
static int32_t syncSendPeersStatusMsgToPeer(SSyncPeer *pPeer, char ack, int8_t type, uint16_t tranId);
|
static int32_t syncSendPeersStatusMsgToPeer(SSyncPeer *pPeer, char ack, int8_t type, uint16_t tranId);
|
||||||
static void syncProcessBrokenLink(int64_t rid);
|
static void syncProcessBrokenLink(int64_t rid, int32_t closedByApp);
|
||||||
static int32_t syncProcessPeerMsg(int64_t rid, void *buffer);
|
static int32_t syncProcessPeerMsg(int64_t rid, void *buffer);
|
||||||
static void syncProcessIncommingConnection(SOCKET connFd, uint32_t sourceIp);
|
static void syncProcessIncommingConnection(SOCKET connFd, uint32_t sourceIp);
|
||||||
static void syncRemovePeer(SSyncPeer *pPeer);
|
static void syncRemovePeer(SSyncPeer *pPeer);
|
||||||
|
@ -1308,7 +1308,7 @@ static void syncProcessIncommingConnection(SOCKET connFd, uint32_t sourceIp) {
|
||||||
pthread_mutex_unlock(&pNode->mutex);
|
pthread_mutex_unlock(&pNode->mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void syncProcessBrokenLink(int64_t rid) {
|
static void syncProcessBrokenLink(int64_t rid, int32_t closedByApp) {
|
||||||
SSyncPeer *pPeer = syncAcquirePeer(rid);
|
SSyncPeer *pPeer = syncAcquirePeer(rid);
|
||||||
if (pPeer == NULL) return;
|
if (pPeer == NULL) return;
|
||||||
|
|
||||||
|
@ -1316,9 +1316,10 @@ static void syncProcessBrokenLink(int64_t rid) {
|
||||||
|
|
||||||
pthread_mutex_lock(&pNode->mutex);
|
pthread_mutex_lock(&pNode->mutex);
|
||||||
|
|
||||||
sDebug("%s, TCP link is broken since %s, pfd:%d sfd:%d", pPeer->id, strerror(errno), pPeer->peerFd, pPeer->syncFd);
|
sDebug("%s, TCP link is broken since %s, pfd:%d sfd:%d closedByApp:%d",
|
||||||
|
pPeer->id, strerror(errno), pPeer->peerFd, pPeer->syncFd, closedByApp);
|
||||||
pPeer->peerFd = -1;
|
pPeer->peerFd = -1;
|
||||||
if (pPeer->isArb) {
|
if (!closedByApp && pPeer->isArb) {
|
||||||
tsArbOnline = 0;
|
tsArbOnline = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -177,7 +177,7 @@ static void taosProcessBrokenLink(SConnObj *pConn) {
|
||||||
SPoolInfo * pInfo = &pPool->info;
|
SPoolInfo * pInfo = &pPool->info;
|
||||||
|
|
||||||
if (pConn->closedByApp == 0) shutdown(pConn->fd, SHUT_WR);
|
if (pConn->closedByApp == 0) shutdown(pConn->fd, SHUT_WR);
|
||||||
(*pInfo->processBrokenLink)(pConn->handleId);
|
(*pInfo->processBrokenLink)(pConn->handleId, pConn->closedByApp);
|
||||||
|
|
||||||
pThread->numOfFds--;
|
pThread->numOfFds--;
|
||||||
epoll_ctl(pThread->pollFd, EPOLL_CTL_DEL, pConn->fd, NULL);
|
epoll_ctl(pThread->pollFd, EPOLL_CTL_DEL, pConn->fd, NULL);
|
||||||
|
|
|
@ -110,7 +110,9 @@ void vnodeRelease(void *vparam) {
|
||||||
if (vparam == NULL) return;
|
if (vparam == NULL) return;
|
||||||
|
|
||||||
int32_t refCount = atomic_sub_fetch_32(&pVnode->refCount, 1);
|
int32_t refCount = atomic_sub_fetch_32(&pVnode->refCount, 1);
|
||||||
vTrace("vgId:%d, release vnode, refCount:%d pVnode:%p", pVnode->vgId, refCount, pVnode);
|
int32_t vgId = pVnode->vgId;
|
||||||
|
|
||||||
|
vTrace("vgId:%d, release vnode, refCount:%d pVnode:%p", vgId, refCount, pVnode);
|
||||||
assert(refCount >= 0);
|
assert(refCount >= 0);
|
||||||
|
|
||||||
if (refCount > 0) {
|
if (refCount > 0) {
|
||||||
|
@ -118,10 +120,10 @@ void vnodeRelease(void *vparam) {
|
||||||
tsem_post(&pVnode->sem);
|
tsem_post(&pVnode->sem);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
vDebug("vgId:%d, vnode will be destroyed, refCount:%d pVnode:%p", pVnode->vgId, refCount, pVnode);
|
vDebug("vgId:%d, vnode will be destroyed, refCount:%d pVnode:%p", vgId, refCount, pVnode);
|
||||||
vnodeDestroyInMWorker(pVnode);
|
vnodeDestroyInMWorker(pVnode);
|
||||||
int32_t count = taosHashGetSize(tsVnodesHash);
|
int32_t count = taosHashGetSize(tsVnodesHash);
|
||||||
vDebug("vgId:%d, vnode is destroyed, vnodes:%d", pVnode->vgId, count);
|
vDebug("vgId:%d, vnode is destroyed, vnodes:%d", vgId, count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -244,6 +244,7 @@ python3 ./test.py -f query/queryStddevWithGroupby.py
|
||||||
python3 ./test.py -f query/querySecondtscolumnTowherenow.py
|
python3 ./test.py -f query/querySecondtscolumnTowherenow.py
|
||||||
python3 ./test.py -f query/queryFilterTswithDateUnit.py
|
python3 ./test.py -f query/queryFilterTswithDateUnit.py
|
||||||
python3 ./test.py -f query/queryTscomputWithNow.py
|
python3 ./test.py -f query/queryTscomputWithNow.py
|
||||||
|
python3 ./test.py -f query/queryStableJoin.py
|
||||||
python3 ./test.py -f query/computeErrorinWhere.py
|
python3 ./test.py -f query/computeErrorinWhere.py
|
||||||
python3 ./test.py -f query/queryTsisNull.py
|
python3 ./test.py -f query/queryTsisNull.py
|
||||||
python3 ./test.py -f query/subqueryFilter.py
|
python3 ./test.py -f query/subqueryFilter.py
|
||||||
|
|
|
@ -73,6 +73,52 @@ class TDTestCase:
|
||||||
tdSql.checkData(6, 0, "2020-09-16 00:00:00")
|
tdSql.checkData(6, 0, "2020-09-16 00:00:00")
|
||||||
tdSql.checkData(6, 1, 222.0)
|
tdSql.checkData(6, 1, 222.0)
|
||||||
|
|
||||||
|
# test case for https://jira.taosdata.com:18080/browse/TD-5338
|
||||||
|
tdSql.query("select loc,max(voltage) from st interval(1m);")
|
||||||
|
tdSql.checkRows(8)
|
||||||
|
tdSql.checkData(0, 0, "2020-07-01 04:24:00.000")
|
||||||
|
tdSql.checkData(0, 1, "beijing")
|
||||||
|
tdSql.checkData(0, 2, 220)
|
||||||
|
tdSql.checkData(1, 0, "2020-07-12 18:11:00.000")
|
||||||
|
tdSql.checkData(1, 1, "beijing")
|
||||||
|
tdSql.checkData(1, 2, 221)
|
||||||
|
tdSql.checkData(2, 0, "2020-07-24 07:58:00.000")
|
||||||
|
tdSql.checkData(2, 1, "beijing")
|
||||||
|
tdSql.checkData(2, 2, 225)
|
||||||
|
tdSql.checkData(3, 0, "2020-08-04 21:44:00.000")
|
||||||
|
tdSql.checkData(2, 1, "beijing")
|
||||||
|
tdSql.checkData(3, 2, 228)
|
||||||
|
tdSql.checkData(4, 0, "2020-08-16 11:31:00.000")
|
||||||
|
tdSql.checkData(4, 1, "shanghai")
|
||||||
|
tdSql.checkData(4, 2, 225)
|
||||||
|
tdSql.checkData(5, 0, "2020-08-28 01:18:00.000")
|
||||||
|
tdSql.checkData(5, 1, "shanghai")
|
||||||
|
tdSql.checkData(5, 2, 228)
|
||||||
|
tdSql.checkData(6, 0, "2020-09-08 15:04:00.000")
|
||||||
|
tdSql.checkData(6, 1, "beijing")
|
||||||
|
tdSql.checkData(6, 2, 222)
|
||||||
|
tdSql.checkData(7, 0, "2020-09-20 04:51:00.000")
|
||||||
|
tdSql.checkData(7, 1, "shanghai")
|
||||||
|
tdSql.checkData(7, 2, 222)
|
||||||
|
tdSql.query("select loc,max(voltage) from t0 interval(1m);")
|
||||||
|
tdSql.checkRows(5)
|
||||||
|
tdSql.checkData(0, 0, "2020-07-01 04:24:00.000")
|
||||||
|
tdSql.checkData(0, 1, "beijing")
|
||||||
|
tdSql.checkData(0, 2, 220)
|
||||||
|
tdSql.checkData(1, 0, "2020-07-12 18:11:00.000")
|
||||||
|
tdSql.checkData(1, 1, "beijing")
|
||||||
|
tdSql.checkData(1, 2, 221)
|
||||||
|
tdSql.checkData(2, 0, "2020-07-24 07:58:00.000")
|
||||||
|
tdSql.checkData(2, 1, "beijing")
|
||||||
|
tdSql.checkData(2, 2, 225)
|
||||||
|
tdSql.checkData(3, 0, "2020-08-04 21:44:00.000")
|
||||||
|
tdSql.checkData(2, 1, "beijing")
|
||||||
|
tdSql.checkData(3, 2, 228)
|
||||||
|
tdSql.checkData(4, 0, "2020-09-08 15:04:00.000")
|
||||||
|
tdSql.checkData(4, 1, "beijing")
|
||||||
|
tdSql.checkData(4, 2, 222)
|
||||||
|
|
||||||
|
|
||||||
# test case for https://jira.taosdata.com:18080/browse/TD-2298
|
# test case for https://jira.taosdata.com:18080/browse/TD-2298
|
||||||
tdSql.execute("create database test keep 36500")
|
tdSql.execute("create database test keep 36500")
|
||||||
tdSql.execute("use test")
|
tdSql.execute("use test")
|
||||||
|
|
|
@ -0,0 +1,300 @@
|
||||||
|
###################################################################
|
||||||
|
# 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 tdLog
|
||||||
|
from util.cases import tdCases
|
||||||
|
from util.sql import tdSql
|
||||||
|
import random
|
||||||
|
|
||||||
|
|
||||||
|
class TDTestCase:
|
||||||
|
def init(self, conn, logSql):
|
||||||
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
|
tdSql.init(conn.cursor(), logSql)
|
||||||
|
|
||||||
|
self.ts = 1600000000000
|
||||||
|
self.num = 10
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
tdSql.prepare()
|
||||||
|
# test case for https://jira.taosdata.com:18080/browse/TD-5206
|
||||||
|
|
||||||
|
tdSql.execute('''create stable stable_1
|
||||||
|
(ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint,
|
||||||
|
q_bool bool , q_binary binary(20) , q_nchar nchar(20) ,q_float float , q_double double , q_ts timestamp)
|
||||||
|
tags(loc nchar(20) , t_int int , t_bigint bigint , t_smallint smallint , t_tinyint tinyint,
|
||||||
|
t_bool bool , t_binary binary(20) , t_nchar nchar(20) ,t_float float , t_double double );''')
|
||||||
|
tdSql.execute('''create stable stable_2
|
||||||
|
(ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint,
|
||||||
|
q_bool bool , q_binary binary(20) , q_nchar nchar(20) ,q_float float , q_double double , q_ts timestamp)
|
||||||
|
tags(loc nchar(20) , t_int int , t_bigint bigint , t_smallint smallint , t_tinyint tinyint,
|
||||||
|
t_bool bool , t_binary binary(20) , t_nchar nchar(20) ,t_float float , t_double double );''')
|
||||||
|
tdSql.execute('''create table table_0 using stable_1
|
||||||
|
tags('table_0' , '0' , '0' , '0' , '0' , 0 , '0' , '0' , '0' , '0' )''')
|
||||||
|
tdSql.execute('''create table table_1 using stable_1
|
||||||
|
tags('table_1' , '2147483647' , '9223372036854775807' , '32767' , '127' , 1 ,
|
||||||
|
'binary1' , 'nchar1' , '1' , '11' )''')
|
||||||
|
tdSql.execute('''create table table_2 using stable_1
|
||||||
|
tags('table_2' , '-2147483647' , '-9223372036854775807' , '-32767' , '-127' , false ,
|
||||||
|
'binary2' , 'nchar2nchar2' , '-2.2' , '-22.22')''')
|
||||||
|
tdSql.execute('''create table table_3 using stable_1
|
||||||
|
tags('table_3' , '3' , '3' , '3' , '3' , true , 'binary3' , 'nchar3' , '33.33' , '3333.3333' )''')
|
||||||
|
tdSql.execute('''create table table_4 using stable_1
|
||||||
|
tags('table_4' , '4' , '4' , '4' , '4' , false , 'binary4' , 'nchar4' , '-444.444' , '-444444.444444' )''')
|
||||||
|
tdSql.execute('''create table table_5 using stable_1
|
||||||
|
tags('table_5' , '5' , '5' , '5' , '5' , true , 'binary5' , 'nchar5' , '5555.5555' , '55555555.55555555' )''')
|
||||||
|
tdSql.execute('''create table table_21 using stable_2
|
||||||
|
tags('table_5' , '5' , '5' , '5' , '5' , true , 'binary5' , 'nchar5' , '5555.5555' , '55555555.55555555' )''')
|
||||||
|
|
||||||
|
for i in range(self.num):
|
||||||
|
tdSql.execute('''insert into table_0 values(%d, %d, %d, %d, %d, 0, 'binary.%s', 'nchar.%s', %f, %f, %d)'''
|
||||||
|
% (self.ts + i, i, i, i, i, i, i, i, i, self.ts + i))
|
||||||
|
tdSql.execute('''insert into table_1 values(%d, %d, %d, %d, %d, 1, 'binary1.%s', 'nchar1.%s', %f, %f, %d)'''
|
||||||
|
% (self.ts + i, 2147483647-i, 9223372036854775807-i, 32767-i, 127-i,
|
||||||
|
i, i, random.random(), random.random(), 1262304000001 + i))
|
||||||
|
tdSql.execute('''insert into table_2 values(%d, %d, %d, %d, %d, true, 'binary2.%s', 'nchar2nchar2.%s', %f, %f, %d)'''
|
||||||
|
% (self.ts + i, -2147483647+i, -9223372036854775807+i, -32767+i, -127+i,
|
||||||
|
i, i, random.uniform(-1,0), random.uniform(-1,0), 1577836800001 + i))
|
||||||
|
tdSql.execute('''insert into table_3 values(%d, %d, %d, %d, %d, false, 'binary3.%s', 'nchar3.%s', %f, %f, %d)'''
|
||||||
|
% (self.ts + i, random.randint(-2147483647, 2147483647),
|
||||||
|
random.randint(-9223372036854775807, 9223372036854775807), random.randint(-32767, 32767),
|
||||||
|
random.randint(-127, 127), random.randint(-100, 100), random.randint(-10000, 10000),
|
||||||
|
random.uniform(-100000,100000), random.uniform(-1000000000,1000000000), self.ts + i))
|
||||||
|
tdSql.execute('''insert into table_4 values(%d, %d, %d, %d, %d, true, 'binary4.%s', 'nchar4.%s', %f, %f, %d)'''
|
||||||
|
% (self.ts + i, i, i, i, i, i, i, i, i, self.ts + i))
|
||||||
|
tdSql.execute('''insert into table_5 values(%d, %d, %d, %d, %d, false, 'binary5.%s', 'nchar5.%s', %f, %f, %d)'''
|
||||||
|
% (self.ts + i, i, i, i, i, i, i, i, i, self.ts + i))
|
||||||
|
tdSql.execute('''insert into table_21 values(%d, %d, %d, %d, %d, false, 'binary5.%s', 'nchar5.%s', %f, %f, %d)'''
|
||||||
|
% (self.ts + i, i, i, i, i, i, i, i, i, self.ts + i))
|
||||||
|
|
||||||
|
|
||||||
|
tdLog.info("==========TEST1:test all table data==========")
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_nchar = stable_2.t_nchar and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_tinyint = stable_2.t_tinyint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_binary = stable_2.t_binary and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_double = stable_2.t_double and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_smallint = stable_2.t_smallint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bigint = stable_2.t_bigint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_int = stable_2.t_int and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_float = stable_2.t_float and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bool = stable_2.t_bool and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.error(sql)
|
||||||
|
|
||||||
|
tdLog.info("==========TEST1:test drop table_0 data==========")
|
||||||
|
sql = '''drop table table_0;'''
|
||||||
|
tdSql.execute(sql)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_nchar = stable_2.t_nchar and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_tinyint = stable_2.t_tinyint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_binary = stable_2.t_binary and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_double = stable_2.t_double and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_smallint = stable_2.t_smallint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bigint = stable_2.t_bigint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_int = stable_2.t_int and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_float = stable_2.t_float and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bool = stable_2.t_bool and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.error(sql)
|
||||||
|
|
||||||
|
tdLog.info("==========TEST1:test drop table_1 data==========")
|
||||||
|
sql = '''drop table table_1;'''
|
||||||
|
tdSql.execute(sql)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_nchar = stable_2.t_nchar and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_tinyint = stable_2.t_tinyint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_binary = stable_2.t_binary and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_double = stable_2.t_double and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_smallint = stable_2.t_smallint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bigint = stable_2.t_bigint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_int = stable_2.t_int and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_float = stable_2.t_float and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bool = stable_2.t_bool and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.error(sql)
|
||||||
|
|
||||||
|
tdLog.info("==========TEST1:test drop table_2 data==========")
|
||||||
|
sql = '''drop table table_2;'''
|
||||||
|
tdSql.execute(sql)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_nchar = stable_2.t_nchar and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_tinyint = stable_2.t_tinyint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_binary = stable_2.t_binary and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_double = stable_2.t_double and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_smallint = stable_2.t_smallint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bigint = stable_2.t_bigint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_int = stable_2.t_int and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_float = stable_2.t_float and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bool = stable_2.t_bool and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.error(sql)
|
||||||
|
|
||||||
|
tdLog.info("==========TEST1:test drop table_3 data==========")
|
||||||
|
sql = '''drop table table_3;'''
|
||||||
|
tdSql.execute(sql)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_nchar = stable_2.t_nchar and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_tinyint = stable_2.t_tinyint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_binary = stable_2.t_binary and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_double = stable_2.t_double and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_smallint = stable_2.t_smallint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bigint = stable_2.t_bigint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_int = stable_2.t_int and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_float = stable_2.t_float and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bool = stable_2.t_bool and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
|
||||||
|
tdLog.info("==========TEST1:test drop table_4 data==========")
|
||||||
|
sql = '''drop table table_4;'''
|
||||||
|
tdSql.execute(sql)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_nchar = stable_2.t_nchar and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_tinyint = stable_2.t_tinyint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_binary = stable_2.t_binary and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_double = stable_2.t_double and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_smallint = stable_2.t_smallint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bigint = stable_2.t_bigint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_int = stable_2.t_int and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_float = stable_2.t_float and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bool = stable_2.t_bool and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(self.num)
|
||||||
|
|
||||||
|
tdLog.info("==========TEST1:test drop table_5 data==========")
|
||||||
|
sql = '''drop table table_5;'''
|
||||||
|
tdSql.execute(sql)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_nchar = stable_2.t_nchar and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_tinyint = stable_2.t_tinyint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_binary = stable_2.t_binary and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_double = stable_2.t_double and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_smallint = stable_2.t_smallint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bigint = stable_2.t_bigint and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_int = stable_2.t_int and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_float = stable_2.t_float and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
sql = '''select * from stable_1,stable_2 where stable_1.t_bool = stable_2.t_bool and stable_1.ts = stable_2.ts;'''
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
tdSql.close()
|
||||||
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
||||||
|
|
||||||
|
tdCases.addWindows(__file__, TDTestCase())
|
||||||
|
tdCases.addLinux(__file__, TDTestCase())
|
|
@ -176,12 +176,8 @@ class TDTestCase:
|
||||||
tdSql.checkData(0, 1, 5)
|
tdSql.checkData(0, 1, 5)
|
||||||
tdSql.checkData(1, 1, 6)
|
tdSql.checkData(1, 1, 6)
|
||||||
tdSql.checkData(2, 1, 7)
|
tdSql.checkData(2, 1, 7)
|
||||||
|
|
||||||
|
|
||||||
os.system("rm -rf tools/taosdemoAllTest/TD-4985/query-limit-offset.py.sql")
|
os.system("rm -rf tools/taosdemoAllTest/TD-4985/query-limit-offset.py.sql")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
tdLog.success("%s successfully executed" % __file__)
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
|
@ -180,13 +180,14 @@ class TDTestCase:
|
||||||
os.system("%staosdemo -f tools/taosdemoAllTest/insertColumnsAndTagNum4096.json -y " % binPath)
|
os.system("%staosdemo -f tools/taosdemoAllTest/insertColumnsAndTagNum4096.json -y " % binPath)
|
||||||
tdSql.query("select count(*) from db.stb0")
|
tdSql.query("select count(*) from db.stb0")
|
||||||
tdSql.checkData(0, 0, 10000)
|
tdSql.checkData(0, 0, 10000)
|
||||||
|
|
||||||
tdSql.execute("drop database if exists db")
|
tdSql.execute("drop database if exists db")
|
||||||
os.system("%staosdemo -f tools/taosdemoAllTest/insertInterlaceRowsLarge1M.json -y " % binPath)
|
os.system("%staosdemo -f tools/taosdemoAllTest/insertInterlaceRowsLarge1M.json -y " % binPath)
|
||||||
tdSql.query("select count(*) from db.stb0")
|
tdSql.query("select count(*) from db.stb0")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
tdSql.execute("drop database if exists db")
|
tdSql.execute("drop database if exists db")
|
||||||
os.system("%staosdemo -f tools/taosdemoAllTest/insertColumnsNum0.json -y " % binPath)
|
os.system("%staosdemo -f tools/taosdemoAllTest/insertColumnsNum0.json -y " % binPath)
|
||||||
tdSql.execute("use db")
|
tdSql.execute("use db")
|
||||||
tdSql.query("show stables like 'stb0%' ")
|
tdSql.query("show stables like 'stb0%' ")
|
||||||
tdSql.checkData(0, 2, 11)
|
tdSql.checkData(0, 2, 11)
|
||||||
tdSql.execute("drop database if exists db")
|
tdSql.execute("drop database if exists db")
|
||||||
|
@ -196,7 +197,7 @@ class TDTestCase:
|
||||||
os.system("%staosdemo -f tools/taosdemoAllTest/insertBinaryLenLarge16374AllcolLar49151.json -y " % binPath)
|
os.system("%staosdemo -f tools/taosdemoAllTest/insertBinaryLenLarge16374AllcolLar49151.json -y " % binPath)
|
||||||
tdSql.query("select count(*) from db.stb0")
|
tdSql.query("select count(*) from db.stb0")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.query("select count(*) from db.stb1")
|
tdSql.query("select count(*) from db.stb1")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.error("select * from db.stb4")
|
tdSql.error("select * from db.stb4")
|
||||||
tdSql.error("select * from db.stb2")
|
tdSql.error("select * from db.stb2")
|
||||||
|
@ -221,7 +222,7 @@ class TDTestCase:
|
||||||
tdSql.checkData(0, 0, "2020-03-31 12:00:00.000")
|
tdSql.checkData(0, 0, "2020-03-31 12:00:00.000")
|
||||||
tdSql.query("select first(ts) from blf.p_0_topics_2")
|
tdSql.query("select first(ts) from blf.p_0_topics_2")
|
||||||
tdSql.checkData(0, 0, "2019-10-01 00:00:00")
|
tdSql.checkData(0, 0, "2019-10-01 00:00:00")
|
||||||
tdSql.query("select last(ts) from blf.p_0_topics_6 ")
|
tdSql.query("select last(ts) from blf.p_0_topics_6 ")
|
||||||
tdSql.checkData(0, 0, "2020-09-29 23:59:00")
|
tdSql.checkData(0, 0, "2020-09-29 23:59:00")
|
||||||
os.system("%staosdemo -f tools/taosdemoAllTest/insertMaxNumPerReq.json -y " % binPath)
|
os.system("%staosdemo -f tools/taosdemoAllTest/insertMaxNumPerReq.json -y " % binPath)
|
||||||
tdSql.execute("use db")
|
tdSql.execute("use db")
|
||||||
|
@ -324,6 +325,7 @@ class TDTestCase:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
tdLog.success("%s successfully executed" % __file__)
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
|
@ -98,8 +98,8 @@ class TDTestCase:
|
||||||
break
|
break
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
print("alter table test.meters add column col10 int")
|
print("alter table test.meters add column c10 int")
|
||||||
tdSql.execute("alter table test.meters add column col10 int")
|
tdSql.execute("alter table test.meters add column c10 int")
|
||||||
print("insert into test.t9 values (now, 1, 2, 3, 4, 0)")
|
print("insert into test.t9 values (now, 1, 2, 3, 4, 0)")
|
||||||
tdSql.execute("insert into test.t9 values (now, 1, 2, 3, 4, 0)")
|
tdSql.execute("insert into test.t9 values (now, 1, 2, 3, 4, 0)")
|
||||||
|
|
||||||
|
|
|
@ -808,6 +808,11 @@ bool simExecuteNativeSqlCommand(SScript *script, char *rest, bool isSlow) {
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_BINARY:
|
case TSDB_DATA_TYPE_BINARY:
|
||||||
case TSDB_DATA_TYPE_NCHAR:
|
case TSDB_DATA_TYPE_NCHAR:
|
||||||
|
if (length[i] < 0 || length[i] > 1 << 20) {
|
||||||
|
fprintf(stderr, "Invalid length(%d) of BINARY or NCHAR\n", length[i]);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
memset(value, 0, MAX_QUERY_VALUE_LEN);
|
memset(value, 0, MAX_QUERY_VALUE_LEN);
|
||||||
memcpy(value, row[i], length[i]);
|
memcpy(value, row[i], length[i]);
|
||||||
value[length[i]] = 0;
|
value[length[i]] = 0;
|
||||||
|
|
Loading…
Reference in New Issue