Merge branch 'develop' into fix/lhhuo/TD-4872-O3-core
This commit is contained in:
commit
529f906e2d
10
README-CN.md
10
README-CN.md
|
@ -23,7 +23,7 @@ TDengine是涛思数据专为物联网、车联网、工业互联网、IT运维
|
|||
|
||||
TDengine是一个高效的存储、查询、分析时序大数据的平台,专为物联网、车联网、工业互联网、运维监测等优化而设计。您可以像使用关系型数据库MySQL一样来使用它,但建议您在使用前仔细阅读一遍下面的文档,特别是 [数据模型](https://www.taosdata.com/cn/documentation/architecture) 与 [数据建模](https://www.taosdata.com/cn/documentation/model)。除本文档之外,欢迎 [下载产品白皮书](https://www.taosdata.com/downloads/TDengine%20White%20Paper.pdf)。
|
||||
|
||||
# 生成
|
||||
# 构建
|
||||
|
||||
TDengine目前2.0版服务器仅能在Linux系统上安装和运行,后续会支持Windows、macOS等系统。客户端可以在Windows或Linux上安装和运行。任何OS的应用也可以选择RESTful接口连接服务器taosd。CPU支持X64/ARM64/MIPS64/Alpha64,后续会支持ARM32、RISC-V等CPU架构。用户可根据需求选择通过[源码](https://www.taosdata.com/cn/getting-started/#通过源码安装)或者[安装包](https://www.taosdata.com/cn/getting-started/#通过安装包安装)来安装。本快速指南仅适用于通过源码安装。
|
||||
|
||||
|
@ -107,7 +107,7 @@ Go 连接器和 Grafana 插件在其他独立仓库,如果安装它们的话
|
|||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
## 生成 TDengine
|
||||
## 构建 TDengine
|
||||
|
||||
### Linux 系统
|
||||
|
||||
|
@ -116,6 +116,12 @@ mkdir debug && cd debug
|
|||
cmake .. && cmake --build .
|
||||
```
|
||||
|
||||
您可以选择使用 Jemalloc 作为内存分配器,替代默认的 glibc:
|
||||
```bash
|
||||
apt install autoconf
|
||||
cmake .. -DJEMALLOC_ENABLED=true
|
||||
```
|
||||
|
||||
在X86-64、X86、arm64、arm32 和 mips64 平台上,TDengine 生成脚本可以自动检测机器架构。也可以手动配置 CPUTYPE 参数来指定 CPU 类型,如 aarch64 或 aarch32 等。
|
||||
|
||||
aarch64:
|
||||
|
|
|
@ -110,6 +110,12 @@ mkdir debug && cd debug
|
|||
cmake .. && cmake --build .
|
||||
```
|
||||
|
||||
You can use Jemalloc as memory allocator instead of glibc:
|
||||
```
|
||||
apt install autoconf
|
||||
cmake .. -DJEMALLOC_ENABLED=true
|
||||
```
|
||||
|
||||
TDengine build script can detect the host machine's architecture on X86-64, X86, arm64, arm32 and mips64 platform.
|
||||
You can also specify CPUTYPE option like aarch64 or aarch32 too if the detection result is not correct:
|
||||
|
||||
|
|
|
@ -289,6 +289,11 @@ static FORCE_INLINE TKEY dataColsTKeyFirst(SDataCols *pCols) {
|
|||
}
|
||||
}
|
||||
|
||||
static FORCE_INLINE TSKEY dataColsKeyAtRow(SDataCols *pCols, int row) {
|
||||
ASSERT(row < pCols->numOfRows);
|
||||
return dataColsKeyAt(pCols, row);
|
||||
}
|
||||
|
||||
static FORCE_INLINE TSKEY dataColsKeyFirst(SDataCols *pCols) {
|
||||
if (pCols->numOfRows) {
|
||||
return dataColsKeyAt(pCols, 0);
|
||||
|
|
|
@ -452,7 +452,7 @@ int tdMergeDataCols(SDataCols *target, SDataCols *source, int rowsToMerge, int *
|
|||
|
||||
SDataCols *pTarget = NULL;
|
||||
|
||||
if ((target->numOfRows == 0) || (dataColsKeyLast(target) < dataColsKeyFirst(source))) { // No overlap
|
||||
if ((target->numOfRows == 0) || (dataColsKeyLast(target) < dataColsKeyAtRow(source, *pOffset))) { // No overlap
|
||||
ASSERT(target->numOfRows + rowsToMerge <= target->maxPoints);
|
||||
for (int i = 0; i < rowsToMerge; i++) {
|
||||
for (int j = 0; j < source->numOfCols; j++) {
|
||||
|
|
|
@ -79,10 +79,9 @@ enum TEST_MODE {
|
|||
|
||||
#define MAX_SQL_SIZE 65536
|
||||
#define BUFFER_SIZE (65536*2)
|
||||
#define COND_BUF_LEN BUFFER_SIZE - 30
|
||||
#define COND_BUF_LEN (BUFFER_SIZE - 30)
|
||||
#define MAX_USERNAME_SIZE 64
|
||||
#define MAX_PASSWORD_SIZE 64
|
||||
#define MAX_DB_NAME_SIZE 64
|
||||
#define MAX_HOSTNAME_SIZE 64
|
||||
#define MAX_TB_NAME_SIZE 64
|
||||
#define MAX_DATA_SIZE (16*1024)+20 // max record len: 16*1024, timestamp string and ,('') need extra space
|
||||
|
@ -90,7 +89,7 @@ enum TEST_MODE {
|
|||
#define OPT_ABORT 1 /* –abort */
|
||||
#define STRING_LEN 60000
|
||||
#define MAX_PREPARED_RAND 1000000
|
||||
#define MAX_FILE_NAME_LEN 128
|
||||
#define MAX_FILE_NAME_LEN 256 // max file name length on linux is 255.
|
||||
|
||||
#define MAX_SAMPLES_ONCE_FROM_FILE 10000
|
||||
#define MAX_NUM_DATATYPE 10
|
||||
|
@ -195,13 +194,6 @@ enum _describe_table_index {
|
|||
TSDB_MAX_DESCRIBE_METRIC
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
char field[TSDB_COL_NAME_LEN + 1];
|
||||
char type[16];
|
||||
int length;
|
||||
char note[128];
|
||||
} SColDes;
|
||||
|
||||
/* Used by main to communicate with parse_opt. */
|
||||
static char *g_dupstr = NULL;
|
||||
|
||||
|
@ -247,16 +239,16 @@ typedef struct SArguments_S {
|
|||
} SArguments;
|
||||
|
||||
typedef struct SColumn_S {
|
||||
char field[TSDB_COL_NAME_LEN + 1];
|
||||
char dataType[MAX_TB_NAME_SIZE];
|
||||
char field[TSDB_COL_NAME_LEN];
|
||||
char dataType[16];
|
||||
uint32_t dataLen;
|
||||
char note[128];
|
||||
} StrColumn;
|
||||
|
||||
typedef struct SSuperTable_S {
|
||||
char sTblName[MAX_TB_NAME_SIZE+1];
|
||||
char dataSource[MAX_TB_NAME_SIZE+1]; // rand_gen or sample
|
||||
char childTblPrefix[MAX_TB_NAME_SIZE];
|
||||
char sTblName[TSDB_TABLE_NAME_LEN];
|
||||
char dataSource[MAX_TB_NAME_SIZE]; // rand_gen or sample
|
||||
char childTblPrefix[TSDB_TABLE_NAME_LEN - 20]; // 20 characters reserved for seq
|
||||
char insertMode[MAX_TB_NAME_SIZE]; // taosc, rest
|
||||
uint16_t childTblExists;
|
||||
int64_t childTblCount;
|
||||
|
@ -277,8 +269,8 @@ typedef struct SSuperTable_S {
|
|||
int64_t timeStampStep;
|
||||
char startTimestamp[MAX_TB_NAME_SIZE];
|
||||
char sampleFormat[MAX_TB_NAME_SIZE]; // csv, json
|
||||
char sampleFile[MAX_FILE_NAME_LEN+1];
|
||||
char tagsFile[MAX_FILE_NAME_LEN+1];
|
||||
char sampleFile[MAX_FILE_NAME_LEN];
|
||||
char tagsFile[MAX_FILE_NAME_LEN];
|
||||
|
||||
uint32_t columnCount;
|
||||
StrColumn columns[MAX_COLUMN_COUNT];
|
||||
|
@ -305,7 +297,7 @@ typedef struct SSuperTable_S {
|
|||
} SSuperTable;
|
||||
|
||||
typedef struct {
|
||||
char name[TSDB_DB_NAME_LEN + 1];
|
||||
char name[TSDB_DB_NAME_LEN];
|
||||
char create_time[32];
|
||||
int64_t ntables;
|
||||
int32_t vgroups;
|
||||
|
@ -341,11 +333,11 @@ typedef struct SDbCfg_S {
|
|||
int cache;
|
||||
int blocks;
|
||||
int quorum;
|
||||
char precision[MAX_TB_NAME_SIZE];
|
||||
char precision[8];
|
||||
} SDbCfg;
|
||||
|
||||
typedef struct SDataBase_S {
|
||||
char dbName[MAX_DB_NAME_SIZE];
|
||||
char dbName[TSDB_DB_NAME_LEN];
|
||||
bool drop; // 0: use exists, 1: if exists, drop then new create
|
||||
SDbCfg dbCfg;
|
||||
uint64_t superTblCount;
|
||||
|
@ -353,14 +345,14 @@ typedef struct SDataBase_S {
|
|||
} SDataBase;
|
||||
|
||||
typedef struct SDbs_S {
|
||||
char cfgDir[MAX_FILE_NAME_LEN+1];
|
||||
char cfgDir[MAX_FILE_NAME_LEN];
|
||||
char host[MAX_HOSTNAME_SIZE];
|
||||
struct sockaddr_in serv_addr;
|
||||
|
||||
uint16_t port;
|
||||
char user[MAX_USERNAME_SIZE];
|
||||
char password[MAX_PASSWORD_SIZE];
|
||||
char resultFile[MAX_FILE_NAME_LEN+1];
|
||||
char resultFile[MAX_FILE_NAME_LEN];
|
||||
bool use_metric;
|
||||
bool insert_only;
|
||||
bool do_aggreFunc;
|
||||
|
@ -387,7 +379,7 @@ typedef struct SpecifiedQueryInfo_S {
|
|||
bool subscribeRestart;
|
||||
int subscribeKeepProgress;
|
||||
char sql[MAX_QUERY_SQL_COUNT][MAX_QUERY_SQL_LENGTH+1];
|
||||
char result[MAX_QUERY_SQL_COUNT][MAX_FILE_NAME_LEN+1];
|
||||
char result[MAX_QUERY_SQL_COUNT][MAX_FILE_NAME_LEN];
|
||||
int resubAfterConsume[MAX_QUERY_SQL_COUNT];
|
||||
int endAfterConsume[MAX_QUERY_SQL_COUNT];
|
||||
TAOS_SUB* tsub[MAX_QUERY_SQL_COUNT];
|
||||
|
@ -398,7 +390,7 @@ typedef struct SpecifiedQueryInfo_S {
|
|||
} SpecifiedQueryInfo;
|
||||
|
||||
typedef struct SuperQueryInfo_S {
|
||||
char sTblName[MAX_TB_NAME_SIZE+1];
|
||||
char sTblName[TSDB_TABLE_NAME_LEN];
|
||||
uint64_t queryInterval; // 0: unlimit > 0 loop/s
|
||||
uint32_t threadCnt;
|
||||
uint32_t asyncMode; // 0: sync, 1: async
|
||||
|
@ -407,10 +399,10 @@ typedef struct SuperQueryInfo_S {
|
|||
int subscribeKeepProgress;
|
||||
uint64_t queryTimes;
|
||||
int64_t childTblCount;
|
||||
char childTblPrefix[MAX_TB_NAME_SIZE];
|
||||
char childTblPrefix[TSDB_TABLE_NAME_LEN - 20]; // 20 characters reserved for seq
|
||||
int sqlCount;
|
||||
char sql[MAX_QUERY_SQL_COUNT][MAX_QUERY_SQL_LENGTH+1];
|
||||
char result[MAX_QUERY_SQL_COUNT][MAX_FILE_NAME_LEN+1];
|
||||
char result[MAX_QUERY_SQL_COUNT][MAX_FILE_NAME_LEN];
|
||||
int resubAfterConsume;
|
||||
int endAfterConsume;
|
||||
TAOS_SUB* tsub[MAX_QUERY_SQL_COUNT];
|
||||
|
@ -420,13 +412,13 @@ typedef struct SuperQueryInfo_S {
|
|||
} SuperQueryInfo;
|
||||
|
||||
typedef struct SQueryMetaInfo_S {
|
||||
char cfgDir[MAX_FILE_NAME_LEN+1];
|
||||
char cfgDir[MAX_FILE_NAME_LEN];
|
||||
char host[MAX_HOSTNAME_SIZE];
|
||||
uint16_t port;
|
||||
struct sockaddr_in serv_addr;
|
||||
char user[MAX_USERNAME_SIZE];
|
||||
char password[MAX_PASSWORD_SIZE];
|
||||
char dbName[MAX_DB_NAME_SIZE+1];
|
||||
char dbName[TSDB_DB_NAME_LEN];
|
||||
char queryMode[MAX_TB_NAME_SIZE]; // taosc, rest
|
||||
|
||||
SpecifiedQueryInfo specifiedQueryInfo;
|
||||
|
@ -438,11 +430,11 @@ typedef struct SThreadInfo_S {
|
|||
TAOS * taos;
|
||||
TAOS_STMT *stmt;
|
||||
int threadID;
|
||||
char db_name[MAX_DB_NAME_SIZE+1];
|
||||
char db_name[TSDB_DB_NAME_LEN];
|
||||
uint32_t time_precision;
|
||||
char filePath[4096];
|
||||
FILE *fp;
|
||||
char tb_prefix[MAX_TB_NAME_SIZE];
|
||||
char tb_prefix[TSDB_TABLE_NAME_LEN];
|
||||
uint64_t start_table_from;
|
||||
uint64_t end_table_to;
|
||||
int64_t ntables;
|
||||
|
@ -608,7 +600,7 @@ SArguments g_args = {
|
|||
1, // query_times
|
||||
0, // interlace_rows;
|
||||
30000, // num_of_RPR
|
||||
(1024*1024), // max_sql_len
|
||||
(1024*1024), // max_sql_len
|
||||
10000, // num_of_tables
|
||||
10000, // num_of_DPT
|
||||
0, // abort
|
||||
|
@ -990,9 +982,9 @@ static void parse_args(int argc, char *argv[], SArguments *arguments) {
|
|||
arguments->len_of_binary = atoi(argv[++i]);
|
||||
} else if (strcmp(argv[i], "-m") == 0) {
|
||||
if ((argc == i+1) ||
|
||||
(!isStringNumber(argv[i+1]))) {
|
||||
(isStringNumber(argv[i+1]))) {
|
||||
printHelp();
|
||||
errorPrint("%s", "\n\t-m need a number following!\n");
|
||||
errorPrint("%s", "\n\t-m need a letter-initial string following!\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
arguments->tb_prefix = argv[++i];
|
||||
|
@ -2501,6 +2493,13 @@ static int getChildNameOfSuperTableWithLimitAndOffset(TAOS * taos,
|
|||
char* pTblName = childTblName;
|
||||
while((row = taos_fetch_row(res)) != NULL) {
|
||||
int32_t* len = taos_fetch_lengths(res);
|
||||
|
||||
if (0 == strlen((char *)row[0])) {
|
||||
errorPrint("%s() LN%d, No.%"PRId64" table return empty name\n",
|
||||
__func__, __LINE__, count);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
tstrncpy(pTblName, (char *)row[0], len[0]+1);
|
||||
//printf("==== sub table name: %s\n", pTblName);
|
||||
count++;
|
||||
|
@ -3035,7 +3034,7 @@ static int startMultiThreadCreateChildTable(
|
|||
for (int64_t i = 0; i < threads; i++) {
|
||||
threadInfo *pThreadInfo = infos + i;
|
||||
pThreadInfo->threadID = i;
|
||||
tstrncpy(pThreadInfo->db_name, db_name, MAX_DB_NAME_SIZE);
|
||||
tstrncpy(pThreadInfo->db_name, db_name, TSDB_DB_NAME_LEN);
|
||||
pThreadInfo->superTblInfo = superTblInfo;
|
||||
verbosePrint("%s() %d db_name: %s\n", __func__, __LINE__, db_name);
|
||||
pThreadInfo->taos = taos_connect(
|
||||
|
@ -3326,7 +3325,7 @@ static bool getColumnAndTagTypeFromInsertJsonFile(
|
|||
goto PARSE_OVER;
|
||||
}
|
||||
//tstrncpy(superTbls->columns[k].dataType, dataType->valuestring, MAX_TB_NAME_SIZE);
|
||||
tstrncpy(columnCase.dataType, dataType->valuestring, MAX_TB_NAME_SIZE);
|
||||
tstrncpy(columnCase.dataType, dataType->valuestring, strlen(dataType->valuestring) + 1);
|
||||
|
||||
cJSON* dataLen = cJSON_GetObjectItem(column, "len");
|
||||
if (dataLen && dataLen->type == cJSON_Number) {
|
||||
|
@ -3341,7 +3340,7 @@ static bool getColumnAndTagTypeFromInsertJsonFile(
|
|||
|
||||
for (int n = 0; n < count; ++n) {
|
||||
tstrncpy(superTbls->columns[index].dataType,
|
||||
columnCase.dataType, MAX_TB_NAME_SIZE);
|
||||
columnCase.dataType, strlen(columnCase.dataType) + 1);
|
||||
superTbls->columns[index].dataLen = columnCase.dataLen;
|
||||
index++;
|
||||
}
|
||||
|
@ -3397,7 +3396,7 @@ static bool getColumnAndTagTypeFromInsertJsonFile(
|
|||
__func__, __LINE__);
|
||||
goto PARSE_OVER;
|
||||
}
|
||||
tstrncpy(columnCase.dataType, dataType->valuestring, MAX_TB_NAME_SIZE);
|
||||
tstrncpy(columnCase.dataType, dataType->valuestring, strlen(dataType->valuestring) + 1);
|
||||
|
||||
cJSON* dataLen = cJSON_GetObjectItem(tag, "len");
|
||||
if (dataLen && dataLen->type == cJSON_Number) {
|
||||
|
@ -3412,7 +3411,7 @@ static bool getColumnAndTagTypeFromInsertJsonFile(
|
|||
|
||||
for (int n = 0; n < count; ++n) {
|
||||
tstrncpy(superTbls->tags[index].dataType, columnCase.dataType,
|
||||
MAX_TB_NAME_SIZE);
|
||||
strlen(columnCase.dataType) + 1);
|
||||
superTbls->tags[index].dataLen = columnCase.dataLen;
|
||||
index++;
|
||||
}
|
||||
|
@ -3635,7 +3634,7 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
|
|||
printf("ERROR: failed to read json, db name not found\n");
|
||||
goto PARSE_OVER;
|
||||
}
|
||||
tstrncpy(g_Dbs.db[i].dbName, dbName->valuestring, MAX_DB_NAME_SIZE);
|
||||
tstrncpy(g_Dbs.db[i].dbName, dbName->valuestring, TSDB_DB_NAME_LEN);
|
||||
|
||||
cJSON *drop = cJSON_GetObjectItem(dbinfo, "drop");
|
||||
if (drop && drop->type == cJSON_String && drop->valuestring != NULL) {
|
||||
|
@ -3656,10 +3655,9 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
|
|||
if (precision && precision->type == cJSON_String
|
||||
&& precision->valuestring != NULL) {
|
||||
tstrncpy(g_Dbs.db[i].dbCfg.precision, precision->valuestring,
|
||||
MAX_DB_NAME_SIZE);
|
||||
8);
|
||||
} else if (!precision) {
|
||||
//tstrncpy(g_Dbs.db[i].dbCfg.precision, "ms", MAX_DB_NAME_SIZE);
|
||||
memset(g_Dbs.db[i].dbCfg.precision, 0, MAX_DB_NAME_SIZE);
|
||||
memset(g_Dbs.db[i].dbCfg.precision, 0, 8);
|
||||
} else {
|
||||
printf("ERROR: failed to read json, precision not found\n");
|
||||
goto PARSE_OVER;
|
||||
|
@ -3836,7 +3834,7 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
|
|||
goto PARSE_OVER;
|
||||
}
|
||||
tstrncpy(g_Dbs.db[i].superTbls[j].sTblName, stbName->valuestring,
|
||||
MAX_TB_NAME_SIZE);
|
||||
TSDB_TABLE_NAME_LEN);
|
||||
|
||||
cJSON *prefix = cJSON_GetObjectItem(stbInfo, "childtable_prefix");
|
||||
if (!prefix || prefix->type != cJSON_String || prefix->valuestring == NULL) {
|
||||
|
@ -3844,7 +3842,7 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
|
|||
goto PARSE_OVER;
|
||||
}
|
||||
tstrncpy(g_Dbs.db[i].superTbls[j].childTblPrefix, prefix->valuestring,
|
||||
MAX_DB_NAME_SIZE);
|
||||
TSDB_TABLE_NAME_LEN - 20);
|
||||
|
||||
cJSON *autoCreateTbl = cJSON_GetObjectItem(stbInfo, "auto_create_table");
|
||||
if (autoCreateTbl
|
||||
|
@ -3912,9 +3910,9 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
|
|||
if (dataSource && dataSource->type == cJSON_String
|
||||
&& dataSource->valuestring != NULL) {
|
||||
tstrncpy(g_Dbs.db[i].superTbls[j].dataSource,
|
||||
dataSource->valuestring, MAX_DB_NAME_SIZE);
|
||||
dataSource->valuestring, TSDB_DB_NAME_LEN);
|
||||
} else if (!dataSource) {
|
||||
tstrncpy(g_Dbs.db[i].superTbls[j].dataSource, "rand", MAX_DB_NAME_SIZE);
|
||||
tstrncpy(g_Dbs.db[i].superTbls[j].dataSource, "rand", TSDB_DB_NAME_LEN);
|
||||
} else {
|
||||
errorPrint("%s() LN%d, failed to read json, data_source not found\n",
|
||||
__func__, __LINE__);
|
||||
|
@ -3972,10 +3970,10 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
|
|||
cJSON *ts = cJSON_GetObjectItem(stbInfo, "start_timestamp");
|
||||
if (ts && ts->type == cJSON_String && ts->valuestring != NULL) {
|
||||
tstrncpy(g_Dbs.db[i].superTbls[j].startTimestamp,
|
||||
ts->valuestring, MAX_DB_NAME_SIZE);
|
||||
ts->valuestring, TSDB_DB_NAME_LEN);
|
||||
} else if (!ts) {
|
||||
tstrncpy(g_Dbs.db[i].superTbls[j].startTimestamp,
|
||||
"now", MAX_DB_NAME_SIZE);
|
||||
"now", TSDB_DB_NAME_LEN);
|
||||
} else {
|
||||
printf("ERROR: failed to read json, start_timestamp not found\n");
|
||||
goto PARSE_OVER;
|
||||
|
@ -3995,9 +3993,9 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
|
|||
if (sampleFormat && sampleFormat->type
|
||||
== cJSON_String && sampleFormat->valuestring != NULL) {
|
||||
tstrncpy(g_Dbs.db[i].superTbls[j].sampleFormat,
|
||||
sampleFormat->valuestring, MAX_DB_NAME_SIZE);
|
||||
sampleFormat->valuestring, TSDB_DB_NAME_LEN);
|
||||
} else if (!sampleFormat) {
|
||||
tstrncpy(g_Dbs.db[i].superTbls[j].sampleFormat, "csv", MAX_DB_NAME_SIZE);
|
||||
tstrncpy(g_Dbs.db[i].superTbls[j].sampleFormat, "csv", TSDB_DB_NAME_LEN);
|
||||
} else {
|
||||
printf("ERROR: failed to read json, sample_format not found\n");
|
||||
goto PARSE_OVER;
|
||||
|
@ -4242,7 +4240,7 @@ static bool getMetaFromQueryJsonFile(cJSON* root) {
|
|||
|
||||
cJSON* dbs = cJSON_GetObjectItem(root, "databases");
|
||||
if (dbs && dbs->type == cJSON_String && dbs->valuestring != NULL) {
|
||||
tstrncpy(g_queryInfo.dbName, dbs->valuestring, MAX_DB_NAME_SIZE);
|
||||
tstrncpy(g_queryInfo.dbName, dbs->valuestring, TSDB_DB_NAME_LEN);
|
||||
} else if (!dbs) {
|
||||
printf("ERROR: failed to read json, databases not found\n");
|
||||
goto PARSE_OVER;
|
||||
|
@ -4492,7 +4490,7 @@ static bool getMetaFromQueryJsonFile(cJSON* root) {
|
|||
if (stblname && stblname->type == cJSON_String
|
||||
&& stblname->valuestring != NULL) {
|
||||
tstrncpy(g_queryInfo.superQueryInfo.sTblName, stblname->valuestring,
|
||||
MAX_TB_NAME_SIZE);
|
||||
TSDB_TABLE_NAME_LEN);
|
||||
} else {
|
||||
errorPrint("%s() LN%d, failed to read json, super table name input error\n",
|
||||
__func__, __LINE__);
|
||||
|
@ -6302,16 +6300,6 @@ static void startMultiThreadInsertData(int threads, char* db_name,
|
|||
}
|
||||
}
|
||||
|
||||
// read sample data from file first
|
||||
if ((superTblInfo) && (0 == strncasecmp(superTblInfo->dataSource,
|
||||
"sample", strlen("sample")))) {
|
||||
if (0 != prepareSampleDataForSTable(superTblInfo)) {
|
||||
errorPrint("%s() LN%d, prepare sample data for stable failed!\n",
|
||||
__func__, __LINE__);
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
|
||||
TAOS* taos0 = taos_connect(
|
||||
g_Dbs.host, g_Dbs.user,
|
||||
g_Dbs.password, db_name, g_Dbs.port);
|
||||
|
@ -6417,7 +6405,7 @@ static void startMultiThreadInsertData(int threads, char* db_name,
|
|||
for (int i = 0; i < threads; i++) {
|
||||
threadInfo *pThreadInfo = infos + i;
|
||||
pThreadInfo->threadID = i;
|
||||
tstrncpy(pThreadInfo->db_name, db_name, MAX_DB_NAME_SIZE);
|
||||
tstrncpy(pThreadInfo->db_name, db_name, TSDB_DB_NAME_LEN);
|
||||
pThreadInfo->time_precision = timePrec;
|
||||
pThreadInfo->superTblInfo = superTblInfo;
|
||||
|
||||
|
@ -6861,7 +6849,7 @@ static void *specifiedTableQuery(void *sarg) {
|
|||
}
|
||||
}
|
||||
|
||||
char sqlStr[MAX_DB_NAME_SIZE + 5];
|
||||
char sqlStr[TSDB_DB_NAME_LEN + 5];
|
||||
sprintf(sqlStr, "use %s", g_queryInfo.dbName);
|
||||
if (0 != queryDbExec(pThreadInfo->taos, sqlStr, NO_INSERT_TYPE, false)) {
|
||||
taos_close(pThreadInfo->taos);
|
||||
|
@ -7337,12 +7325,6 @@ static void *superSubscribe(void *sarg) {
|
|||
performancePrint("st: %"PRIu64" et: %"PRIu64" delta: %"PRIu64"\n", st, et, (et - st));
|
||||
|
||||
if (res) {
|
||||
if (g_queryInfo.superQueryInfo.result[pThreadInfo->querySeq][0] != 0) {
|
||||
sprintf(pThreadInfo->filePath, "%s-%d",
|
||||
g_queryInfo.superQueryInfo.result[pThreadInfo->querySeq],
|
||||
pThreadInfo->threadID);
|
||||
fetchResult(res, pThreadInfo);
|
||||
}
|
||||
if (g_queryInfo.superQueryInfo.result[pThreadInfo->querySeq][0] != 0) {
|
||||
sprintf(pThreadInfo->filePath, "%s-%d",
|
||||
g_queryInfo.superQueryInfo.result[pThreadInfo->querySeq],
|
||||
|
@ -7449,10 +7431,10 @@ static void *specifiedSubscribe(void *sarg) {
|
|||
sprintf(pThreadInfo->filePath, "%s-%d",
|
||||
g_queryInfo.specifiedQueryInfo.result[pThreadInfo->querySeq],
|
||||
pThreadInfo->threadID);
|
||||
fetchResult(
|
||||
g_queryInfo.specifiedQueryInfo.res[pThreadInfo->threadID],
|
||||
pThreadInfo);
|
||||
}
|
||||
fetchResult(
|
||||
g_queryInfo.specifiedQueryInfo.res[pThreadInfo->threadID],
|
||||
pThreadInfo);
|
||||
|
||||
g_queryInfo.specifiedQueryInfo.consumed[pThreadInfo->threadID] ++;
|
||||
if ((g_queryInfo.specifiedQueryInfo.resubAfterConsume[pThreadInfo->querySeq] != -1)
|
||||
|
@ -7689,9 +7671,9 @@ static void setParaFromArg(){
|
|||
g_Dbs.dbCount = 1;
|
||||
g_Dbs.db[0].drop = true;
|
||||
|
||||
tstrncpy(g_Dbs.db[0].dbName, g_args.database, MAX_DB_NAME_SIZE);
|
||||
tstrncpy(g_Dbs.db[0].dbName, g_args.database, TSDB_DB_NAME_LEN);
|
||||
g_Dbs.db[0].dbCfg.replica = g_args.replica;
|
||||
tstrncpy(g_Dbs.db[0].dbCfg.precision, "ms", MAX_DB_NAME_SIZE);
|
||||
tstrncpy(g_Dbs.db[0].dbCfg.precision, "ms", 8);
|
||||
|
||||
tstrncpy(g_Dbs.resultFile, g_args.output_file, MAX_FILE_NAME_LEN);
|
||||
|
||||
|
@ -7713,7 +7695,7 @@ static void setParaFromArg(){
|
|||
|
||||
if (g_args.use_metric) {
|
||||
g_Dbs.db[0].superTblCount = 1;
|
||||
tstrncpy(g_Dbs.db[0].superTbls[0].sTblName, "meters", MAX_TB_NAME_SIZE);
|
||||
tstrncpy(g_Dbs.db[0].superTbls[0].sTblName, "meters", TSDB_TABLE_NAME_LEN);
|
||||
g_Dbs.db[0].superTbls[0].childTblCount = g_args.num_of_tables;
|
||||
g_Dbs.threadCount = g_args.num_of_threads;
|
||||
g_Dbs.threadCountByCreateTbl = g_args.num_of_threads;
|
||||
|
@ -7724,7 +7706,7 @@ static void setParaFromArg(){
|
|||
g_Dbs.db[0].superTbls[0].disorderRange = g_args.disorderRange;
|
||||
g_Dbs.db[0].superTbls[0].disorderRatio = g_args.disorderRatio;
|
||||
tstrncpy(g_Dbs.db[0].superTbls[0].childTblPrefix,
|
||||
g_args.tb_prefix, MAX_TB_NAME_SIZE);
|
||||
g_args.tb_prefix, TSDB_TABLE_NAME_LEN - 20);
|
||||
tstrncpy(g_Dbs.db[0].superTbls[0].dataSource, "rand", MAX_TB_NAME_SIZE);
|
||||
g_Dbs.db[0].superTbls[0].iface = g_args.iface;
|
||||
tstrncpy(g_Dbs.db[0].superTbls[0].startTimestamp,
|
||||
|
@ -7741,7 +7723,7 @@ static void setParaFromArg(){
|
|||
}
|
||||
|
||||
tstrncpy(g_Dbs.db[0].superTbls[0].columns[i].dataType,
|
||||
data_type[i], MAX_TB_NAME_SIZE);
|
||||
data_type[i], strlen(data_type[i]) + 1);
|
||||
g_Dbs.db[0].superTbls[0].columns[i].dataLen = g_args.len_of_binary;
|
||||
g_Dbs.db[0].superTbls[0].columnCount++;
|
||||
}
|
||||
|
@ -7752,18 +7734,18 @@ static void setParaFromArg(){
|
|||
for (int i = g_Dbs.db[0].superTbls[0].columnCount;
|
||||
i < g_args.num_of_CPR; i++) {
|
||||
tstrncpy(g_Dbs.db[0].superTbls[0].columns[i].dataType,
|
||||
"INT", MAX_TB_NAME_SIZE);
|
||||
"INT", strlen("INT") + 1);
|
||||
g_Dbs.db[0].superTbls[0].columns[i].dataLen = 0;
|
||||
g_Dbs.db[0].superTbls[0].columnCount++;
|
||||
}
|
||||
}
|
||||
|
||||
tstrncpy(g_Dbs.db[0].superTbls[0].tags[0].dataType,
|
||||
"INT", MAX_TB_NAME_SIZE);
|
||||
"INT", strlen("INT") + 1);
|
||||
g_Dbs.db[0].superTbls[0].tags[0].dataLen = 0;
|
||||
|
||||
tstrncpy(g_Dbs.db[0].superTbls[0].tags[1].dataType,
|
||||
"BINARY", MAX_TB_NAME_SIZE);
|
||||
"BINARY", strlen("BINARY") + 1);
|
||||
g_Dbs.db[0].superTbls[0].tags[1].dataLen = g_args.len_of_binary;
|
||||
g_Dbs.db[0].superTbls[0].tagCount = 2;
|
||||
} else {
|
||||
|
@ -7899,11 +7881,11 @@ static void queryResult() {
|
|||
pThreadInfo->end_table_to = g_Dbs.db[0].superTbls[0].childTblCount - 1;
|
||||
pThreadInfo->superTblInfo = &g_Dbs.db[0].superTbls[0];
|
||||
tstrncpy(pThreadInfo->tb_prefix,
|
||||
g_Dbs.db[0].superTbls[0].childTblPrefix, MAX_TB_NAME_SIZE);
|
||||
g_Dbs.db[0].superTbls[0].childTblPrefix, TSDB_TABLE_NAME_LEN - 20);
|
||||
} else {
|
||||
pThreadInfo->ntables = g_args.num_of_tables;
|
||||
pThreadInfo->end_table_to = g_args.num_of_tables -1;
|
||||
tstrncpy(pThreadInfo->tb_prefix, g_args.tb_prefix, MAX_TB_NAME_SIZE);
|
||||
tstrncpy(pThreadInfo->tb_prefix, g_args.tb_prefix, TSDB_TABLE_NAME_LEN);
|
||||
}
|
||||
|
||||
pThreadInfo->taos = taos_connect(
|
||||
|
|
|
@ -235,7 +235,7 @@ python3 ./test.py -f query/queryTscomputWithNow.py
|
|||
python3 ./test.py -f query/computeErrorinWhere.py
|
||||
python3 ./test.py -f query/queryTsisNull.py
|
||||
python3 ./test.py -f query/subqueryFilter.py
|
||||
python3 ./test.py -f query/nestedQuery/queryInterval.py
|
||||
# python3 ./test.py -f query/nestedQuery/queryInterval.py
|
||||
python3 ./test.py -f query/queryStateWindow.py
|
||||
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@ from util.log import *
|
|||
from util.cases import *
|
||||
from util.sql import *
|
||||
|
||||
|
||||
class TDTestCase:
|
||||
def init(self, conn, logSql):
|
||||
tdLog.debug("start to execute %s" % __file__)
|
||||
|
@ -27,6 +26,7 @@ class TDTestCase:
|
|||
def run(self):
|
||||
tdSql.prepare()
|
||||
# test case for https://jira.taosdata.com:18080/browse/TD-4568
|
||||
# test case for https://jira.taosdata.com:18080/browse/TD-4824
|
||||
|
||||
tdLog.info("=============== step1,check bool and tinyint data type")
|
||||
|
||||
|
@ -137,8 +137,28 @@ class TDTestCase:
|
|||
tdSql.checkData(0,1,'True')
|
||||
tdSql.checkData(0,2,'0')
|
||||
|
||||
tdLog.info("=============== step1.3,multiple column and multiple tag check in function")
|
||||
cmd1 = '''select * from in_stable_1
|
||||
where in_bool in (true,false) and in_tinyint in (0,127,-127)
|
||||
and tin_bool in (true,false) and tin_tinyint in (0,127,-127)
|
||||
order by ts desc ;'''
|
||||
tdLog.info(cmd1)
|
||||
tdSql.query(cmd1)
|
||||
tdSql.checkData(0,1,'True')
|
||||
tdSql.checkData(0,2,'0')
|
||||
tdSql.checkData(0,3,'False')
|
||||
tdSql.checkData(0,4,'0')
|
||||
tdSql.checkData(1,1,'False')
|
||||
tdSql.checkData(1,2,'127')
|
||||
tdSql.checkData(1,3,'False')
|
||||
tdSql.checkData(1,4,'-127')
|
||||
tdSql.checkData(2,1,'True')
|
||||
tdSql.checkData(2,2,'-127')
|
||||
tdSql.checkData(2,3,'True')
|
||||
tdSql.checkData(2,4,'127')
|
||||
|
||||
tdLog.info("=============== step1.3,drop normal table && create table")
|
||||
|
||||
tdLog.info("=============== step1.4,drop normal table && create table")
|
||||
cmd1 = 'drop table if exists normal_in_bool_tinyint_1 ;'
|
||||
cmd2 = 'create table normal_in_bool_tinyint_1 (ts timestamp,in_bool bool,in_tinyint tinyint) ; '
|
||||
tdLog.info(cmd1)
|
||||
|
@ -147,7 +167,7 @@ class TDTestCase:
|
|||
tdSql.execute(cmd2)
|
||||
|
||||
|
||||
tdLog.info("=============== step1.4,insert normal table right data and check in function")
|
||||
tdLog.info("=============== step1.5,insert normal table right data and check in function")
|
||||
cmd1 = 'insert into normal_in_bool_tinyint_1 values(now,\'true\',\'-127\') ;'
|
||||
tdLog.info(cmd1)
|
||||
tdSql.execute(cmd1)
|
||||
|
@ -175,6 +195,17 @@ class TDTestCase:
|
|||
tdSql.checkData(0,1,'True')
|
||||
tdSql.checkData(0,2,'0')
|
||||
|
||||
cmd4 = '''select * from normal_in_bool_tinyint_1
|
||||
where in_bool in (true,false) and in_tinyint in (0,127,-127)
|
||||
order by ts desc ;'''
|
||||
tdLog.info(cmd4)
|
||||
tdSql.query(cmd4)
|
||||
tdSql.checkData(0,1,'True')
|
||||
tdSql.checkData(0,2,'0')
|
||||
tdSql.checkData(1,1,'False')
|
||||
tdSql.checkData(1,2,'127')
|
||||
tdSql.checkData(2,1,'True')
|
||||
tdSql.checkData(2,2,'-127')
|
||||
|
||||
|
||||
tdLog.info("=============== step2,check int、smallint and bigint data type")
|
||||
|
@ -378,10 +409,39 @@ class TDTestCase:
|
|||
tdSql.query('select * from in_int_smallint_bigint_3 where in_big in (-9223372036854775807) order by ts desc')
|
||||
tdSql.checkData(0,1,'0')
|
||||
tdSql.checkData(0,2,'32767')
|
||||
tdSql.checkData(0,3,'-9223372036854775807')
|
||||
tdSql.checkData(0,3,'-9223372036854775807')
|
||||
|
||||
|
||||
tdLog.info("=============== step2.3,drop normal table && create table")
|
||||
tdLog.info("=============== step2.3,multiple column and multiple tag check in function")
|
||||
cmd1 = '''select * from in_stable_2
|
||||
where in_int in (0,2147483647,-2147483647) and in_small in (0,32767,-32767)
|
||||
and in_big in (0,9223372036854775807,-9223372036854775807)
|
||||
and tin_int in (0,2147483647,-2147483647) and tin_small in (0,32767,-32767)
|
||||
and tin_big in (0,9223372036854775807,-9223372036854775807)
|
||||
order by ts desc ;'''
|
||||
tdLog.info(cmd1)
|
||||
tdSql.query(cmd1)
|
||||
tdSql.checkData(0,1,'0')
|
||||
tdSql.checkData(0,2,'32767')
|
||||
tdSql.checkData(0,3,'-9223372036854775807')
|
||||
tdSql.checkData(0,4,'0')
|
||||
tdSql.checkData(0,5,'32767')
|
||||
tdSql.checkData(0,6,'-9223372036854775807')
|
||||
tdSql.checkData(1,1,'-2147483647')
|
||||
tdSql.checkData(1,2,'0')
|
||||
tdSql.checkData(1,3,'9223372036854775807')
|
||||
tdSql.checkData(1,4,'-2147483647')
|
||||
tdSql.checkData(1,5,'0')
|
||||
tdSql.checkData(1,6,'9223372036854775807')
|
||||
tdSql.checkData(2,1,'2147483647')
|
||||
tdSql.checkData(2,2,'-32767')
|
||||
tdSql.checkData(2,3,'0')
|
||||
tdSql.checkData(2,4,'2147483647')
|
||||
tdSql.checkData(2,5,'-32767')
|
||||
tdSql.checkData(2,6,'0')
|
||||
|
||||
|
||||
tdLog.info("=============== step2.4,drop normal table && create table")
|
||||
cmd1 = 'drop table if exists normal_int_smallint_bigint_1 ;'
|
||||
cmd2 = 'create table normal_int_smallint_bigint_1 (ts timestamp,in_int int,in_small smallint , in_big bigint) ; '
|
||||
tdLog.info(cmd1)
|
||||
|
@ -390,7 +450,7 @@ class TDTestCase:
|
|||
tdSql.execute(cmd2)
|
||||
|
||||
|
||||
tdLog.info("=============== step2.4,insert normal table right data and check in function")
|
||||
tdLog.info("=============== step2.5,insert normal table right data and check in function")
|
||||
cmd1 = 'insert into normal_int_smallint_bigint_1 values(now,\'2147483647\',\'-32767\',\'0\') ;'
|
||||
tdLog.info(cmd1)
|
||||
tdSql.execute(cmd1)
|
||||
|
@ -437,7 +497,23 @@ class TDTestCase:
|
|||
tdSql.query('select * from normal_int_smallint_bigint_1 where in_big in (-9223372036854775807) order by ts desc')
|
||||
tdSql.checkData(0,1,'0')
|
||||
tdSql.checkData(0,2,'32767')
|
||||
tdSql.checkData(0,3,'-9223372036854775807')
|
||||
tdSql.checkData(0,3,'-9223372036854775807')
|
||||
|
||||
cmd4 = '''select * from normal_int_smallint_bigint_1
|
||||
where in_int in (0,2147483647,-2147483647) and in_small in (0,32767,-32767)
|
||||
and in_big in (0,9223372036854775807,-9223372036854775807)
|
||||
order by ts desc ;'''
|
||||
tdLog.info(cmd4)
|
||||
tdSql.query(cmd4)
|
||||
tdSql.checkData(0,1,'0')
|
||||
tdSql.checkData(0,2,'32767')
|
||||
tdSql.checkData(0,3,'-9223372036854775807')
|
||||
tdSql.checkData(1,1,'-2147483647')
|
||||
tdSql.checkData(1,2,'0')
|
||||
tdSql.checkData(1,3,'9223372036854775807')
|
||||
tdSql.checkData(2,1,'2147483647')
|
||||
tdSql.checkData(2,2,'-32767')
|
||||
tdSql.checkData(2,3,'0')
|
||||
|
||||
|
||||
tdLog.info("=============== step3,check binary and nchar data type")
|
||||
|
@ -560,7 +636,30 @@ class TDTestCase:
|
|||
tdSql.checkData(0,2,'北京涛思数据科技有限公司')
|
||||
|
||||
|
||||
tdLog.info("=============== step3.3,drop normal table && create table")
|
||||
tdLog.info("=============== step3.3,multiple column and multiple tag check in function")
|
||||
cmd1 = '''select * from in_stable_3
|
||||
where in_binary in (\'0\',\'TDengine\',\'TAOS\')
|
||||
and in_nchar in (\'0\',\'北京涛思数据科技有限公司\',\'涛思数据TAOSdata\')
|
||||
and tin_binary in (\'0\',\'TDengine\',\'taosdataTDengine\')
|
||||
and tin_nchar in (\'0\',\'北京涛思数据科技有限公司\',\'北京涛思数据科技有限公司TDengine\')
|
||||
order by ts desc ;'''
|
||||
tdLog.info(cmd1)
|
||||
tdSql.query(cmd1)
|
||||
tdSql.checkData(0,1,'TDengine')
|
||||
tdSql.checkData(0,2,'北京涛思数据科技有限公司')
|
||||
tdSql.checkData(0,3,'taosdataTDengine')
|
||||
tdSql.checkData(0,4,'北京涛思数据科技有限公司TDengine')
|
||||
tdSql.checkData(1,1,'TAOS')
|
||||
tdSql.checkData(1,2,'涛思数据TAOSdata')
|
||||
tdSql.checkData(1,3,'TDengine')
|
||||
tdSql.checkData(1,4,'北京涛思数据科技有限公司')
|
||||
tdSql.checkData(2,1,'0')
|
||||
tdSql.checkData(2,2,'0')
|
||||
tdSql.checkData(2,3,'0')
|
||||
tdSql.checkData(2,4,'0')
|
||||
|
||||
|
||||
tdLog.info("=============== step3.4,drop normal table && create table")
|
||||
cmd1 = 'drop table if exists normal_in_binary_nchar_1 ;'
|
||||
cmd2 = 'create table normal_in_binary_nchar_1 (ts timestamp,in_binary binary(8),in_nchar nchar(12)) ; '
|
||||
tdLog.info(cmd1)
|
||||
|
@ -569,7 +668,7 @@ class TDTestCase:
|
|||
tdSql.execute(cmd2)
|
||||
|
||||
|
||||
tdLog.info("=============== step3.4,insert normal table right data and check in function")
|
||||
tdLog.info("=============== step3.5,insert normal table right data and check in function")
|
||||
cmd1 = 'insert into normal_in_binary_nchar_1 values(now,\'0\',\'0\') ;'
|
||||
tdLog.info(cmd1)
|
||||
tdSql.execute(cmd1)
|
||||
|
@ -598,124 +697,413 @@ class TDTestCase:
|
|||
tdSql.checkData(0,2,'北京涛思数据科技有限公司')
|
||||
tdSql.query('select * from normal_in_binary_nchar_1 where in_nchar in (\'北京涛思数据科技有限公司\') order by ts desc')
|
||||
tdSql.checkData(0,1,'TDengine')
|
||||
tdSql.checkData(0,2,'北京涛思数据科技有限公司')
|
||||
tdSql.checkData(0,2,'北京涛思数据科技有限公司')
|
||||
|
||||
tdLog.info("=============== step4,check float and double data type,not support")
|
||||
cmd4 = '''select * from normal_in_binary_nchar_1
|
||||
where in_binary in (\'0\',\'TDengine\',\'TAOS\')
|
||||
and in_nchar in (\'0\',\'北京涛思数据科技有限公司\',\'涛思数据TAOSdata\')
|
||||
order by ts desc ;'''
|
||||
tdLog.info(cmd4)
|
||||
tdSql.query(cmd4)
|
||||
tdSql.checkData(0,1,'TDengine')
|
||||
tdSql.checkData(0,2,'北京涛思数据科技有限公司')
|
||||
tdSql.checkData(1,1,'TAOS')
|
||||
tdSql.checkData(1,2,'涛思数据TAOSdata')
|
||||
tdSql.checkData(2,1,'0')
|
||||
tdSql.checkData(2,2,'0')
|
||||
|
||||
|
||||
tdLog.info("=============== step4,check float and double data type")
|
||||
|
||||
tdLog.info("=============== step4.1,drop table && create table")
|
||||
cmd1 = 'drop table if exists in_float_double_1 ;'
|
||||
cmd1 = 'drop table if exists in_ts_float_double_1 ;'
|
||||
cmd2 = 'drop table if exists in_ts_float_double_2 ;'
|
||||
cmd3 = 'drop table if exists in_ts_float_double_3 ;'
|
||||
cmd10 = 'drop table if exists in_stable_4 ;'
|
||||
cmd11 = 'create stable in_stable_4(ts timestamp,in_float float,in_double double) tags (tin_float float,tin_double double) ;'
|
||||
cmd12 = 'create table in_float_double_1 using in_stable_4 tags(\'666\',\'88888\') ; '
|
||||
cmd11 = 'create stable in_stable_4(ts timestamp,in_ts timestamp,in_float float,in_double double) tags (tin_ts timestamp,tin_float float,tin_double double) ;'
|
||||
cmd12 = 'create table in_ts_float_double_1 using in_stable_4 tags(\'0\',\'0\',\'0\') ; '
|
||||
cmd13 = 'create table in_ts_float_double_2 using in_stable_4 tags(\'2020-01-01 08:00:00.001\',\'666\',\'-88888\') ; '
|
||||
cmd14 = 'create table in_ts_float_double_3 using in_stable_4 tags(\'2021-01-01 08:00:00.001\',\'-888.00000\',\'66666.000000000\') ; '
|
||||
tdLog.info(cmd1)
|
||||
tdSql.execute(cmd1)
|
||||
tdLog.info(cmd2)
|
||||
tdSql.execute(cmd2)
|
||||
tdLog.info(cmd3)
|
||||
tdSql.execute(cmd3)
|
||||
tdLog.info(cmd10)
|
||||
tdSql.execute(cmd10)
|
||||
tdLog.info(cmd11)
|
||||
tdSql.execute(cmd11)
|
||||
tdLog.info(cmd12)
|
||||
tdSql.execute(cmd12)
|
||||
tdLog.info(cmd13)
|
||||
tdSql.execute(cmd13)
|
||||
tdLog.info(cmd14)
|
||||
tdSql.execute(cmd14)
|
||||
|
||||
tdLog.info("=============== step4.2,insert stable right data and check in function")
|
||||
cmd1 = 'insert into in_float_double_1 values(now,\'888\',\'66666\') ;'
|
||||
cmd1 = 'insert into in_ts_float_double_1 values(now,\'0\',\'0\',\'0\') ;'
|
||||
tdLog.info(cmd1)
|
||||
tdSql.execute(cmd1)
|
||||
tdSql.execute(cmd1)
|
||||
|
||||
tdSql.query('select * from in_stable_4 where in_ts in (\'0\') order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.checkData(0,4,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,5,0.00000)
|
||||
tdSql.checkData(0,6,0.000000000)
|
||||
tdSql.query('select * from in_stable_4 where in_ts in (\'1970-01-01 08:00:00.000\') order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.checkData(0,4,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,5,0.00000)
|
||||
tdSql.checkData(0,6,0.000000000)
|
||||
tdSql.query('select * from in_stable_4 where in_float in (0.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.checkData(0,4,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,5,0.00000)
|
||||
tdSql.checkData(0,6,0.000000000)
|
||||
tdSql.query('select * from in_stable_4 where in_double in (0.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.checkData(0,4,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,5,0.00000)
|
||||
tdSql.checkData(0,6,0.000000000)
|
||||
|
||||
tdSql.query('select * from in_stable_4 where tin_ts in (\'0\') order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.checkData(0,4,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,5,0.00000)
|
||||
tdSql.checkData(0,6,0.000000000)
|
||||
tdSql.query('select * from in_stable_4 where tin_ts in (\'1970-01-01 08:00:00.000\') order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.checkData(0,4,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,5,0.00000)
|
||||
tdSql.checkData(0,6,0.000000000)
|
||||
tdSql.query('select * from in_stable_4 where tin_float in (0.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.checkData(0,4,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,5,0.00000)
|
||||
tdSql.checkData(0,6,0.000000000)
|
||||
tdSql.query('select * from in_stable_4 where tin_double in (0.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.checkData(0,4,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,5,0.00000)
|
||||
tdSql.checkData(0,6,0.000000000)
|
||||
|
||||
tdSql.query('select * from in_ts_float_double_1 where in_ts in (\'0\') order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.query('select * from in_ts_float_double_1 where in_ts in (\'1970-01-01 08:00:00.000\') order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.query('select * from in_ts_float_double_1 where in_float in (0.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.query('select * from in_ts_float_double_1 where in_double in (0.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
|
||||
cmd2 = 'select * from in_stable_4 where in_float in (\'888\');'
|
||||
cmd2 = 'insert into in_ts_float_double_2 values(now,\'2020-01-01 08:00:00.001\',\'666\',\'-88888\') ;'
|
||||
tdLog.info(cmd2)
|
||||
tdSql.error(cmd2)
|
||||
try:
|
||||
tdSql.execute(cmd2)
|
||||
tdLog.exit("invalid operation: not supported filter condition")
|
||||
except Exception as e:
|
||||
tdLog.info(repr(e))
|
||||
tdLog.info("invalid operation: not supported filter condition")
|
||||
tdSql.execute(cmd2)
|
||||
|
||||
tdSql.query('select * from in_stable_4 where in_ts in (\'2020-01-01 08:00:00.001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.checkData(0,4,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,666.00000)
|
||||
tdSql.checkData(0,6,-88888.000000000)
|
||||
tdSql.query('select * from in_stable_4 where in_ts in (\'1577836800001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.checkData(0,4,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,666.00000)
|
||||
tdSql.checkData(0,6,-88888.000000000)
|
||||
tdSql.query('select * from in_stable_4 where in_float in (666.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.checkData(0,4,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,666.00000)
|
||||
tdSql.checkData(0,6,-88888.000000000)
|
||||
tdSql.query('select * from in_stable_4 where in_double in (-88888.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.checkData(0,4,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,666.00000)
|
||||
tdSql.checkData(0,6,-88888.000000000)
|
||||
|
||||
tdSql.query('select * from in_stable_4 where tin_ts in (\'2020-01-01 08:00:00.001000\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.checkData(0,4,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,666.00000)
|
||||
tdSql.checkData(0,6,-88888.000000000)
|
||||
tdSql.query('select * from in_stable_4 where tin_ts in (\'1577836800001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.checkData(0,4,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,666.00000)
|
||||
tdSql.checkData(0,6,-88888.000000000)
|
||||
tdSql.query('select * from in_stable_4 where tin_float in (666.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.checkData(0,4,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,666.00000)
|
||||
tdSql.checkData(0,6,-88888.000000000)
|
||||
tdSql.query('select * from in_stable_4 where tin_double in (-88888.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.checkData(0,4,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,666.00000)
|
||||
tdSql.checkData(0,6,-88888.000000000)
|
||||
|
||||
tdSql.query('select * from in_ts_float_double_2 where in_ts in (\'1577836800001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.query('select * from in_ts_float_double_2 where in_ts in (\'2020-01-01 08:00:00.001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.query('select * from in_ts_float_double_2 where in_float in (666.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.query('select * from in_ts_float_double_2 where in_double in (-88888.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
|
||||
cmd3 = 'select * from in_stable_4 where in_double in (\'66666\');'
|
||||
cmd3 = 'insert into in_ts_float_double_3 values(now,\'2021-01-01 08:00:00.001\',\'-888.00000\',\'66666.000000000\') ;'
|
||||
tdLog.info(cmd3)
|
||||
tdSql.error(cmd3)
|
||||
try:
|
||||
tdSql.execute(cmd3)
|
||||
tdLog.exit("invalid operation: not supported filter condition")
|
||||
except Exception as e:
|
||||
tdLog.info(repr(e))
|
||||
tdLog.info("invalid operation: not supported filter condition")
|
||||
tdSql.execute(cmd3)
|
||||
|
||||
cmd4 = 'select * from in_stable_4 where tin_float in (\'666\');'
|
||||
tdLog.info(cmd4)
|
||||
tdSql.error(cmd4)
|
||||
try:
|
||||
tdSql.execute(cmd4)
|
||||
tdLog.exit("invalid operation: not supported filter condition")
|
||||
except Exception as e:
|
||||
tdLog.info(repr(e))
|
||||
tdLog.info("invalid operation: not supported filter condition")
|
||||
tdSql.query('select * from in_stable_4 where in_ts in (\'2021-01-01 08:00:00.001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.checkData(0,4,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,-888.00000)
|
||||
tdSql.checkData(0,6,66666.000000000)
|
||||
tdSql.query('select * from in_stable_4 where in_ts in (\'1609459200001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.checkData(0,4,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,-888.00000)
|
||||
tdSql.checkData(0,6,66666.000000000)
|
||||
tdSql.query('select * from in_stable_4 where in_float in (-888.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.checkData(0,4,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,-888.00000)
|
||||
tdSql.checkData(0,6,66666.000000000)
|
||||
tdSql.query('select * from in_stable_4 where in_double in (66666.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.checkData(0,4,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,-888.00000)
|
||||
tdSql.checkData(0,6,66666.000000000)
|
||||
|
||||
tdSql.query('select * from in_stable_4 where tin_ts in (\'2021-01-01 08:00:00.001000\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.checkData(0,4,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,-888.00000)
|
||||
tdSql.checkData(0,6,66666.000000000)
|
||||
tdSql.query('select * from in_stable_4 where tin_ts in (\'1609459200001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.checkData(0,4,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,-888.00000)
|
||||
tdSql.checkData(0,6,66666.000000000)
|
||||
tdSql.query('select * from in_stable_4 where tin_float in (-888.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.checkData(0,4,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,-888.00000)
|
||||
tdSql.checkData(0,6,66666.000000000)
|
||||
tdSql.query('select * from in_stable_4 where tin_double in (66666.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.checkData(0,4,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,-888.00000)
|
||||
tdSql.checkData(0,6,66666.000000000)
|
||||
|
||||
tdSql.query('select * from in_ts_float_double_3 where in_ts in (\'1609459200001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.query('select * from in_ts_float_double_3 where in_ts in (\'2021-01-01 08:00:00.001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.query('select * from in_ts_float_double_3 where in_float in (-888.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.query('select * from in_ts_float_double_3 where in_double in (66666.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
|
||||
|
||||
tdLog.info("=============== step4.3,multiple column and multiple tag check in function")
|
||||
cmd1 = '''select * from in_stable_4
|
||||
where in_ts in (\'1609459200001\',\'2021-01-01 08:00:00.001\',\'1577836800001\',\'2020-01-01 08:00:00.001000\',\'0\',\'1970-01-01 08:00:00.000\')
|
||||
and in_float in (0.00000,666.00000,-888.00000)
|
||||
and in_double in (0.000000000,66666.000000000,-88888.000000000)
|
||||
and tin_ts in (\'1609459200001\',\'2021-01-01 08:00:00.001\',\'1577836800001\',\'2020-01-01 08:00:00.001000\',\'0\',\'1970-01-01 08:00:00.000\')
|
||||
and tin_float in (0.00000,666.00000,-888.00000)
|
||||
and tin_double in (0.000000000,66666.000000000,-88888.000000000)
|
||||
order by ts desc ;'''
|
||||
tdLog.info(cmd1)
|
||||
tdSql.query(cmd1)
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001000')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.checkData(0,4,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,5,-888.00000)
|
||||
tdSql.checkData(0,6,66666.000000000)
|
||||
tdSql.checkData(1,1,'2020-01-01 08:00:00.001000')
|
||||
tdSql.checkData(1,2,666.00000)
|
||||
tdSql.checkData(1,3,-88888.000000000)
|
||||
tdSql.checkData(1,4,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(1,5,666.00000)
|
||||
tdSql.checkData(1,6,-88888.000000000)
|
||||
tdSql.checkData(2,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(2,2,0.00000)
|
||||
tdSql.checkData(2,3,0.000000000)
|
||||
tdSql.checkData(2,4,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(2,5,0.00000)
|
||||
tdSql.checkData(2,6,0.000000000)
|
||||
|
||||
|
||||
cmd5 = 'select * from in_stable_4 where tin_double in (\'88888\');'
|
||||
tdLog.info(cmd5)
|
||||
tdSql.error(cmd5)
|
||||
try:
|
||||
tdSql.execute(cmd5)
|
||||
tdLog.exit("invalid operation: not supported filter condition")
|
||||
except Exception as e:
|
||||
tdLog.info(repr(e))
|
||||
tdLog.info("invalid operation: not supported filter condition")
|
||||
|
||||
cmd6 = 'select * from in_float_double_1 where in_float in (\'888\');'
|
||||
tdLog.info(cmd6)
|
||||
tdSql.error(cmd6)
|
||||
try:
|
||||
tdSql.execute(cmd6)
|
||||
tdLog.exit("invalid operation: not supported filter condition")
|
||||
except Exception as e:
|
||||
tdLog.info(repr(e))
|
||||
tdLog.info("invalid operation: not supported filter condition")
|
||||
|
||||
cmd7 = 'select * from in_float_double_1 where in_double in (\'66666\');'
|
||||
tdLog.info(cmd7)
|
||||
tdSql.error(cmd7)
|
||||
try:
|
||||
tdSql.execute(cmd7)
|
||||
tdLog.exit("invalid operation: not supported filter condition")
|
||||
except Exception as e:
|
||||
tdLog.info(repr(e))
|
||||
tdLog.info("invalid operation: not supported filter condition")
|
||||
|
||||
|
||||
|
||||
tdLog.info("=============== step4.3,drop normal table && create table")
|
||||
cmd1 = 'drop table if exists normal_in_float_double_1 ;'
|
||||
cmd2 = 'create table normal_in_float_double_1 (ts timestamp,in_float float,in_double double) ; '
|
||||
tdLog.info("=============== step4.4,drop normal table && create table")
|
||||
cmd1 = 'drop table if exists normal_in_ts_float_double_1 ;'
|
||||
cmd2 = 'create table normal_in_ts_float_double_1 (ts timestamp,in_ts timestamp,in_float float,in_double double) ; '
|
||||
tdLog.info(cmd1)
|
||||
tdSql.execute(cmd1)
|
||||
tdLog.info(cmd2)
|
||||
tdSql.execute(cmd2)
|
||||
|
||||
|
||||
tdLog.info("=============== step4.4,insert normal table right data and check in function")
|
||||
cmd1 = 'insert into normal_in_float_double_1 values(now,\'888\',\'666666\') ;'
|
||||
tdLog.info("=============== step4.5,insert normal table right data and check in function")
|
||||
cmd1 = 'insert into normal_in_ts_float_double_1 values(now,\'0\',\'0\',\'0\') ;'
|
||||
tdLog.info(cmd1)
|
||||
tdSql.execute(cmd1)
|
||||
tdSql.execute(cmd1)
|
||||
|
||||
cmd2 = 'select * from normal_in_float_double_1 where in_float in (\'888\');'
|
||||
#tdLog.info(cmd2)
|
||||
#tdSql.error(cmd2)
|
||||
#try:
|
||||
# tdSql.execute(cmd2)
|
||||
# tdLog.exit("invalid operation: not supported filter condition")
|
||||
#except Exception as e:
|
||||
# tdLog.info(repr(e))
|
||||
# tdLog.info("invalid operation: not supported filter condition")
|
||||
#
|
||||
#cmd3 = 'select * from normal_in_float_double_1 where in_double in (\'66666\');'
|
||||
#tdLog.info(cmd3)
|
||||
#tdSql.error(cmd3)
|
||||
#try:
|
||||
# tdSql.execute(cmd3)
|
||||
# tdLog.exit("invalid operation: not supported filter condition")
|
||||
#except Exception as e:
|
||||
# tdLog.info(repr(e))
|
||||
# tdLog.info("invalid operation: not supported filter condition")
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_ts in (\'0\') order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_ts in (\'1970-01-01 08:00:00.000\') order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_float in (0.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_double in (0.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(0,2,0.00000)
|
||||
tdSql.checkData(0,3,0.000000000)
|
||||
|
||||
cmd2 = 'insert into normal_in_ts_float_double_1 values(now,\'2020-01-01 08:00:00.001\',\'666\',\'-88888\') ;'
|
||||
tdLog.info(cmd2)
|
||||
tdSql.execute(cmd2)
|
||||
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_ts in (\'1577836800001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_ts in (\'2020-01-01 08:00:00.001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_float in (666.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_double in (-88888.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,666.00000)
|
||||
tdSql.checkData(0,3,-88888.000000000)
|
||||
|
||||
cmd3 = 'insert into normal_in_ts_float_double_1 values(now,\'2021-01-01 08:00:00.001\',\'-888.00000\',\'66666.000000000\') ;'
|
||||
tdLog.info(cmd3)
|
||||
tdSql.execute(cmd3)
|
||||
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_ts in (\'1609459200001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_ts in (\'2021-01-01 08:00:00.001\') order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_float in (-888.00000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.query('select * from normal_in_ts_float_double_1 where in_double in (66666.000000000) order by ts desc')
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
|
||||
cmd4 = '''select * from normal_in_ts_float_double_1
|
||||
where in_ts in (\'1609459200001\',\'2021-01-01 08:00:00.001\',\'1577836800001\',\'2020-01-01 08:00:00.001000\',\'0\',\'1970-01-01 08:00:00.000\')
|
||||
and in_double in (0.000000000,66666.000000000,-88888.000000000)
|
||||
and in_float in (0.00000,666.00000,-888.00000)
|
||||
order by ts desc ;'''
|
||||
tdLog.info(cmd4)
|
||||
tdSql.query(cmd4)
|
||||
tdSql.checkData(0,1,'2021-01-01 08:00:00.001')
|
||||
tdSql.checkData(0,2,-888.00000)
|
||||
tdSql.checkData(0,3,66666.000000000)
|
||||
tdSql.checkData(1,1,'2020-01-01 08:00:00.001')
|
||||
tdSql.checkData(1,2,666.00000)
|
||||
tdSql.checkData(1,3,-88888.000000000)
|
||||
tdSql.checkData(2,1,'1970-01-01 08:00:00.000')
|
||||
tdSql.checkData(2,2,0.00000)
|
||||
tdSql.checkData(2,3,0.000000000)
|
||||
|
||||
|
||||
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
|
|
|
@ -45,7 +45,9 @@ class TDTestCase:
|
|||
for i in range(100):
|
||||
sql += "(%d, %d, 'nchar%d')" % (currts + i, i % 100, i % 100)
|
||||
tdSql.execute(sql)
|
||||
|
||||
|
||||
os.system("rm /tmp/*.sql")
|
||||
os.system("taosdump --databases db -o /tmp")
|
||||
|
||||
tdSql.execute("drop database db")
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
###################################################################
|
||||
# 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 os
|
||||
from util.log import *
|
||||
from util.cases import *
|
||||
from util.sql import *
|
||||
from util.dnodes import *
|
||||
|
||||
|
||||
class TDTestCase:
|
||||
def init(self, conn, logSql):
|
||||
tdLog.debug("start to execute %s" % __file__)
|
||||
tdSql.init(conn.cursor(), logSql)
|
||||
|
||||
self.ts = 1601481600000
|
||||
self.numberOfTables = 1
|
||||
self.numberOfRecords = 15000
|
||||
|
||||
def run(self):
|
||||
tdSql.prepare()
|
||||
|
||||
tdSql.execute("create table st(ts timestamp, c1 timestamp, c2 int, c3 bigint, c4 float, c5 double, c6 binary(8), c7 smallint, c8 tinyint, c9 bool, c10 nchar(8)) tags(t1 int)")
|
||||
tdSql.execute("create table t1 using st tags(0)")
|
||||
currts = self.ts
|
||||
finish = 0
|
||||
while(finish < self.numberOfRecords):
|
||||
sql = "insert into t1 values"
|
||||
for i in range(finish, self.numberOfRecords):
|
||||
sql += "(%d, 1019774612, 29931, 1442173978, 165092.468750, 1128.643179, 'MOCq1pTu', 18405, 82, 0, 'g0A6S0Fu')" % (currts + i)
|
||||
finish = i + 1
|
||||
if (1048576 - len(sql)) < 16384:
|
||||
break
|
||||
tdSql.execute(sql)
|
||||
|
||||
os.system("rm /tmp/*.sql")
|
||||
os.system("taosdump --databases db -o /tmp -B 32766 -L 1048576")
|
||||
|
||||
tdSql.execute("drop database db")
|
||||
tdSql.query("show databases")
|
||||
tdSql.checkRows(0)
|
||||
|
||||
os.system("taosdump -i /tmp")
|
||||
|
||||
tdSql.query("show databases")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0, 0, 'db')
|
||||
|
||||
tdSql.execute("use db")
|
||||
tdSql.query("show stables")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0, 0, 'st')
|
||||
|
||||
tdSql.query("select count(*) from t1")
|
||||
tdSql.checkData(0, 0, self.numberOfRecords)
|
||||
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
tdLog.success("%s successfully executed" % __file__)
|
||||
|
||||
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
Loading…
Reference in New Issue