Merge branch '3.0' into feat/agg_client_api
This commit is contained in:
commit
f645943e5b
|
@ -79,8 +79,8 @@
|
|||
#define TK_NOT 61
|
||||
#define TK_EXISTS 62
|
||||
#define TK_BUFFER 63
|
||||
#define TK_CACHELAST 64
|
||||
#define TK_CACHELASTSIZE 65
|
||||
#define TK_CACHEMODEL 64
|
||||
#define TK_CACHESIZE 65
|
||||
#define TK_COMP 66
|
||||
#define TK_DURATION 67
|
||||
#define TK_NK_VARIABLE 68
|
||||
|
|
|
@ -51,7 +51,8 @@ extern "C" {
|
|||
typedef struct SDatabaseOptions {
|
||||
ENodeType type;
|
||||
int32_t buffer;
|
||||
int8_t cacheLast;
|
||||
char cacheModelStr[TSDB_CACHE_MODEL_STR_LEN];
|
||||
int8_t cacheModel;
|
||||
int32_t cacheLastSize;
|
||||
int8_t compressionLevel;
|
||||
int32_t daysPerFile;
|
||||
|
@ -66,6 +67,7 @@ typedef struct SDatabaseOptions {
|
|||
char precisionStr[3];
|
||||
int8_t precision;
|
||||
int8_t replica;
|
||||
char strictStr[TSDB_DB_STRICT_STR_LEN];
|
||||
int8_t strict;
|
||||
int8_t walLevel;
|
||||
int32_t numOfVgroups;
|
||||
|
|
|
@ -53,7 +53,7 @@ extern const int32_t TYPE_BYTES[16];
|
|||
#define TSDB_DATA_BIGINT_NULL 0x8000000000000000LL
|
||||
#define TSDB_DATA_TIMESTAMP_NULL TSDB_DATA_BIGINT_NULL
|
||||
|
||||
#define TSDB_DATA_FLOAT_NULL 0x7FF00000 // it is an NAN
|
||||
#define TSDB_DATA_FLOAT_NULL 0x7FF00000 // it is an NAN
|
||||
#define TSDB_DATA_DOUBLE_NULL 0x7FFFFF0000000000LL // an NAN
|
||||
#define TSDB_DATA_NCHAR_NULL 0xFFFFFFFF
|
||||
#define TSDB_DATA_BINARY_NULL 0xFF
|
||||
|
@ -107,9 +107,10 @@ extern const int32_t TYPE_BYTES[16];
|
|||
|
||||
#define TSDB_INS_USER_STABLES_DBNAME_COLID 2
|
||||
|
||||
#define TSDB_TICK_PER_SECOND(precision) \
|
||||
((int64_t)((precision) == TSDB_TIME_PRECISION_MILLI ? 1000LL \
|
||||
: ((precision) == TSDB_TIME_PRECISION_MICRO ? 1000000LL : 1000000000LL)))
|
||||
#define TSDB_TICK_PER_SECOND(precision) \
|
||||
((int64_t)((precision) == TSDB_TIME_PRECISION_MILLI \
|
||||
? 1000LL \
|
||||
: ((precision) == TSDB_TIME_PRECISION_MICRO ? 1000000LL : 1000000000LL)))
|
||||
|
||||
#define T_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
|
||||
#define T_APPEND_MEMBER(dst, ptr, type, member) \
|
||||
|
@ -328,15 +329,25 @@ typedef enum ELogicConditionType {
|
|||
#define TSDB_MIN_DB_REPLICA 1
|
||||
#define TSDB_MAX_DB_REPLICA 3
|
||||
#define TSDB_DEFAULT_DB_REPLICA 1
|
||||
#define TSDB_DB_STRICT_STR_LEN sizeof(TSDB_DB_STRICT_OFF_STR)
|
||||
#define TSDB_DB_STRICT_OFF_STR "off"
|
||||
#define TSDB_DB_STRICT_ON_STR "on"
|
||||
#define TSDB_DB_STRICT_OFF 0
|
||||
#define TSDB_DB_STRICT_ON 1
|
||||
#define TSDB_DEFAULT_DB_STRICT 0
|
||||
#define TSDB_MIN_DB_CACHE_LAST 0
|
||||
#define TSDB_MAX_DB_CACHE_LAST 3
|
||||
#define TSDB_DEFAULT_CACHE_LAST 0
|
||||
#define TSDB_MIN_DB_CACHE_LAST_SIZE 1 // MB
|
||||
#define TSDB_MAX_DB_CACHE_LAST_SIZE 65536
|
||||
#define TSDB_DEFAULT_CACHE_LAST_SIZE 1
|
||||
#define TSDB_DEFAULT_DB_STRICT TSDB_DB_STRICT_OFF
|
||||
#define TSDB_CACHE_MODEL_STR_LEN sizeof(TSDB_CACHE_MODEL_LAST_VALUE_STR)
|
||||
#define TSDB_CACHE_MODEL_NONE_STR "none"
|
||||
#define TSDB_CACHE_MODEL_LAST_ROW_STR "last_row"
|
||||
#define TSDB_CACHE_MODEL_LAST_VALUE_STR "last_value"
|
||||
#define TSDB_CACHE_MODEL_BOTH_STR "both"
|
||||
#define TSDB_CACHE_MODEL_NONE 0
|
||||
#define TSDB_CACHE_MODEL_LAST_ROW 1
|
||||
#define TSDB_CACHE_MODEL_LAST_VALUE 2
|
||||
#define TSDB_CACHE_MODEL_BOTH 3
|
||||
#define TSDB_DEFAULT_CACHE_MODEL TSDB_CACHE_MODEL_NONE
|
||||
#define TSDB_MIN_DB_CACHE_SIZE 1 // MB
|
||||
#define TSDB_MAX_DB_CACHE_SIZE 65536
|
||||
#define TSDB_DEFAULT_CACHE_SIZE 1
|
||||
#define TSDB_DB_STREAM_MODE_OFF 0
|
||||
#define TSDB_DB_STREAM_MODE_ON 1
|
||||
#define TSDB_DEFAULT_DB_STREAM_MODE 0
|
||||
|
|
|
@ -142,6 +142,7 @@ void taos_close(TAOS *taos) {
|
|||
|
||||
int taos_errno(TAOS_RES *res) {
|
||||
if (res == NULL || TD_RES_TMQ_META(res)) {
|
||||
if (terrno == TSDB_CODE_RPC_REDIRECT) terrno = TSDB_CODE_RPC_NETWORK_UNAVAIL;
|
||||
return terrno;
|
||||
}
|
||||
|
||||
|
@ -149,11 +150,13 @@ int taos_errno(TAOS_RES *res) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
return ((SRequestObj *)res)->code;
|
||||
return ((SRequestObj *)res)->code == TSDB_CODE_RPC_REDIRECT ? TSDB_CODE_RPC_NETWORK_UNAVAIL
|
||||
: ((SRequestObj *)res)->code;
|
||||
}
|
||||
|
||||
const char *taos_errstr(TAOS_RES *res) {
|
||||
if (res == NULL || TD_RES_TMQ_META(res)) {
|
||||
if (terrno == TSDB_CODE_RPC_REDIRECT) terrno = TSDB_CODE_RPC_NETWORK_UNAVAIL;
|
||||
return (const char *)tstrerror(terrno);
|
||||
}
|
||||
|
||||
|
@ -165,7 +168,8 @@ const char *taos_errstr(TAOS_RES *res) {
|
|||
if (NULL != pRequest->msgBuf && (strlen(pRequest->msgBuf) > 0 || pRequest->code == TSDB_CODE_RPC_FQDN_ERROR)) {
|
||||
return pRequest->msgBuf;
|
||||
} else {
|
||||
return (const char *)tstrerror(pRequest->code);
|
||||
return pRequest->code == TSDB_CODE_RPC_REDIRECT ? (const char *)tstrerror(TSDB_CODE_RPC_NETWORK_UNAVAIL)
|
||||
: (const char *)tstrerror(pRequest->code);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ static const SSysDbTableSchema userDBSchema[] = {
|
|||
{.name = "vgroups", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT},
|
||||
{.name = "ntables", .bytes = 8, .type = TSDB_DATA_TYPE_BIGINT},
|
||||
{.name = "replica", .bytes = 1, .type = TSDB_DATA_TYPE_TINYINT},
|
||||
{.name = "strict", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR},
|
||||
{.name = "strict", .bytes = TSDB_DB_STRICT_STR_LEN + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR},
|
||||
{.name = "duration", .bytes = 10 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR},
|
||||
{.name = "keep", .bytes = 32 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR},
|
||||
{.name = "buffer", .bytes = 4, .type = TSDB_DATA_TYPE_INT},
|
||||
|
@ -87,9 +87,9 @@ static const SSysDbTableSchema userDBSchema[] = {
|
|||
{.name = "wal", .bytes = 1, .type = TSDB_DATA_TYPE_TINYINT},
|
||||
{.name = "fsync", .bytes = 4, .type = TSDB_DATA_TYPE_INT},
|
||||
{.name = "comp", .bytes = 1, .type = TSDB_DATA_TYPE_TINYINT},
|
||||
{.name = "cache_model", .bytes = 1, .type = TSDB_DATA_TYPE_TINYINT},
|
||||
{.name = "cacheModel", .bytes = TSDB_CACHE_MODEL_STR_LEN + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR},
|
||||
{.name = "precision", .bytes = 2 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR},
|
||||
{.name = "single_stable_model", .bytes = 1, .type = TSDB_DATA_TYPE_BOOL},
|
||||
{.name = "single_stable", .bytes = 1, .type = TSDB_DATA_TYPE_BOOL},
|
||||
{.name = "status", .bytes = 10 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR},
|
||||
// {.name = "schemaless", .bytes = 1, .type = TSDB_DATA_TYPE_BOOL},
|
||||
{.name = "retention", .bytes = 60 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR},
|
||||
|
|
|
@ -293,7 +293,7 @@ static int32_t mndCheckDbCfg(SMnode *pMnode, SDbCfg *pCfg) {
|
|||
if (pCfg->buffer < TSDB_MIN_BUFFER_PER_VNODE || pCfg->buffer > TSDB_MAX_BUFFER_PER_VNODE) return -1;
|
||||
if (pCfg->pageSize < TSDB_MIN_PAGESIZE_PER_VNODE || pCfg->pageSize > TSDB_MAX_PAGESIZE_PER_VNODE) return -1;
|
||||
if (pCfg->pages < TSDB_MIN_PAGES_PER_VNODE || pCfg->pages > TSDB_MAX_PAGES_PER_VNODE) return -1;
|
||||
if (pCfg->cacheLastSize < TSDB_MIN_DB_CACHE_LAST_SIZE || pCfg->cacheLastSize > TSDB_MAX_DB_CACHE_LAST_SIZE) return -1;
|
||||
if (pCfg->cacheLastSize < TSDB_MIN_DB_CACHE_SIZE || pCfg->cacheLastSize > TSDB_MAX_DB_CACHE_SIZE) return -1;
|
||||
if (pCfg->daysPerFile < TSDB_MIN_DAYS_PER_FILE || pCfg->daysPerFile > TSDB_MAX_DAYS_PER_FILE) return -1;
|
||||
if (pCfg->daysToKeep0 < TSDB_MIN_KEEP || pCfg->daysToKeep0 > TSDB_MAX_KEEP) return -1;
|
||||
if (pCfg->daysToKeep1 < TSDB_MIN_KEEP || pCfg->daysToKeep1 > TSDB_MAX_KEEP) return -1;
|
||||
|
@ -312,7 +312,7 @@ static int32_t mndCheckDbCfg(SMnode *pMnode, SDbCfg *pCfg) {
|
|||
if (pCfg->replications != 1 && pCfg->replications != 3) return -1;
|
||||
if (pCfg->strict < TSDB_DB_STRICT_OFF || pCfg->strict > TSDB_DB_STRICT_ON) return -1;
|
||||
if (pCfg->schemaless < TSDB_DB_SCHEMALESS_OFF || pCfg->schemaless > TSDB_DB_SCHEMALESS_ON) return -1;
|
||||
if (pCfg->cacheLast < TSDB_MIN_DB_CACHE_LAST || pCfg->cacheLast > TSDB_MAX_DB_CACHE_LAST) return -1;
|
||||
if (pCfg->cacheLast < TSDB_CACHE_MODEL_NONE || pCfg->cacheLast > TSDB_CACHE_MODEL_BOTH) return -1;
|
||||
if (pCfg->hashMethod != 1) return -1;
|
||||
if (pCfg->replications > mndGetDnodeSize(pMnode)) {
|
||||
terrno = TSDB_CODE_MND_NO_ENOUGH_DNODES;
|
||||
|
@ -341,8 +341,8 @@ static void mndSetDefaultDbCfg(SDbCfg *pCfg) {
|
|||
if (pCfg->compression < 0) pCfg->compression = TSDB_DEFAULT_COMP_LEVEL;
|
||||
if (pCfg->replications < 0) pCfg->replications = TSDB_DEFAULT_DB_REPLICA;
|
||||
if (pCfg->strict < 0) pCfg->strict = TSDB_DEFAULT_DB_STRICT;
|
||||
if (pCfg->cacheLast < 0) pCfg->cacheLast = TSDB_DEFAULT_CACHE_LAST;
|
||||
if (pCfg->cacheLastSize <= 0) pCfg->cacheLastSize = TSDB_DEFAULT_CACHE_LAST_SIZE;
|
||||
if (pCfg->cacheLast < 0) pCfg->cacheLast = TSDB_DEFAULT_CACHE_MODEL;
|
||||
if (pCfg->cacheLastSize <= 0) pCfg->cacheLastSize = TSDB_DEFAULT_CACHE_SIZE;
|
||||
if (pCfg->numOfRetensions < 0) pCfg->numOfRetensions = 0;
|
||||
if (pCfg->schemaless < 0) pCfg->schemaless = TSDB_DB_SCHEMALESS_OFF;
|
||||
}
|
||||
|
@ -1443,6 +1443,22 @@ char *buildRetension(SArray *pRetension) {
|
|||
return p1;
|
||||
}
|
||||
|
||||
static const char *getCacheModelStr(int8_t cacheModel) {
|
||||
switch (cacheModel) {
|
||||
case TSDB_CACHE_MODEL_NONE:
|
||||
return TSDB_CACHE_MODEL_NONE_STR;
|
||||
case TSDB_CACHE_MODEL_LAST_ROW:
|
||||
return TSDB_CACHE_MODEL_LAST_ROW_STR;
|
||||
case TSDB_CACHE_MODEL_LAST_VALUE:
|
||||
return TSDB_CACHE_MODEL_LAST_VALUE_STR;
|
||||
case TSDB_CACHE_MODEL_BOTH:
|
||||
return TSDB_CACHE_MODEL_BOTH_STR;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
static void dumpDbInfoData(SSDataBlock *pBlock, SDbObj *pDb, SShowObj *pShow, int32_t rows, int64_t numOfTables,
|
||||
bool sysDb, ESdbStatus objStatus, bool sysinfo) {
|
||||
int32_t cols = 0;
|
||||
|
@ -1491,7 +1507,7 @@ static void dumpDbInfoData(SSDataBlock *pBlock, SDbObj *pDb, SShowObj *pShow, in
|
|||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.replications, false);
|
||||
|
||||
const char *strictStr = pDb->cfg.strict ? "strict" : "no_strict";
|
||||
const char *strictStr = pDb->cfg.strict ? "on" : "off";
|
||||
char strictVstr[24] = {0};
|
||||
STR_WITH_SIZE_TO_VARSTR(strictVstr, strictStr, strlen(strictStr));
|
||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||
|
@ -1539,8 +1555,11 @@ static void dumpDbInfoData(SSDataBlock *pBlock, SDbObj *pDb, SShowObj *pShow, in
|
|||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.compression, false);
|
||||
|
||||
const char *cacheModelStr = getCacheModelStr(pDb->cfg.cacheLast);
|
||||
char cacheModelVstr[24] = {0};
|
||||
STR_WITH_SIZE_TO_VARSTR(cacheModelVstr, cacheModelStr, strlen(cacheModelStr));
|
||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.cacheLast, false);
|
||||
colDataAppend(pColInfo, rows, (const char *)cacheModelVstr, false);
|
||||
|
||||
const char *precStr = NULL;
|
||||
switch (pDb->cfg.precision) {
|
||||
|
|
|
@ -15,10 +15,10 @@
|
|||
|
||||
#include "command.h"
|
||||
#include "catalog.h"
|
||||
#include "tdatablock.h"
|
||||
#include "tglobal.h"
|
||||
#include "commandInt.h"
|
||||
#include "scheduler.h"
|
||||
#include "tdatablock.h"
|
||||
#include "tglobal.h"
|
||||
|
||||
extern SConfig* tsCfg;
|
||||
|
||||
|
@ -222,7 +222,7 @@ static void setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbFName, S
|
|||
char* retentions = buildRetension(pCfg->pRetensions);
|
||||
|
||||
len += sprintf(buf2 + VARSTR_HEADER_SIZE,
|
||||
"CREATE DATABASE `%s` BUFFER %d CACHELAST %d COMP %d DURATION %dm "
|
||||
"CREATE DATABASE `%s` BUFFER %d CACHEMODEL %d COMP %d DURATION %dm "
|
||||
"FSYNC %d MAXROWS %d MINROWS %d KEEP %dm,%dm,%dm PAGES %d PAGESIZE %d PRECISION '%s' REPLICA %d "
|
||||
"STRICT %d WAL %d VGROUPS %d SINGLE_STABLE %d",
|
||||
dbFName, pCfg->buffer, pCfg->cacheLast, pCfg->compression, pCfg->daysPerFile, pCfg->fsyncPeriod,
|
||||
|
@ -483,7 +483,7 @@ static int32_t execShowCreateSTable(SShowCreateTableStmt* pStmt, SRetrieveTableR
|
|||
|
||||
static int32_t execAlterCmd(char* cmd, char* value, bool* processed) {
|
||||
int32_t code = 0;
|
||||
|
||||
|
||||
if (0 == strcasecmp(cmd, COMMAND_RESET_LOG)) {
|
||||
taosResetLog();
|
||||
cfgDumpCfg(tsCfg, 0, false);
|
||||
|
@ -502,13 +502,13 @@ _return:
|
|||
if (code) {
|
||||
terrno = code;
|
||||
}
|
||||
|
||||
return code;
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
static int32_t execAlterLocal(SAlterLocalStmt* pStmt) {
|
||||
bool processed = false;
|
||||
|
||||
|
||||
if (execAlterCmd(pStmt->config, pStmt->value, &processed)) {
|
||||
return terrno;
|
||||
}
|
||||
|
@ -516,7 +516,7 @@ static int32_t execAlterLocal(SAlterLocalStmt* pStmt) {
|
|||
if (processed) {
|
||||
goto _return;
|
||||
}
|
||||
|
||||
|
||||
if (cfgSetItem(tsCfg, pStmt->config, pStmt->value, CFG_STYPE_ALTER_CMD)) {
|
||||
return terrno;
|
||||
}
|
||||
|
|
|
@ -521,8 +521,9 @@ static SSDataBlock* doTableScan(SOperatorInfo* pOperator) {
|
|||
|
||||
int32_t code = tsdbReaderOpen(pInfo->readHandle.vnode, &pInfo->cond, tableList, (STsdbReader**)&pInfo->dataReader,
|
||||
GET_TASKID(pTaskInfo));
|
||||
if (code != 0) {
|
||||
// TODO
|
||||
if (code != TSDB_CODE_SUCCESS) {
|
||||
longjmp(pTaskInfo->env, code);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2723,6 +2723,9 @@ int32_t firstFunction(SqlFunctionCtx* pCtx) {
|
|||
|
||||
int32_t blockDataOrder = (startKey <= endKey) ? TSDB_ORDER_ASC : TSDB_ORDER_DESC;
|
||||
|
||||
// please ref. to the comment in lastRowFunction for the reason why disabling the opt version of last/first function.
|
||||
// we will use this opt implementation in an new version that is only available in scan subplan
|
||||
#if 0
|
||||
if (blockDataOrder == TSDB_ORDER_ASC) {
|
||||
// filter according to current result firstly
|
||||
if (pResInfo->numOfRes > 0) {
|
||||
|
@ -2770,6 +2773,22 @@ int32_t firstFunction(SqlFunctionCtx* pCtx) {
|
|||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
for (int32_t i = pInput->startRowIndex; i < pInput->startRowIndex + pInput->numOfRows; ++i) {
|
||||
if (pInputCol->hasNull && colDataIsNull(pInputCol, pInput->totalRows, i, pColAgg)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
numOfElems++;
|
||||
|
||||
char* data = colDataGetData(pInputCol, i);
|
||||
TSKEY cts = getRowPTs(pInput->pPTS, i);
|
||||
if (pResInfo->numOfRes == 0 || pInfo->ts > cts) {
|
||||
doSaveCurrentVal(pCtx, i, cts, pInputCol->info.type, data);
|
||||
pResInfo->numOfRes = 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
SET_VAL(pResInfo, numOfElems, 1);
|
||||
return TSDB_CODE_SUCCESS;
|
||||
|
@ -2801,6 +2820,8 @@ int32_t lastFunction(SqlFunctionCtx* pCtx) {
|
|||
|
||||
int32_t blockDataOrder = (startKey <= endKey) ? TSDB_ORDER_ASC : TSDB_ORDER_DESC;
|
||||
|
||||
// please ref. to the comment in lastRowFunction for the reason why disabling the opt version of last/first function.
|
||||
#if 0
|
||||
if (blockDataOrder == TSDB_ORDER_ASC) {
|
||||
for (int32_t i = pInput->numOfRows + pInput->startRowIndex - 1; i >= pInput->startRowIndex; --i) {
|
||||
if (pInputCol->hasNull && colDataIsNull(pInputCol, pInput->totalRows, i, pColAgg)) {
|
||||
|
@ -2833,6 +2854,22 @@ int32_t lastFunction(SqlFunctionCtx* pCtx) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
for (int32_t i = pInput->startRowIndex; i < pInput->numOfRows + pInput->startRowIndex; ++i) {
|
||||
if (pInputCol->hasNull && colDataIsNull(pInputCol, pInput->totalRows, i, pColAgg)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
numOfElems++;
|
||||
|
||||
char* data = colDataGetData(pInputCol, i);
|
||||
TSKEY cts = getRowPTs(pInput->pPTS, i);
|
||||
if (pResInfo->numOfRes == 0 || pInfo->ts < cts) {
|
||||
doSaveCurrentVal(pCtx, i, cts, type, data);
|
||||
pResInfo->numOfRes = 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
SET_VAL(pResInfo, numOfElems, 1);
|
||||
return TSDB_CODE_SUCCESS;
|
||||
|
@ -2988,6 +3025,9 @@ int32_t lastRowFunction(SqlFunctionCtx* pCtx) {
|
|||
|
||||
int32_t blockDataOrder = (startKey <= endKey) ? TSDB_ORDER_ASC : TSDB_ORDER_DESC;
|
||||
|
||||
#if 0
|
||||
// the optimized version only function if all tuples in one block are monotonious increasing or descreasing.
|
||||
// this is NOT always works if project operator exists in downstream.
|
||||
if (blockDataOrder == TSDB_ORDER_ASC) {
|
||||
for (int32_t i = pInput->numOfRows + pInput->startRowIndex - 1; i >= pInput->startRowIndex; --i) {
|
||||
char* data = colDataGetData(pInputCol, i);
|
||||
|
@ -2997,6 +3037,7 @@ int32_t lastRowFunction(SqlFunctionCtx* pCtx) {
|
|||
if (pResInfo->numOfRes == 0 || pInfo->ts < cts) {
|
||||
doSaveLastrow(pCtx, data, i, cts, pInfo);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
} else { // descending order
|
||||
|
@ -3011,7 +3052,19 @@ int32_t lastRowFunction(SqlFunctionCtx* pCtx) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
for (int32_t i = pInput->startRowIndex; i < pInput->numOfRows + pInput->startRowIndex; ++i) {
|
||||
char* data = colDataGetData(pInputCol, i);
|
||||
TSKEY cts = getRowPTs(pInput->pPTS, i);
|
||||
numOfElems++;
|
||||
|
||||
if (pResInfo->numOfRes == 0 || pInfo->ts < cts) {
|
||||
doSaveLastrow(pCtx, data, i, cts, pInfo);
|
||||
pResInfo->numOfRes = 1;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
SET_VAL(pResInfo, numOfElems, 1);
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
@ -5926,6 +5979,7 @@ int32_t cachedLastRowFunction(SqlFunctionCtx* pCtx) {
|
|||
TSKEY cts = getRowPTs(pInput->pPTS, i);
|
||||
if (pResInfo->numOfRes == 0 || pInfo->ts < cts) {
|
||||
doSaveLastrow(pCtx, data, i, cts, pInfo);
|
||||
pResInfo->numOfRes = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3663,7 +3663,7 @@ static int32_t jsonToDownstreamSourceNode(const SJson* pJson, void* pObj) {
|
|||
}
|
||||
|
||||
static const char* jkDatabaseOptionsBuffer = "Buffer";
|
||||
static const char* jkDatabaseOptionsCachelast = "Cachelast";
|
||||
static const char* jkDatabaseOptionsCacheModel = "CacheModel";
|
||||
static const char* jkDatabaseOptionsCompressionLevel = "CompressionLevel";
|
||||
static const char* jkDatabaseOptionsDaysPerFileNode = "DaysPerFileNode";
|
||||
static const char* jkDatabaseOptionsDaysPerFile = "DaysPerFile";
|
||||
|
@ -3687,7 +3687,7 @@ static int32_t databaseOptionsToJson(const void* pObj, SJson* pJson) {
|
|||
|
||||
int32_t code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsBuffer, pNode->buffer);
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCachelast, pNode->cacheLast);
|
||||
code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCacheModel, pNode->cacheModel);
|
||||
}
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCompressionLevel, pNode->compressionLevel);
|
||||
|
@ -3749,7 +3749,7 @@ static int32_t jsonToDatabaseOptions(const SJson* pJson, void* pObj) {
|
|||
|
||||
int32_t code = tjsonGetIntValue(pJson, jkDatabaseOptionsBuffer, &pNode->buffer);
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCachelast, &pNode->cacheLast);
|
||||
code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCacheModel, &pNode->cacheModel);
|
||||
}
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCompressionLevel, &pNode->compressionLevel);
|
||||
|
|
|
@ -38,8 +38,8 @@ typedef struct SAstCreateContext {
|
|||
|
||||
typedef enum EDatabaseOptionType {
|
||||
DB_OPTION_BUFFER = 1,
|
||||
DB_OPTION_CACHELAST,
|
||||
DB_OPTION_CACHELASTSIZE,
|
||||
DB_OPTION_CACHEMODEL,
|
||||
DB_OPTION_CACHESIZE,
|
||||
DB_OPTION_COMP,
|
||||
DB_OPTION_DAYS,
|
||||
DB_OPTION_FSYNC,
|
||||
|
|
|
@ -172,8 +172,8 @@ exists_opt(A) ::= .
|
|||
|
||||
db_options(A) ::= . { A = createDefaultDatabaseOptions(pCxt); }
|
||||
db_options(A) ::= db_options(B) BUFFER NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_BUFFER, &C); }
|
||||
db_options(A) ::= db_options(B) CACHELAST NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_CACHELAST, &C); }
|
||||
db_options(A) ::= db_options(B) CACHELASTSIZE NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_CACHELASTSIZE, &C); }
|
||||
db_options(A) ::= db_options(B) CACHEMODEL NK_STRING(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_CACHEMODEL, &C); }
|
||||
db_options(A) ::= db_options(B) CACHESIZE NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_CACHESIZE, &C); }
|
||||
db_options(A) ::= db_options(B) COMP NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_COMP, &C); }
|
||||
db_options(A) ::= db_options(B) DURATION NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_DAYS, &C); }
|
||||
db_options(A) ::= db_options(B) DURATION NK_VARIABLE(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_DAYS, &C); }
|
||||
|
@ -186,7 +186,7 @@ db_options(A) ::= db_options(B) PAGES NK_INTEGER(C).
|
|||
db_options(A) ::= db_options(B) PAGESIZE NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_PAGESIZE, &C); }
|
||||
db_options(A) ::= db_options(B) PRECISION NK_STRING(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_PRECISION, &C); }
|
||||
db_options(A) ::= db_options(B) REPLICA NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_REPLICA, &C); }
|
||||
db_options(A) ::= db_options(B) STRICT NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_STRICT, &C); }
|
||||
db_options(A) ::= db_options(B) STRICT NK_STRING(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_STRICT, &C); }
|
||||
db_options(A) ::= db_options(B) WAL NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_WAL, &C); }
|
||||
db_options(A) ::= db_options(B) VGROUPS NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_VGROUPS, &C); }
|
||||
db_options(A) ::= db_options(B) SINGLE_STABLE NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_SINGLE_STABLE, &C); }
|
||||
|
@ -199,8 +199,8 @@ alter_db_options(A) ::= alter_db_options(B) alter_db_option(C).
|
|||
%type alter_db_option { SAlterOption }
|
||||
%destructor alter_db_option { }
|
||||
alter_db_option(A) ::= BUFFER NK_INTEGER(B). { A.type = DB_OPTION_BUFFER; A.val = B; }
|
||||
alter_db_option(A) ::= CACHELAST NK_INTEGER(B). { A.type = DB_OPTION_CACHELAST; A.val = B; }
|
||||
alter_db_option(A) ::= CACHELASTSIZE NK_INTEGER(B). { A.type = DB_OPTION_CACHELASTSIZE; A.val = B; }
|
||||
alter_db_option(A) ::= CACHEMODEL NK_STRING(B). { A.type = DB_OPTION_CACHEMODEL; A.val = B; }
|
||||
alter_db_option(A) ::= CACHESIZE NK_INTEGER(B). { A.type = DB_OPTION_CACHESIZE; A.val = B; }
|
||||
alter_db_option(A) ::= FSYNC NK_INTEGER(B). { A.type = DB_OPTION_FSYNC; A.val = B; }
|
||||
alter_db_option(A) ::= KEEP integer_list(B). { A.type = DB_OPTION_KEEP; A.pList = B; }
|
||||
alter_db_option(A) ::= KEEP variable_list(B). { A.type = DB_OPTION_KEEP; A.pList = B; }
|
||||
|
|
|
@ -760,8 +760,8 @@ SNode* createDefaultDatabaseOptions(SAstCreateContext* pCxt) {
|
|||
SDatabaseOptions* pOptions = (SDatabaseOptions*)nodesMakeNode(QUERY_NODE_DATABASE_OPTIONS);
|
||||
CHECK_OUT_OF_MEM(pOptions);
|
||||
pOptions->buffer = TSDB_DEFAULT_BUFFER_PER_VNODE;
|
||||
pOptions->cacheLast = TSDB_DEFAULT_CACHE_LAST;
|
||||
pOptions->cacheLastSize = TSDB_DEFAULT_CACHE_LAST_SIZE;
|
||||
pOptions->cacheModel = TSDB_DEFAULT_CACHE_MODEL;
|
||||
pOptions->cacheLastSize = TSDB_DEFAULT_CACHE_SIZE;
|
||||
pOptions->compressionLevel = TSDB_DEFAULT_COMP_LEVEL;
|
||||
pOptions->daysPerFile = TSDB_DEFAULT_DAYS_PER_FILE;
|
||||
pOptions->fsyncPeriod = TSDB_DEFAULT_FSYNC_PERIOD;
|
||||
|
@ -787,7 +787,7 @@ SNode* createAlterDatabaseOptions(SAstCreateContext* pCxt) {
|
|||
SDatabaseOptions* pOptions = (SDatabaseOptions*)nodesMakeNode(QUERY_NODE_DATABASE_OPTIONS);
|
||||
CHECK_OUT_OF_MEM(pOptions);
|
||||
pOptions->buffer = -1;
|
||||
pOptions->cacheLast = -1;
|
||||
pOptions->cacheModel = -1;
|
||||
pOptions->cacheLastSize = -1;
|
||||
pOptions->compressionLevel = -1;
|
||||
pOptions->daysPerFile = -1;
|
||||
|
@ -815,10 +815,10 @@ SNode* setDatabaseOption(SAstCreateContext* pCxt, SNode* pOptions, EDatabaseOpti
|
|||
case DB_OPTION_BUFFER:
|
||||
((SDatabaseOptions*)pOptions)->buffer = taosStr2Int32(((SToken*)pVal)->z, NULL, 10);
|
||||
break;
|
||||
case DB_OPTION_CACHELAST:
|
||||
((SDatabaseOptions*)pOptions)->cacheLast = taosStr2Int8(((SToken*)pVal)->z, NULL, 10);
|
||||
case DB_OPTION_CACHEMODEL:
|
||||
COPY_STRING_FORM_STR_TOKEN(((SDatabaseOptions*)pOptions)->cacheModelStr, (SToken*)pVal);
|
||||
break;
|
||||
case DB_OPTION_CACHELASTSIZE:
|
||||
case DB_OPTION_CACHESIZE:
|
||||
((SDatabaseOptions*)pOptions)->cacheLastSize = taosStr2Int32(((SToken*)pVal)->z, NULL, 10);
|
||||
break;
|
||||
case DB_OPTION_COMP:
|
||||
|
@ -858,7 +858,7 @@ SNode* setDatabaseOption(SAstCreateContext* pCxt, SNode* pOptions, EDatabaseOpti
|
|||
((SDatabaseOptions*)pOptions)->replica = taosStr2Int8(((SToken*)pVal)->z, NULL, 10);
|
||||
break;
|
||||
case DB_OPTION_STRICT:
|
||||
((SDatabaseOptions*)pOptions)->strict = taosStr2Int8(((SToken*)pVal)->z, NULL, 10);
|
||||
COPY_STRING_FORM_STR_TOKEN(((SDatabaseOptions*)pOptions)->strictStr, (SToken*)pVal);
|
||||
break;
|
||||
case DB_OPTION_WAL:
|
||||
((SDatabaseOptions*)pOptions)->walLevel = taosStr2Int8(((SToken*)pVal)->z, NULL, 10);
|
||||
|
@ -872,10 +872,6 @@ SNode* setDatabaseOption(SAstCreateContext* pCxt, SNode* pOptions, EDatabaseOpti
|
|||
case DB_OPTION_RETENTIONS:
|
||||
((SDatabaseOptions*)pOptions)->pRetentions = pVal;
|
||||
break;
|
||||
// case DB_OPTION_SCHEMALESS:
|
||||
// ((SDatabaseOptions*)pOptions)->schemaless = taosStr2Int8(((SToken*)pVal)->z, NULL, 10);
|
||||
// ((SDatabaseOptions*)pOptions)->schemaless = 0;
|
||||
// break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -52,8 +52,8 @@ static SKeyword keywordTable[] = {
|
|||
{"BUFSIZE", TK_BUFSIZE},
|
||||
{"BY", TK_BY},
|
||||
{"CACHE", TK_CACHE},
|
||||
{"CACHELAST", TK_CACHELAST},
|
||||
{"CACHELASTSIZE", TK_CACHELASTSIZE},
|
||||
{"CACHEMODEL", TK_CACHEMODEL},
|
||||
{"CACHESIZE", TK_CACHESIZE},
|
||||
{"CAST", TK_CAST},
|
||||
{"CLIENT_VERSION", TK_CLIENT_VERSION},
|
||||
{"CLUSTER", TK_CLUSTER},
|
||||
|
|
|
@ -2942,7 +2942,7 @@ static int32_t buildCreateDbReq(STranslateContext* pCxt, SCreateDatabaseStmt* pS
|
|||
pReq->compression = pStmt->pOptions->compressionLevel;
|
||||
pReq->replications = pStmt->pOptions->replica;
|
||||
pReq->strict = pStmt->pOptions->strict;
|
||||
pReq->cacheLast = pStmt->pOptions->cacheLast;
|
||||
pReq->cacheLast = pStmt->pOptions->cacheModel;
|
||||
pReq->cacheLastSize = pStmt->pOptions->cacheLastSize;
|
||||
pReq->schemaless = pStmt->pOptions->schemaless;
|
||||
pReq->ignoreExist = pStmt->ignoreExists;
|
||||
|
@ -3023,13 +3023,31 @@ static int32_t checkDbKeepOption(STranslateContext* pCxt, SDatabaseOptions* pOpt
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static int32_t checkDbCacheModelOption(STranslateContext* pCxt, SDatabaseOptions* pOptions) {
|
||||
if ('\0' != pOptions->cacheModelStr[0]) {
|
||||
if (0 == strcasecmp(pOptions->cacheModelStr, TSDB_CACHE_MODEL_NONE_STR)) {
|
||||
pOptions->cacheModel = TSDB_CACHE_MODEL_NONE;
|
||||
} else if (0 == strcasecmp(pOptions->cacheModelStr, TSDB_CACHE_MODEL_LAST_ROW_STR)) {
|
||||
pOptions->cacheModel = TSDB_CACHE_MODEL_LAST_ROW;
|
||||
} else if (0 == strcasecmp(pOptions->cacheModelStr, TSDB_CACHE_MODEL_LAST_VALUE_STR)) {
|
||||
pOptions->cacheModel = TSDB_CACHE_MODEL_LAST_VALUE;
|
||||
} else if (0 == strcasecmp(pOptions->cacheModelStr, TSDB_CACHE_MODEL_BOTH_STR)) {
|
||||
pOptions->cacheModel = TSDB_CACHE_MODEL_BOTH;
|
||||
} else {
|
||||
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STR_OPTION, "cacheModel",
|
||||
pOptions->cacheModelStr);
|
||||
}
|
||||
}
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static int32_t checkDbPrecisionOption(STranslateContext* pCxt, SDatabaseOptions* pOptions) {
|
||||
if ('\0' != pOptions->precisionStr[0]) {
|
||||
if (0 == strcmp(pOptions->precisionStr, TSDB_TIME_PRECISION_MILLI_STR)) {
|
||||
if (0 == strcasecmp(pOptions->precisionStr, TSDB_TIME_PRECISION_MILLI_STR)) {
|
||||
pOptions->precision = TSDB_TIME_PRECISION_MILLI;
|
||||
} else if (0 == strcmp(pOptions->precisionStr, TSDB_TIME_PRECISION_MICRO_STR)) {
|
||||
} else if (0 == strcasecmp(pOptions->precisionStr, TSDB_TIME_PRECISION_MICRO_STR)) {
|
||||
pOptions->precision = TSDB_TIME_PRECISION_MICRO;
|
||||
} else if (0 == strcmp(pOptions->precisionStr, TSDB_TIME_PRECISION_NANO_STR)) {
|
||||
} else if (0 == strcasecmp(pOptions->precisionStr, TSDB_TIME_PRECISION_NANO_STR)) {
|
||||
pOptions->precision = TSDB_TIME_PRECISION_NANO;
|
||||
} else {
|
||||
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STR_OPTION, "precision", pOptions->precisionStr);
|
||||
|
@ -3038,6 +3056,19 @@ static int32_t checkDbPrecisionOption(STranslateContext* pCxt, SDatabaseOptions*
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static int32_t checkDbStrictOption(STranslateContext* pCxt, SDatabaseOptions* pOptions) {
|
||||
if ('\0' != pOptions->strictStr[0]) {
|
||||
if (0 == strcasecmp(pOptions->strictStr, TSDB_DB_STRICT_OFF_STR)) {
|
||||
pOptions->strict = TSDB_DB_STRICT_OFF;
|
||||
} else if (0 == strcasecmp(pOptions->strictStr, TSDB_DB_STRICT_ON_STR)) {
|
||||
pOptions->strict = TSDB_DB_STRICT_ON;
|
||||
} else {
|
||||
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STR_OPTION, "strict", pOptions->strictStr);
|
||||
}
|
||||
}
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static int32_t checkDbEnumOption(STranslateContext* pCxt, const char* pName, int32_t val, int32_t v1, int32_t v2) {
|
||||
if (val >= 0 && val != v1 && val != v2) {
|
||||
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_ENUM_OPTION, pName, val, v1, v2);
|
||||
|
@ -3104,11 +3135,10 @@ static int32_t checkDatabaseOptions(STranslateContext* pCxt, const char* pDbName
|
|||
int32_t code =
|
||||
checkRangeOption(pCxt, "buffer", pOptions->buffer, TSDB_MIN_BUFFER_PER_VNODE, TSDB_MAX_BUFFER_PER_VNODE);
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = checkRangeOption(pCxt, "cacheLast", pOptions->cacheLast, TSDB_MIN_DB_CACHE_LAST, TSDB_MAX_DB_CACHE_LAST);
|
||||
code = checkDbCacheModelOption(pCxt, pOptions);
|
||||
}
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = checkRangeOption(pCxt, "cacheLastSize", pOptions->cacheLastSize, TSDB_MIN_DB_CACHE_LAST_SIZE,
|
||||
TSDB_MAX_DB_CACHE_LAST_SIZE);
|
||||
code = checkRangeOption(pCxt, "cacheSize", pOptions->cacheLastSize, TSDB_MIN_DB_CACHE_SIZE, TSDB_MAX_DB_CACHE_SIZE);
|
||||
}
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = checkRangeOption(pCxt, "compression", pOptions->compressionLevel, TSDB_MIN_COMP_LEVEL, TSDB_MAX_COMP_LEVEL);
|
||||
|
@ -3144,7 +3174,7 @@ static int32_t checkDatabaseOptions(STranslateContext* pCxt, const char* pDbName
|
|||
code = checkDbEnumOption(pCxt, "replications", pOptions->replica, TSDB_MIN_DB_REPLICA, TSDB_MAX_DB_REPLICA);
|
||||
}
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = checkDbEnumOption(pCxt, "strict", pOptions->strict, TSDB_DB_STRICT_OFF, TSDB_DB_STRICT_ON);
|
||||
code = checkDbStrictOption(pCxt, pOptions);
|
||||
}
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = checkDbEnumOption(pCxt, "walLevel", pOptions->walLevel, TSDB_MIN_WAL_LEVEL, TSDB_MAX_WAL_LEVEL);
|
||||
|
@ -3229,7 +3259,7 @@ static void buildAlterDbReq(STranslateContext* pCxt, SAlterDatabaseStmt* pStmt,
|
|||
pReq->fsyncPeriod = pStmt->pOptions->fsyncPeriod;
|
||||
pReq->walLevel = pStmt->pOptions->walLevel;
|
||||
pReq->strict = pStmt->pOptions->strict;
|
||||
pReq->cacheLast = pStmt->pOptions->cacheLast;
|
||||
pReq->cacheLast = pStmt->pOptions->cacheModel;
|
||||
pReq->cacheLastSize = pStmt->pOptions->cacheLastSize;
|
||||
pReq->replications = pStmt->pOptions->replica;
|
||||
return;
|
||||
|
|
|
@ -384,32 +384,32 @@ static const YYACTIONTYPE yy_action[] = {
|
|||
/* 1630 */ 464, 1792, 468, 467, 1512, 469, 1511, 1496, 1587, 1824,
|
||||
/* 1640 */ 1154, 50, 196, 295, 1793, 586, 1795, 1796, 582, 1824,
|
||||
/* 1650 */ 577, 1153, 1586, 290, 1793, 586, 1795, 1796, 582, 1810,
|
||||
/* 1660 */ 577, 1079, 632, 1078, 634, 1077, 1076, 584, 1073, 1521,
|
||||
/* 1670 */ 1072, 319, 1761, 320, 583, 1071, 1070, 1516, 1514, 321,
|
||||
/* 1680 */ 496, 1792, 1495, 498, 1494, 500, 1493, 502, 493, 1732,
|
||||
/* 1690 */ 94, 551, 15, 1792, 1237, 1726, 140, 509, 1713, 1824,
|
||||
/* 1700 */ 1711, 1712, 1710, 146, 1793, 586, 1795, 1796, 582, 1810,
|
||||
/* 1710 */ 577, 1709, 1707, 56, 1699, 1247, 229, 581, 510, 227,
|
||||
/* 1720 */ 214, 1810, 1761, 16, 583, 232, 339, 225, 322, 584,
|
||||
/* 1730 */ 219, 78, 515, 41, 1761, 17, 583, 47, 79, 23,
|
||||
/* 1740 */ 524, 1437, 84, 234, 13, 243, 236, 1419, 1951, 1824,
|
||||
/* 1660 */ 577, 1079, 632, 1078, 634, 1077, 1076, 584, 1073, 1071,
|
||||
/* 1670 */ 1072, 1521, 1761, 319, 583, 1070, 1516, 320, 1514, 321,
|
||||
/* 1680 */ 496, 1792, 1495, 498, 1494, 500, 1493, 502, 493, 94,
|
||||
/* 1690 */ 1732, 551, 509, 1792, 1237, 1726, 140, 1713, 1711, 1824,
|
||||
/* 1700 */ 1712, 1710, 1709, 146, 1793, 586, 1795, 1796, 582, 1810,
|
||||
/* 1710 */ 577, 1247, 1707, 56, 1699, 41, 227, 581, 510, 84,
|
||||
/* 1720 */ 214, 1810, 1761, 16, 583, 232, 339, 15, 322, 584,
|
||||
/* 1730 */ 219, 225, 515, 243, 1761, 1437, 583, 47, 78, 79,
|
||||
/* 1740 */ 524, 23, 242, 229, 236, 234, 25, 1419, 1951, 1824,
|
||||
/* 1750 */ 1421, 238, 147, 294, 1793, 586, 1795, 1796, 582, 241,
|
||||
/* 1760 */ 577, 1824, 1843, 242, 1782, 295, 1793, 586, 1795, 1796,
|
||||
/* 1770 */ 582, 1792, 577, 24, 25, 252, 46, 1414, 83, 18,
|
||||
/* 1780 */ 1781, 1792, 1394, 1393, 151, 1449, 1448, 333, 1453, 1454,
|
||||
/* 1790 */ 1443, 1452, 334, 10, 1280, 1356, 1331, 45, 19, 1810,
|
||||
/* 1800 */ 1827, 576, 1311, 1329, 341, 1328, 31, 584, 152, 1810,
|
||||
/* 1810 */ 12, 20, 1761, 165, 583, 21, 589, 584, 585, 587,
|
||||
/* 1820 */ 342, 1140, 1761, 1137, 583, 591, 594, 593, 1134, 596,
|
||||
/* 1830 */ 597, 1792, 1128, 599, 600, 602, 1132, 1131, 1117, 1824,
|
||||
/* 1840 */ 609, 1792, 1149, 295, 1793, 586, 1795, 1796, 582, 1824,
|
||||
/* 1850 */ 577, 1792, 1126, 281, 1793, 586, 1795, 1796, 582, 1810,
|
||||
/* 1860 */ 577, 603, 85, 86, 62, 263, 1145, 584, 1130, 1810,
|
||||
/* 1870 */ 1129, 1042, 1761, 618, 583, 264, 1067, 584, 1086, 1810,
|
||||
/* 1880 */ 621, 1065, 1761, 1064, 583, 1063, 1062, 584, 1061, 1060,
|
||||
/* 1890 */ 1059, 1058, 1761, 1083, 583, 1081, 1055, 1054, 1053, 1824,
|
||||
/* 1900 */ 1050, 1049, 1528, 282, 1793, 586, 1795, 1796, 582, 1824,
|
||||
/* 1910 */ 577, 1048, 1047, 289, 1793, 586, 1795, 1796, 582, 1824,
|
||||
/* 1760 */ 577, 1824, 1843, 1782, 17, 295, 1793, 586, 1795, 1796,
|
||||
/* 1770 */ 582, 1792, 577, 24, 252, 1414, 83, 46, 1781, 1394,
|
||||
/* 1780 */ 1449, 1792, 1393, 151, 18, 1448, 333, 1453, 1452, 10,
|
||||
/* 1790 */ 1454, 45, 1443, 334, 1280, 1356, 1827, 1311, 19, 1810,
|
||||
/* 1800 */ 589, 1331, 1329, 13, 341, 576, 31, 584, 1328, 1810,
|
||||
/* 1810 */ 152, 12, 1761, 165, 583, 20, 21, 584, 585, 587,
|
||||
/* 1820 */ 342, 1140, 1761, 591, 583, 1137, 593, 594, 596, 1134,
|
||||
/* 1830 */ 1128, 1792, 597, 599, 600, 602, 1132, 1117, 1131, 1824,
|
||||
/* 1840 */ 1149, 1792, 1126, 295, 1793, 586, 1795, 1796, 582, 1824,
|
||||
/* 1850 */ 577, 1792, 263, 281, 1793, 586, 1795, 1796, 582, 1810,
|
||||
/* 1860 */ 577, 603, 85, 609, 86, 62, 1130, 584, 1129, 1810,
|
||||
/* 1870 */ 1145, 618, 1761, 1042, 583, 1086, 1067, 584, 621, 1810,
|
||||
/* 1880 */ 264, 1065, 1761, 1062, 583, 1064, 1063, 584, 1061, 1060,
|
||||
/* 1890 */ 1059, 1058, 1761, 1083, 583, 1081, 1048, 1055, 1054, 1824,
|
||||
/* 1900 */ 1053, 1050, 1528, 282, 1793, 586, 1795, 1796, 582, 1824,
|
||||
/* 1910 */ 577, 1049, 1047, 289, 1793, 586, 1795, 1796, 582, 1824,
|
||||
/* 1920 */ 577, 643, 644, 291, 1793, 586, 1795, 1796, 582, 645,
|
||||
/* 1930 */ 577, 1526, 1792, 647, 648, 649, 1524, 1522, 651, 652,
|
||||
/* 1940 */ 653, 655, 656, 657, 1510, 659, 1004, 1492, 267, 663,
|
||||
|
@ -641,30 +641,30 @@ static const YYCODETYPE yy_lookahead[] = {
|
|||
/* 1630 */ 47, 259, 47, 35, 0, 39, 0, 0, 0, 327,
|
||||
/* 1640 */ 35, 94, 92, 331, 332, 333, 334, 335, 336, 327,
|
||||
/* 1650 */ 338, 22, 0, 331, 332, 333, 334, 335, 336, 287,
|
||||
/* 1660 */ 338, 35, 43, 35, 43, 35, 35, 295, 35, 0,
|
||||
/* 1670 */ 35, 22, 300, 22, 302, 35, 35, 0, 0, 22,
|
||||
/* 1680 */ 35, 259, 0, 35, 0, 35, 0, 22, 49, 0,
|
||||
/* 1690 */ 20, 369, 85, 259, 35, 0, 172, 22, 0, 327,
|
||||
/* 1660 */ 338, 35, 43, 35, 43, 35, 35, 295, 35, 22,
|
||||
/* 1670 */ 35, 0, 300, 22, 302, 35, 0, 22, 0, 22,
|
||||
/* 1680 */ 35, 259, 0, 35, 0, 35, 0, 22, 49, 20,
|
||||
/* 1690 */ 0, 369, 22, 259, 35, 0, 172, 0, 0, 327,
|
||||
/* 1700 */ 0, 0, 0, 331, 332, 333, 334, 335, 336, 287,
|
||||
/* 1710 */ 338, 0, 0, 153, 0, 181, 149, 295, 153, 39,
|
||||
/* 1710 */ 338, 181, 0, 153, 0, 43, 39, 295, 153, 95,
|
||||
/* 1720 */ 150, 287, 300, 230, 302, 46, 292, 85, 153, 295,
|
||||
/* 1730 */ 86, 85, 155, 43, 300, 230, 302, 43, 85, 85,
|
||||
/* 1740 */ 151, 86, 95, 85, 230, 46, 86, 86, 376, 327,
|
||||
/* 1730 */ 86, 85, 155, 46, 300, 86, 302, 43, 85, 85,
|
||||
/* 1740 */ 151, 85, 43, 149, 86, 85, 43, 86, 376, 327,
|
||||
/* 1750 */ 86, 85, 85, 331, 332, 333, 334, 335, 336, 85,
|
||||
/* 1760 */ 338, 327, 340, 43, 46, 331, 332, 333, 334, 335,
|
||||
/* 1770 */ 336, 259, 338, 85, 43, 46, 43, 86, 85, 43,
|
||||
/* 1780 */ 46, 259, 86, 86, 46, 35, 35, 35, 35, 86,
|
||||
/* 1790 */ 86, 35, 35, 2, 22, 193, 86, 224, 43, 287,
|
||||
/* 1800 */ 85, 85, 22, 86, 292, 86, 85, 295, 46, 287,
|
||||
/* 1810 */ 85, 85, 300, 46, 302, 85, 35, 295, 195, 96,
|
||||
/* 1820 */ 35, 86, 300, 86, 302, 85, 85, 35, 86, 35,
|
||||
/* 1830 */ 85, 259, 86, 35, 85, 35, 109, 109, 22, 327,
|
||||
/* 1840 */ 97, 259, 35, 331, 332, 333, 334, 335, 336, 327,
|
||||
/* 1850 */ 338, 259, 86, 331, 332, 333, 334, 335, 336, 287,
|
||||
/* 1860 */ 338, 85, 85, 85, 85, 43, 22, 295, 109, 287,
|
||||
/* 1870 */ 109, 62, 300, 61, 302, 43, 35, 295, 68, 287,
|
||||
/* 1880 */ 83, 35, 300, 35, 302, 35, 35, 295, 35, 22,
|
||||
/* 1890 */ 35, 35, 300, 68, 302, 35, 35, 35, 35, 327,
|
||||
/* 1760 */ 338, 327, 340, 46, 230, 331, 332, 333, 334, 335,
|
||||
/* 1770 */ 336, 259, 338, 85, 46, 86, 85, 43, 46, 86,
|
||||
/* 1780 */ 35, 259, 86, 46, 43, 35, 35, 35, 35, 2,
|
||||
/* 1790 */ 86, 224, 86, 35, 22, 193, 85, 22, 43, 287,
|
||||
/* 1800 */ 35, 86, 86, 230, 292, 85, 85, 295, 86, 287,
|
||||
/* 1810 */ 46, 85, 300, 46, 302, 85, 85, 295, 195, 96,
|
||||
/* 1820 */ 35, 86, 300, 85, 302, 86, 35, 85, 35, 86,
|
||||
/* 1830 */ 86, 259, 85, 35, 85, 35, 109, 22, 109, 327,
|
||||
/* 1840 */ 35, 259, 86, 331, 332, 333, 334, 335, 336, 327,
|
||||
/* 1850 */ 338, 259, 43, 331, 332, 333, 334, 335, 336, 287,
|
||||
/* 1860 */ 338, 85, 85, 97, 85, 85, 109, 295, 109, 287,
|
||||
/* 1870 */ 22, 61, 300, 62, 302, 68, 35, 295, 83, 287,
|
||||
/* 1880 */ 43, 35, 300, 22, 302, 35, 35, 295, 35, 22,
|
||||
/* 1890 */ 35, 35, 300, 68, 302, 35, 22, 35, 35, 327,
|
||||
/* 1900 */ 35, 35, 0, 331, 332, 333, 334, 335, 336, 327,
|
||||
/* 1910 */ 338, 35, 35, 331, 332, 333, 334, 335, 336, 327,
|
||||
/* 1920 */ 338, 35, 47, 331, 332, 333, 334, 335, 336, 39,
|
||||
|
@ -783,23 +783,23 @@ static const unsigned short int yy_shift_ofst[] = {
|
|||
/* 450 */ 1603, 1606, 1608, 1553, 1611, 1613, 1581, 1571, 1580, 1620,
|
||||
/* 460 */ 1586, 1576, 1587, 1625, 1593, 1583, 1590, 1627, 1598, 1585,
|
||||
/* 470 */ 1596, 1634, 1636, 1637, 1638, 1547, 1550, 1605, 1629, 1652,
|
||||
/* 480 */ 1626, 1628, 1630, 1631, 1619, 1621, 1633, 1635, 1640, 1641,
|
||||
/* 490 */ 1669, 1649, 1677, 1651, 1639, 1678, 1657, 1645, 1682, 1648,
|
||||
/* 500 */ 1684, 1650, 1686, 1665, 1670, 1689, 1560, 1659, 1695, 1524,
|
||||
/* 510 */ 1675, 1565, 1570, 1698, 1700, 1575, 1577, 1701, 1702, 1711,
|
||||
/* 520 */ 1607, 1644, 1534, 1712, 1642, 1589, 1646, 1714, 1680, 1567,
|
||||
/* 530 */ 1653, 1647, 1679, 1690, 1493, 1654, 1655, 1658, 1660, 1661,
|
||||
/* 540 */ 1666, 1694, 1664, 1667, 1674, 1688, 1691, 1720, 1699, 1718,
|
||||
/* 550 */ 1693, 1731, 1505, 1696, 1697, 1729, 1573, 1733, 1734, 1738,
|
||||
/* 560 */ 1703, 1736, 1514, 1704, 1750, 1751, 1752, 1753, 1756, 1757,
|
||||
/* 570 */ 1704, 1791, 1772, 1602, 1755, 1715, 1710, 1716, 1717, 1721,
|
||||
/* 580 */ 1719, 1762, 1725, 1726, 1767, 1780, 1623, 1730, 1723, 1735,
|
||||
/* 590 */ 1781, 1785, 1740, 1737, 1792, 1741, 1742, 1794, 1745, 1746,
|
||||
/* 600 */ 1798, 1749, 1766, 1800, 1776, 1727, 1728, 1759, 1761, 1816,
|
||||
/* 610 */ 1743, 1777, 1778, 1807, 1779, 1822, 1822, 1844, 1809, 1812,
|
||||
/* 620 */ 1841, 1810, 1797, 1832, 1846, 1848, 1850, 1851, 1853, 1867,
|
||||
/* 630 */ 1855, 1856, 1825, 1619, 1860, 1621, 1861, 1862, 1863, 1865,
|
||||
/* 640 */ 1866, 1876, 1877, 1902, 1886, 1875, 1890, 1931, 1898, 1887,
|
||||
/* 480 */ 1626, 1628, 1630, 1631, 1619, 1621, 1633, 1635, 1647, 1640,
|
||||
/* 490 */ 1671, 1651, 1676, 1655, 1639, 1678, 1657, 1645, 1682, 1648,
|
||||
/* 500 */ 1684, 1650, 1686, 1665, 1669, 1690, 1560, 1659, 1695, 1524,
|
||||
/* 510 */ 1670, 1565, 1570, 1697, 1698, 1575, 1577, 1700, 1701, 1702,
|
||||
/* 520 */ 1642, 1644, 1530, 1712, 1646, 1589, 1653, 1714, 1677, 1594,
|
||||
/* 530 */ 1654, 1624, 1679, 1672, 1493, 1656, 1649, 1660, 1658, 1661,
|
||||
/* 540 */ 1666, 1694, 1664, 1667, 1674, 1688, 1689, 1699, 1687, 1717,
|
||||
/* 550 */ 1691, 1703, 1534, 1693, 1696, 1728, 1567, 1734, 1732, 1737,
|
||||
/* 560 */ 1704, 1741, 1573, 1706, 1745, 1750, 1751, 1752, 1753, 1758,
|
||||
/* 570 */ 1706, 1787, 1772, 1602, 1755, 1711, 1715, 1720, 1716, 1721,
|
||||
/* 580 */ 1722, 1764, 1726, 1730, 1767, 1775, 1623, 1731, 1723, 1735,
|
||||
/* 590 */ 1765, 1785, 1738, 1739, 1791, 1742, 1743, 1793, 1747, 1744,
|
||||
/* 600 */ 1798, 1749, 1756, 1800, 1776, 1727, 1729, 1757, 1759, 1815,
|
||||
/* 610 */ 1766, 1777, 1779, 1805, 1780, 1809, 1809, 1848, 1811, 1810,
|
||||
/* 620 */ 1841, 1807, 1795, 1837, 1846, 1850, 1851, 1861, 1853, 1867,
|
||||
/* 630 */ 1855, 1856, 1825, 1619, 1860, 1621, 1862, 1863, 1865, 1866,
|
||||
/* 640 */ 1876, 1874, 1877, 1902, 1886, 1875, 1890, 1931, 1898, 1887,
|
||||
/* 650 */ 1896, 1936, 1903, 1892, 1901, 1937, 1906, 1895, 1904, 1944,
|
||||
/* 660 */ 1910, 1911, 1947, 1926, 1928, 1930, 1932, 1929, 1933,
|
||||
};
|
||||
|
@ -987,8 +987,8 @@ static const YYCODETYPE yyFallback[] = {
|
|||
0, /* NOT => nothing */
|
||||
0, /* EXISTS => nothing */
|
||||
0, /* BUFFER => nothing */
|
||||
0, /* CACHELAST => nothing */
|
||||
0, /* CACHELASTSIZE => nothing */
|
||||
0, /* CACHEMODEL => nothing */
|
||||
0, /* CACHESIZE => nothing */
|
||||
0, /* COMP => nothing */
|
||||
0, /* DURATION => nothing */
|
||||
0, /* NK_VARIABLE => nothing */
|
||||
|
@ -1330,8 +1330,8 @@ static const char *const yyTokenName[] = {
|
|||
/* 61 */ "NOT",
|
||||
/* 62 */ "EXISTS",
|
||||
/* 63 */ "BUFFER",
|
||||
/* 64 */ "CACHELAST",
|
||||
/* 65 */ "CACHELASTSIZE",
|
||||
/* 64 */ "CACHEMODEL",
|
||||
/* 65 */ "CACHESIZE",
|
||||
/* 66 */ "COMP",
|
||||
/* 67 */ "DURATION",
|
||||
/* 68 */ "NK_VARIABLE",
|
||||
|
@ -1726,8 +1726,8 @@ static const char *const yyRuleName[] = {
|
|||
/* 71 */ "exists_opt ::=",
|
||||
/* 72 */ "db_options ::=",
|
||||
/* 73 */ "db_options ::= db_options BUFFER NK_INTEGER",
|
||||
/* 74 */ "db_options ::= db_options CACHELAST NK_INTEGER",
|
||||
/* 75 */ "db_options ::= db_options CACHELASTSIZE NK_INTEGER",
|
||||
/* 74 */ "db_options ::= db_options CACHEMODEL NK_STRING",
|
||||
/* 75 */ "db_options ::= db_options CACHESIZE NK_INTEGER",
|
||||
/* 76 */ "db_options ::= db_options COMP NK_INTEGER",
|
||||
/* 77 */ "db_options ::= db_options DURATION NK_INTEGER",
|
||||
/* 78 */ "db_options ::= db_options DURATION NK_VARIABLE",
|
||||
|
@ -1740,7 +1740,7 @@ static const char *const yyRuleName[] = {
|
|||
/* 85 */ "db_options ::= db_options PAGESIZE NK_INTEGER",
|
||||
/* 86 */ "db_options ::= db_options PRECISION NK_STRING",
|
||||
/* 87 */ "db_options ::= db_options REPLICA NK_INTEGER",
|
||||
/* 88 */ "db_options ::= db_options STRICT NK_INTEGER",
|
||||
/* 88 */ "db_options ::= db_options STRICT NK_STRING",
|
||||
/* 89 */ "db_options ::= db_options WAL NK_INTEGER",
|
||||
/* 90 */ "db_options ::= db_options VGROUPS NK_INTEGER",
|
||||
/* 91 */ "db_options ::= db_options SINGLE_STABLE NK_INTEGER",
|
||||
|
@ -1749,8 +1749,8 @@ static const char *const yyRuleName[] = {
|
|||
/* 94 */ "alter_db_options ::= alter_db_option",
|
||||
/* 95 */ "alter_db_options ::= alter_db_options alter_db_option",
|
||||
/* 96 */ "alter_db_option ::= BUFFER NK_INTEGER",
|
||||
/* 97 */ "alter_db_option ::= CACHELAST NK_INTEGER",
|
||||
/* 98 */ "alter_db_option ::= CACHELASTSIZE NK_INTEGER",
|
||||
/* 97 */ "alter_db_option ::= CACHEMODEL NK_STRING",
|
||||
/* 98 */ "alter_db_option ::= CACHESIZE NK_INTEGER",
|
||||
/* 99 */ "alter_db_option ::= FSYNC NK_INTEGER",
|
||||
/* 100 */ "alter_db_option ::= KEEP integer_list",
|
||||
/* 101 */ "alter_db_option ::= KEEP variable_list",
|
||||
|
@ -2816,8 +2816,8 @@ static const struct {
|
|||
{ 271, 0 }, /* (71) exists_opt ::= */
|
||||
{ 270, 0 }, /* (72) db_options ::= */
|
||||
{ 270, -3 }, /* (73) db_options ::= db_options BUFFER NK_INTEGER */
|
||||
{ 270, -3 }, /* (74) db_options ::= db_options CACHELAST NK_INTEGER */
|
||||
{ 270, -3 }, /* (75) db_options ::= db_options CACHELASTSIZE NK_INTEGER */
|
||||
{ 270, -3 }, /* (74) db_options ::= db_options CACHEMODEL NK_STRING */
|
||||
{ 270, -3 }, /* (75) db_options ::= db_options CACHESIZE NK_INTEGER */
|
||||
{ 270, -3 }, /* (76) db_options ::= db_options COMP NK_INTEGER */
|
||||
{ 270, -3 }, /* (77) db_options ::= db_options DURATION NK_INTEGER */
|
||||
{ 270, -3 }, /* (78) db_options ::= db_options DURATION NK_VARIABLE */
|
||||
|
@ -2830,7 +2830,7 @@ static const struct {
|
|||
{ 270, -3 }, /* (85) db_options ::= db_options PAGESIZE NK_INTEGER */
|
||||
{ 270, -3 }, /* (86) db_options ::= db_options PRECISION NK_STRING */
|
||||
{ 270, -3 }, /* (87) db_options ::= db_options REPLICA NK_INTEGER */
|
||||
{ 270, -3 }, /* (88) db_options ::= db_options STRICT NK_INTEGER */
|
||||
{ 270, -3 }, /* (88) db_options ::= db_options STRICT NK_STRING */
|
||||
{ 270, -3 }, /* (89) db_options ::= db_options WAL NK_INTEGER */
|
||||
{ 270, -3 }, /* (90) db_options ::= db_options VGROUPS NK_INTEGER */
|
||||
{ 270, -3 }, /* (91) db_options ::= db_options SINGLE_STABLE NK_INTEGER */
|
||||
|
@ -2839,8 +2839,8 @@ static const struct {
|
|||
{ 272, -1 }, /* (94) alter_db_options ::= alter_db_option */
|
||||
{ 272, -2 }, /* (95) alter_db_options ::= alter_db_options alter_db_option */
|
||||
{ 276, -2 }, /* (96) alter_db_option ::= BUFFER NK_INTEGER */
|
||||
{ 276, -2 }, /* (97) alter_db_option ::= CACHELAST NK_INTEGER */
|
||||
{ 276, -2 }, /* (98) alter_db_option ::= CACHELASTSIZE NK_INTEGER */
|
||||
{ 276, -2 }, /* (97) alter_db_option ::= CACHEMODEL NK_STRING */
|
||||
{ 276, -2 }, /* (98) alter_db_option ::= CACHESIZE NK_INTEGER */
|
||||
{ 276, -2 }, /* (99) alter_db_option ::= FSYNC NK_INTEGER */
|
||||
{ 276, -2 }, /* (100) alter_db_option ::= KEEP integer_list */
|
||||
{ 276, -2 }, /* (101) alter_db_option ::= KEEP variable_list */
|
||||
|
@ -3543,12 +3543,12 @@ static YYACTIONTYPE yy_reduce(
|
|||
{ yylhsminor.yy616 = setDatabaseOption(pCxt, yymsp[-2].minor.yy616, DB_OPTION_BUFFER, &yymsp[0].minor.yy0); }
|
||||
yymsp[-2].minor.yy616 = yylhsminor.yy616;
|
||||
break;
|
||||
case 74: /* db_options ::= db_options CACHELAST NK_INTEGER */
|
||||
{ yylhsminor.yy616 = setDatabaseOption(pCxt, yymsp[-2].minor.yy616, DB_OPTION_CACHELAST, &yymsp[0].minor.yy0); }
|
||||
case 74: /* db_options ::= db_options CACHEMODEL NK_STRING */
|
||||
{ yylhsminor.yy616 = setDatabaseOption(pCxt, yymsp[-2].minor.yy616, DB_OPTION_CACHEMODEL, &yymsp[0].minor.yy0); }
|
||||
yymsp[-2].minor.yy616 = yylhsminor.yy616;
|
||||
break;
|
||||
case 75: /* db_options ::= db_options CACHELASTSIZE NK_INTEGER */
|
||||
{ yylhsminor.yy616 = setDatabaseOption(pCxt, yymsp[-2].minor.yy616, DB_OPTION_CACHELASTSIZE, &yymsp[0].minor.yy0); }
|
||||
case 75: /* db_options ::= db_options CACHESIZE NK_INTEGER */
|
||||
{ yylhsminor.yy616 = setDatabaseOption(pCxt, yymsp[-2].minor.yy616, DB_OPTION_CACHESIZE, &yymsp[0].minor.yy0); }
|
||||
yymsp[-2].minor.yy616 = yylhsminor.yy616;
|
||||
break;
|
||||
case 76: /* db_options ::= db_options COMP NK_INTEGER */
|
||||
|
@ -3593,7 +3593,7 @@ static YYACTIONTYPE yy_reduce(
|
|||
{ yylhsminor.yy616 = setDatabaseOption(pCxt, yymsp[-2].minor.yy616, DB_OPTION_REPLICA, &yymsp[0].minor.yy0); }
|
||||
yymsp[-2].minor.yy616 = yylhsminor.yy616;
|
||||
break;
|
||||
case 88: /* db_options ::= db_options STRICT NK_INTEGER */
|
||||
case 88: /* db_options ::= db_options STRICT NK_STRING */
|
||||
{ yylhsminor.yy616 = setDatabaseOption(pCxt, yymsp[-2].minor.yy616, DB_OPTION_STRICT, &yymsp[0].minor.yy0); }
|
||||
yymsp[-2].minor.yy616 = yylhsminor.yy616;
|
||||
break;
|
||||
|
@ -3628,11 +3628,11 @@ static YYACTIONTYPE yy_reduce(
|
|||
case 96: /* alter_db_option ::= BUFFER NK_INTEGER */
|
||||
{ yymsp[-1].minor.yy409.type = DB_OPTION_BUFFER; yymsp[-1].minor.yy409.val = yymsp[0].minor.yy0; }
|
||||
break;
|
||||
case 97: /* alter_db_option ::= CACHELAST NK_INTEGER */
|
||||
{ yymsp[-1].minor.yy409.type = DB_OPTION_CACHELAST; yymsp[-1].minor.yy409.val = yymsp[0].minor.yy0; }
|
||||
case 97: /* alter_db_option ::= CACHEMODEL NK_STRING */
|
||||
{ yymsp[-1].minor.yy409.type = DB_OPTION_CACHEMODEL; yymsp[-1].minor.yy409.val = yymsp[0].minor.yy0; }
|
||||
break;
|
||||
case 98: /* alter_db_option ::= CACHELASTSIZE NK_INTEGER */
|
||||
{ yymsp[-1].minor.yy409.type = DB_OPTION_CACHELASTSIZE; yymsp[-1].minor.yy409.val = yymsp[0].minor.yy0; }
|
||||
case 98: /* alter_db_option ::= CACHESIZE NK_INTEGER */
|
||||
{ yymsp[-1].minor.yy409.type = DB_OPTION_CACHESIZE; yymsp[-1].minor.yy409.val = yymsp[0].minor.yy0; }
|
||||
break;
|
||||
case 99: /* alter_db_option ::= FSYNC NK_INTEGER */
|
||||
{ yymsp[-1].minor.yy409.type = DB_OPTION_FSYNC; yymsp[-1].minor.yy409.val = yymsp[0].minor.yy0; }
|
||||
|
|
|
@ -38,7 +38,7 @@ TEST_F(ParserInitialATest, alterDnode) {
|
|||
TEST_F(ParserInitialATest, alterDatabase) {
|
||||
useDb("root", "test");
|
||||
|
||||
run("ALTER DATABASE test CACHELAST 1 FSYNC 200 WAL 1");
|
||||
run("ALTER DATABASE test CACHEMODEL 'last_row' FSYNC 200 WAL 1");
|
||||
|
||||
run("ALTER DATABASE test KEEP 2400");
|
||||
}
|
||||
|
|
|
@ -43,7 +43,8 @@ TEST_F(ParserInitialCTest, createBnode) {
|
|||
*
|
||||
* database_option: {
|
||||
* BUFFER value
|
||||
* | CACHELAST value
|
||||
* | CACHEMODEL {'none' | 'last_row' | 'last_value' | 'both'}
|
||||
* | CACHESIZE value
|
||||
* | COMP {0 | 1 | 2}
|
||||
* | DURATION value
|
||||
* | FSYNC value
|
||||
|
@ -55,7 +56,7 @@ TEST_F(ParserInitialCTest, createBnode) {
|
|||
* | PRECISION {'ms' | 'us' | 'ns'}
|
||||
* | REPLICA value
|
||||
* | RETENTIONS ingestion_duration:keep_duration ...
|
||||
* | STRICT value
|
||||
* | STRICT {'off' | 'on'}
|
||||
* | WAL value
|
||||
* | VGROUPS value
|
||||
* | SINGLE_STABLE {0 | 1}
|
||||
|
@ -76,8 +77,8 @@ TEST_F(ParserInitialCTest, createDatabase) {
|
|||
expect.db[len] = '\0';
|
||||
expect.ignoreExist = igExists;
|
||||
expect.buffer = TSDB_DEFAULT_BUFFER_PER_VNODE;
|
||||
expect.cacheLast = TSDB_DEFAULT_CACHE_LAST;
|
||||
expect.cacheLastSize = TSDB_DEFAULT_CACHE_LAST_SIZE;
|
||||
expect.cacheLast = TSDB_DEFAULT_CACHE_MODEL;
|
||||
expect.cacheLastSize = TSDB_DEFAULT_CACHE_SIZE;
|
||||
expect.compression = TSDB_DEFAULT_COMP_LEVEL;
|
||||
expect.daysPerFile = TSDB_DEFAULT_DAYS_PER_FILE;
|
||||
expect.fsyncPeriod = TSDB_DEFAULT_FSYNC_PERIOD;
|
||||
|
@ -203,8 +204,8 @@ TEST_F(ParserInitialCTest, createDatabase) {
|
|||
setDbSchemalessFunc(1);
|
||||
run("CREATE DATABASE IF NOT EXISTS wxy_db "
|
||||
"BUFFER 64 "
|
||||
"CACHELAST 2 "
|
||||
"CACHELASTSIZE 20 "
|
||||
"CACHEMODEL 'last_value' "
|
||||
"CACHESIZE 20 "
|
||||
"COMP 1 "
|
||||
"DURATION 100 "
|
||||
"FSYNC 100 "
|
||||
|
@ -216,7 +217,7 @@ TEST_F(ParserInitialCTest, createDatabase) {
|
|||
"PRECISION 'ns' "
|
||||
"REPLICA 3 "
|
||||
"RETENTIONS 15s:7d,1m:21d,15m:500d "
|
||||
"STRICT 1 "
|
||||
"STRICT 'on' "
|
||||
"WAL 2 "
|
||||
"VGROUPS 100 "
|
||||
"SINGLE_STABLE 1 "
|
||||
|
|
|
@ -67,7 +67,7 @@ class TDTestCase:
|
|||
slow = 0 #count time where lastRow on is slower
|
||||
for i in range(5):
|
||||
#switch lastRow to off and check
|
||||
tdSql.execute('alter database db cachelast 0')
|
||||
tdSql.execute('alter database db cachemodel 'none'')
|
||||
tdSql.query('show databases')
|
||||
tdSql.checkData(0,15,0)
|
||||
|
||||
|
@ -79,7 +79,7 @@ class TDTestCase:
|
|||
tdLog.debug(f'time used:{lastRow_Off_end-lastRow_Off_start}')
|
||||
|
||||
#switch lastRow to on and check
|
||||
tdSql.execute('alter database db cachelast 1')
|
||||
tdSql.execute('alter database db cachemodel 'last_row'')
|
||||
tdSql.query('show databases')
|
||||
tdSql.checkData(0,15,1)
|
||||
|
||||
|
|
|
@ -89,36 +89,36 @@ class TDTestCase:
|
|||
tdSql.prepare()
|
||||
|
||||
# last_cache_0.sim
|
||||
tdSql.execute("create database test1 cachelast 0")
|
||||
tdSql.execute("create database test1 cachemodel 'none'")
|
||||
tdSql.execute("use test1")
|
||||
self.insertData()
|
||||
self.executeQueries()
|
||||
|
||||
tdSql.execute("alter database test1 cachelast 1")
|
||||
tdSql.execute("alter database test1 cachemodel 'last_row'")
|
||||
self.executeQueries()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
self.executeQueries()
|
||||
|
||||
tdSql.execute("alter database test1 cachelast 0")
|
||||
tdSql.execute("alter database test1 cachemodel 'none'")
|
||||
self.executeQueries()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
self.executeQueries()
|
||||
|
||||
# last_cache_1.sim
|
||||
tdSql.execute("create database test2 cachelast 1")
|
||||
tdSql.execute("create database test2 cachemodel 'last_row'")
|
||||
tdSql.execute("use test2")
|
||||
self.insertData()
|
||||
self.executeQueries()
|
||||
|
||||
tdSql.execute("alter database test2 cachelast 0")
|
||||
tdSql.execute("alter database test2 cachemodel 'none'")
|
||||
self.executeQueries()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
self.executeQueries()
|
||||
|
||||
tdSql.execute("alter database test2 cachelast 1")
|
||||
tdSql.execute("alter database test2 cachemodel 'last_row'")
|
||||
self.executeQueries()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
|
|
|
@ -142,56 +142,56 @@ class TDTestCase:
|
|||
tdSql.prepare()
|
||||
|
||||
print("============== Step1: last_row_cache_0.sim")
|
||||
tdSql.execute("create database test1 cachelast 0")
|
||||
tdSql.execute("create database test1 cachemodel 'none'")
|
||||
tdSql.execute("use test1")
|
||||
self.insertData()
|
||||
self.executeQueries()
|
||||
self.insertData2()
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step2: alter database test1 cachelast 1")
|
||||
tdSql.execute("alter database test1 cachelast 1")
|
||||
print("============== Step2: alter database test1 cachemodel 'last_row'")
|
||||
tdSql.execute("alter database test1 cachemodel 'last_row'")
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step3: alter database test1 cachelast 2")
|
||||
tdSql.execute("alter database test1 cachelast 2")
|
||||
print("============== Step3: alter database test1 cachemodel 'last_value'")
|
||||
tdSql.execute("alter database test1 cachemodel 'last_value'")
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step4: alter database test1 cachelast 3")
|
||||
tdSql.execute("alter database test1 cachelast 3")
|
||||
print("============== Step4: alter database test1 cachemodel 'both'")
|
||||
tdSql.execute("alter database test1 cachemodel 'both'")
|
||||
self.executeQueries2()
|
||||
|
||||
|
||||
print("============== Step5: alter database test1 cachelast 0 and restart taosd")
|
||||
tdSql.execute("alter database test1 cachelast 0")
|
||||
print("============== Step5: alter database test1 cachemodel 'none' and restart taosd")
|
||||
tdSql.execute("alter database test1 cachemodel 'none'")
|
||||
self.executeQueries2()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step6: alter database test1 cachelast 1 and restart taosd")
|
||||
tdSql.execute("alter database test1 cachelast 1")
|
||||
print("============== Step6: alter database test1 cachemodel 'last_row' and restart taosd")
|
||||
tdSql.execute("alter database test1 cachemodel 'last_row'")
|
||||
self.executeQueries2()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step7: alter database test1 cachelast 2 and restart taosd")
|
||||
tdSql.execute("alter database test1 cachelast 2")
|
||||
print("============== Step7: alter database test1 cachemodel 'last_value' and restart taosd")
|
||||
tdSql.execute("alter database test1 cachemodel 'last_value'")
|
||||
self.executeQueries2()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step8: alter database test1 cachelast 3 and restart taosd")
|
||||
tdSql.execute("alter database test1 cachelast 3")
|
||||
print("============== Step8: alter database test1 cachemodel 'both' and restart taosd")
|
||||
tdSql.execute("alter database test1 cachemodel 'both'")
|
||||
self.executeQueries2()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step9: create database test2 cachelast 1")
|
||||
tdSql.execute("create database test2 cachelast 1")
|
||||
print("============== Step9: create database test2 cachemodel 'last_row'")
|
||||
tdSql.execute("create database test2 cachemodel 'last_row'")
|
||||
tdSql.execute("use test2")
|
||||
self.insertData()
|
||||
self.executeQueries()
|
||||
|
@ -201,45 +201,45 @@ class TDTestCase:
|
|||
tdDnodes.start(1)
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step8: alter database test2 cachelast 0")
|
||||
tdSql.execute("alter database test2 cachelast 0")
|
||||
print("============== Step8: alter database test2 cachemodel 'none'")
|
||||
tdSql.execute("alter database test2 cachemodel 'none'")
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step9: alter database test2 cachelast 1")
|
||||
tdSql.execute("alter database test2 cachelast 1")
|
||||
print("============== Step9: alter database test2 cachemodel 'last_row'")
|
||||
tdSql.execute("alter database test2 cachemodel 'last_row'")
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step10: alter database test2 cachelast 2")
|
||||
tdSql.execute("alter database test2 cachelast 2")
|
||||
print("============== Step10: alter database test2 cachemodel 'last_value'")
|
||||
tdSql.execute("alter database test2 cachemodel 'last_value'")
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step11: alter database test2 cachelast 3")
|
||||
tdSql.execute("alter database test2 cachelast 3")
|
||||
print("============== Step11: alter database test2 cachemodel 'both'")
|
||||
tdSql.execute("alter database test2 cachemodel 'both'")
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step12: alter database test2 cachelast 0 and restart taosd")
|
||||
tdSql.execute("alter database test2 cachelast 0")
|
||||
print("============== Step12: alter database test2 cachemodel 'none' and restart taosd")
|
||||
tdSql.execute("alter database test2 cachemodel 'none'")
|
||||
self.executeQueries2()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step13: alter database test2 cachelast 1 and restart taosd")
|
||||
tdSql.execute("alter database test2 cachelast 1")
|
||||
print("============== Step13: alter database test2 cachemodel 'last_row' and restart taosd")
|
||||
tdSql.execute("alter database test2 cachemodel 'last_row'")
|
||||
self.executeQueries2()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step14: alter database test2 cachelast 2 and restart taosd")
|
||||
tdSql.execute("alter database test2 cachelast 2")
|
||||
print("============== Step14: alter database test2 cachemodel 'last_value' and restart taosd")
|
||||
tdSql.execute("alter database test2 cachemodel 'last_value'")
|
||||
self.executeQueries2()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
self.executeQueries2()
|
||||
|
||||
print("============== Step15: alter database test2 cachelast 3 and restart taosd")
|
||||
tdSql.execute("alter database test2 cachelast 3")
|
||||
print("============== Step15: alter database test2 cachemodel 'both' and restart taosd")
|
||||
tdSql.execute("alter database test2 cachemodel 'both'")
|
||||
self.executeQueries2()
|
||||
tdDnodes.stop(1)
|
||||
tdDnodes.start(1)
|
||||
|
|
|
@ -39,6 +39,6 @@ class DataBoundary:
|
|||
self.DB_PARAM_PRECISION_CONFIG = {"create_name": "precision", "query_name": "precision", "vnode_json_key": "", "boundary": ['ms', 'us', 'ns'], "default": "ms"}
|
||||
self.DB_PARAM_REPLICA_CONFIG = {"create_name": "replica", "query_name": "replica", "vnode_json_key": "", "boundary": [1], "default": 1}
|
||||
self.DB_PARAM_SINGLE_STABLE_CONFIG = {"create_name": "single_stable", "query_name": "single_stable_model", "vnode_json_key": "", "boundary": [0, 1], "default": 0}
|
||||
self.DB_PARAM_STRICT_CONFIG = {"create_name": "strict", "query_name": "strict", "vnode_json_key": "", "boundary": {"no_strict": 0, "strict": 1}, "default": "no_strict"}
|
||||
self.DB_PARAM_STRICT_CONFIG = {"create_name": "strict", "query_name": "strict", "vnode_json_key": "", "boundary": {"off": 0, "strict": 1}, "default": "off"}
|
||||
self.DB_PARAM_VGROUPS_CONFIG = {"create_name": "vgroups", "query_name": "vgroups", "vnode_json_key": "", "boundary": [1, 32], "default": 2}
|
||||
self.DB_PARAM_WAL_CONFIG = {"create_name": "wal", "query_name": "wal", "vnode_json_key": "", "boundary": [1, 2], "default": 1}
|
|
@ -54,7 +54,7 @@ TAOS_KEYWORDS = [
|
|||
"BOOL", "EQ", "LINEAR", "RESET", "TSERIES",
|
||||
"BY", "EXISTS", "LOCAL", "RESTRICT", "UMINUS",
|
||||
"CACHE", "EXPLAIN", "LP", "ROW", "UNION",
|
||||
"CACHELAST", "FAIL", "LSHIFT", "RP", "UNSIGNED",
|
||||
"CACHEMODEL", "FAIL", "LSHIFT", "RP", "UNSIGNED",
|
||||
"CASCADE", "FILE", "LT", "RSHIFT", "UPDATE",
|
||||
"CHANGE", "FILL", "MATCH", "SCORES", "UPLUS",
|
||||
"CLUSTER", "FLOAT", "MAXROWS", "SELECT", "USE",
|
||||
|
|
|
@ -79,22 +79,39 @@ class TDSql:
|
|||
self.queryResult = None
|
||||
tdLog.info("sql:%s, expect error occured" % (sql))
|
||||
|
||||
def query(self, sql, row_tag=None):
|
||||
def query(self, sql, row_tag=None,queyTimes=10):
|
||||
self.sql = sql
|
||||
try:
|
||||
self.cursor.execute(sql)
|
||||
self.queryResult = self.cursor.fetchall()
|
||||
self.queryRows = len(self.queryResult)
|
||||
self.queryCols = len(self.cursor.description)
|
||||
except Exception as e:
|
||||
caller = inspect.getframeinfo(inspect.stack()[1][0])
|
||||
args = (caller.filename, caller.lineno, sql, repr(e))
|
||||
tdLog.notice("%s(%d) failed: sql:%s, %s" % args)
|
||||
traceback.print_exc()
|
||||
raise Exception(repr(e))
|
||||
if row_tag:
|
||||
return self.queryResult
|
||||
return self.queryRows
|
||||
i=1
|
||||
while i <= queyTimes:
|
||||
try:
|
||||
self.cursor.execute(sql)
|
||||
self.queryResult = self.cursor.fetchall()
|
||||
self.queryRows = len(self.queryResult)
|
||||
self.queryCols = len(self.cursor.description)
|
||||
if row_tag:
|
||||
return self.queryResult
|
||||
return self.queryRows
|
||||
except Exception as e:
|
||||
i+=1
|
||||
tdLog.notice("Try to query again, query times: %d "%i)
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
tdLog.notice("Try the last query ")
|
||||
self.cursor.execute(sql)
|
||||
self.queryResult = self.cursor.fetchall()
|
||||
self.queryRows = len(self.queryResult)
|
||||
self.queryCols = len(self.cursor.description)
|
||||
if row_tag:
|
||||
return self.queryResult
|
||||
return self.queryRows
|
||||
except Exception as e:
|
||||
caller = inspect.getframeinfo(inspect.stack()[1][0])
|
||||
args = (caller.filename, caller.lineno, sql, repr(e))
|
||||
tdLog.notice("%s(%d) failed: sql:%s, %s" % args)
|
||||
traceback.print_exc()
|
||||
raise Exception(repr(e))
|
||||
|
||||
|
||||
def is_err_sql(self, sql):
|
||||
err_flag = True
|
||||
|
@ -266,16 +283,27 @@ class TDSql:
|
|||
time.sleep(1)
|
||||
continue
|
||||
|
||||
def execute(self, sql):
|
||||
def execute(self, sql,queyTimes=10):
|
||||
self.sql = sql
|
||||
try:
|
||||
self.affectedRows = self.cursor.execute(sql)
|
||||
except Exception as e:
|
||||
caller = inspect.getframeinfo(inspect.stack()[1][0])
|
||||
args = (caller.filename, caller.lineno, sql, repr(e))
|
||||
tdLog.notice("%s(%d) failed: sql:%s, %s" % args)
|
||||
raise Exception(repr(e))
|
||||
return self.affectedRows
|
||||
i=1
|
||||
while i <= queyTimes:
|
||||
try:
|
||||
self.affectedRows = self.cursor.execute(sql)
|
||||
return self.affectedRows
|
||||
except Exception as e:
|
||||
i+=1
|
||||
tdLog.notice("Try to execute sql again, query times: %d "%i)
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
tdLog.notice("Try the last execute sql ")
|
||||
self.affectedRows = self.cursor.execute(sql)
|
||||
return self.affectedRows
|
||||
except Exception as e:
|
||||
caller = inspect.getframeinfo(inspect.stack()[1][0])
|
||||
args = (caller.filename, caller.lineno, sql, repr(e))
|
||||
tdLog.notice("%s(%d) failed: sql:%s, %s" % args)
|
||||
raise Exception(repr(e))
|
||||
|
||||
def checkAffectedRows(self, expectAffectedRows):
|
||||
if self.affectedRows != expectAffectedRows:
|
||||
|
|
|
@ -40,13 +40,13 @@ print ============= create database
|
|||
#database_option: {
|
||||
# | BUFFER value [3~16384, default: 96]
|
||||
# | PAGES value [64~16384, default: 256]
|
||||
# | CACHELAST value [0, 1, 2, 3]
|
||||
# | CACHEMODEL value ['node', 'last_row', 'last_value', 'both']
|
||||
# | FSYNC value [0 ~ 180000 ms]
|
||||
# | KEEP value [duration, 365000]
|
||||
# | REPLICA value [1 | 3]
|
||||
# | WAL value [1 | 2]
|
||||
|
||||
sql create database db CACHELAST 3 COMP 0 DURATION 240 FSYNC 1000 MAXROWS 8000 MINROWS 10 KEEP 1000 PRECISION 'ns' REPLICA 3 WAL 2 VGROUPS 6 SINGLE_STABLE 1
|
||||
sql create database db CACHEMODEL 'both' COMP 0 DURATION 240 FSYNC 1000 MAXROWS 8000 MINROWS 10 KEEP 1000 PRECISION 'ns' REPLICA 3 WAL 2 VGROUPS 6 SINGLE_STABLE 1
|
||||
sql show databases
|
||||
print rows: $rows
|
||||
print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 $data08 $data09
|
||||
|
@ -69,7 +69,7 @@ endi
|
|||
if $data4_db != 3 then # replica
|
||||
return -1
|
||||
endi
|
||||
if $data5_db != no_strict then # strict
|
||||
if $data5_db != off then # strict
|
||||
return -1
|
||||
endi
|
||||
if $data6_db != 345600m then # duration
|
||||
|
@ -102,7 +102,7 @@ endi
|
|||
if $data15_db != 0 then # comp
|
||||
return -1
|
||||
endi
|
||||
if $data16_db != 3 then # cachelast
|
||||
if $data16_db != both then # cachelast
|
||||
return -1
|
||||
endi
|
||||
if $data17_db != ns then # precision
|
||||
|
@ -333,40 +333,40 @@ sql_error alter database db comp 5
|
|||
sql_error alter database db comp -1
|
||||
|
||||
print ============== modify cachelast [0, 1, 2, 3]
|
||||
sql alter database db cachelast 2
|
||||
sql alter database db cachemodel 'last_value'
|
||||
sql show databases
|
||||
print cachelast $data16_db
|
||||
if $data16_db != 2 then
|
||||
if $data16_db != last_value then
|
||||
return -1
|
||||
endi
|
||||
sql alter database db cachelast 1
|
||||
sql alter database db cachemodel 'last_row'
|
||||
sql show databases
|
||||
print cachelast $data16_db
|
||||
if $data16_db != 1 then
|
||||
if $data16_db != last_row then
|
||||
return -1
|
||||
endi
|
||||
sql alter database db cachelast 0
|
||||
sql alter database db cachemodel 'none'
|
||||
sql show databases
|
||||
print cachelast $data16_db
|
||||
if $data16_db != 0 then
|
||||
if $data16_db != none then
|
||||
return -1
|
||||
endi
|
||||
sql alter database db cachelast 2
|
||||
sql alter database db cachemodel 'last_value'
|
||||
sql show databases
|
||||
print cachelast $data16_db
|
||||
if $data16_db != 2 then
|
||||
if $data16_db != last_value then
|
||||
return -1
|
||||
endi
|
||||
sql alter database db cachelast 3
|
||||
sql alter database db cachemodel 'both'
|
||||
sql show databases
|
||||
print cachelast $data16_db
|
||||
if $data16_db != 3 then
|
||||
if $data16_db != both then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql_error alter database db cachelast 4
|
||||
sql_error alter database db cachelast 10
|
||||
sql_error alter database db cachelast -1
|
||||
sql_error alter database db cachelast 'other'
|
||||
|
||||
print ============== modify precision
|
||||
sql_error alter database db precision 'ms'
|
||||
|
|
|
@ -15,7 +15,7 @@ $tb = $tbPrefix . $i
|
|||
|
||||
print =============== step1
|
||||
# quorum presicion
|
||||
sql create database $db vgroups 8 replica 1 duration 2 keep 10 minrows 80 maxrows 10000 wal 2 fsync 1000 comp 0 cachelast 2 precision 'us'
|
||||
sql create database $db vgroups 8 replica 1 duration 2 keep 10 minrows 80 maxrows 10000 wal 2 fsync 1000 comp 0 cachemodel 'last_value' precision 'us'
|
||||
sql show databases
|
||||
print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 $data08 $data09
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ print ============= create database with all options
|
|||
# | BUFFER value [3~16384, default: 96]
|
||||
# | PAGES value [64~16384, default: 256]
|
||||
# | PAGESIZE value [1~16384, default: 4]
|
||||
# | CACHELAST value [0, 1, 2, 3, default: 0]
|
||||
# | CACHEMODEL value ['node', 'last_row', 'last_value', 'both', default: 'node']
|
||||
# | COMP [0 | 1 | 2, default: 2]
|
||||
# | DURATION value [60m ~ min(3650d,keep), default: 10d, unit may be minut/hour/day]
|
||||
# | FSYNC value [0 ~ 180000 ms, default: 3000]
|
||||
|
@ -89,7 +89,7 @@ if $data4_db != 1 then # replica
|
|||
print expect 1, actual: $data4_db
|
||||
return -1
|
||||
endi
|
||||
if $data5_db != no_strict then # strict
|
||||
if $data5_db != off then # strict
|
||||
return -1
|
||||
endi
|
||||
if $data6_db != 14400m then # duration
|
||||
|
@ -122,7 +122,7 @@ endi
|
|||
if $data15_db != 2 then # comp
|
||||
return -1
|
||||
endi
|
||||
if $data16_db != 0 then # cachelast
|
||||
if $data16_db != none then # cachelast
|
||||
return -1
|
||||
endi
|
||||
if $data17_db != ms then # precision
|
||||
|
@ -167,32 +167,32 @@ sql drop database db
|
|||
#endi
|
||||
#sql drop database db
|
||||
|
||||
print ====> CACHELAST value [0, 1, 2, 3, default: 0]
|
||||
sql create database db CACHELAST 1
|
||||
print ====> CACHEMODEL value [0, 1, 2, 3, default: 0]
|
||||
sql create database db CACHEMODEL 'last_row'
|
||||
sql show databases
|
||||
print $data0_db $data1_db $data2_db $data3_db $data4_db $data5_db $data6_db $data7_db $data8_db $data9_db $data10_db $data11_db $data12_db $data13_db $data14_db $data15_db $data16_db $data17_db
|
||||
if $data16_db != 1 then
|
||||
if $data16_db != last_row then
|
||||
return -1
|
||||
endi
|
||||
sql drop database db
|
||||
|
||||
sql create database db CACHELAST 2
|
||||
sql create database db CACHEMODEL 'last_value'
|
||||
sql show databases
|
||||
print $data0_db $data1_db $data2_db $data3_db $data4_db $data5_db $data6_db $data7_db $data8_db $data9_db $data10_db $data11_db $data12_db $data13_db $data14_db $data15_db $data16_db $data17_db
|
||||
if $data16_db != 2 then
|
||||
if $data16_db != last_value then
|
||||
return -1
|
||||
endi
|
||||
sql drop database db
|
||||
|
||||
sql create database db CACHELAST 3
|
||||
sql create database db CACHEMODEL 'both'
|
||||
sql show databases
|
||||
print $data0_db $data1_db $data2_db $data3_db $data4_db $data5_db $data6_db $data7_db $data8_db $data9_db $data10_db $data11_db $data12_db $data13_db $data14_db $data15_db $data16_db $data17_db
|
||||
if $data16_db != 3 then
|
||||
if $data16_db != both then
|
||||
return -1
|
||||
endi
|
||||
sql drop database db
|
||||
sql_error create database db CACHELAST 4
|
||||
sql_error create database db CACHELAST -1
|
||||
sql_error create database db CACHEMODEL 'other'
|
||||
sql_error create database db CACHEMODEL '-1'
|
||||
|
||||
print ====> COMP [0 | 1 | 2, default: 2]
|
||||
sql create database db COMP 1
|
||||
|
|
|
@ -7,7 +7,7 @@ print ======================== dnode1 start
|
|||
|
||||
$db = testdb
|
||||
sql drop database if exists $db
|
||||
sql create database $db cachelast 2
|
||||
sql create database $db cachemodel 'last_value'
|
||||
sql use $db
|
||||
|
||||
sql create stable st2 (ts timestamp, f1 int, f2 double, f3 binary(10), f4 timestamp) tags (id int)
|
||||
|
|
|
@ -8,7 +8,7 @@ print ======================== dnode1 start
|
|||
|
||||
$db = testdb
|
||||
sql drop database if exists $db
|
||||
sql create database $db cachelast 2
|
||||
sql create database $db cachemodel 'last_value'
|
||||
sql use $db
|
||||
|
||||
$table1 = table_name
|
||||
|
|
|
@ -91,21 +91,21 @@ if $rows != $vgroups then
|
|||
return -1
|
||||
endi
|
||||
|
||||
if $data[0][4] == LEADER then
|
||||
if $data[0][6] == FOLLOWER then
|
||||
if $data[0][8] == FOLLOWER then
|
||||
if $data[0][4] == leader then
|
||||
if $data[0][6] == follower then
|
||||
if $data[0][8] == follower then
|
||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[0][6] == LEADER then
|
||||
if $data[0][4] == FOLLOWER then
|
||||
if $data[0][8] == FOLLOWER then
|
||||
elif $data[0][6] == leader then
|
||||
if $data[0][4] == follower then
|
||||
if $data[0][8] == follower then
|
||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[0][8] == LEADER then
|
||||
if $data[0][4] == FOLLOWER then
|
||||
if $data[0][6] == FOLLOWER then
|
||||
elif $data[0][8] == leader then
|
||||
if $data[0][4] == follower then
|
||||
if $data[0][6] == follower then
|
||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
||||
endi
|
||||
endi
|
||||
|
@ -113,21 +113,21 @@ else
|
|||
goto check_vg_ready
|
||||
endi
|
||||
|
||||
if $data[1][4] == LEADER then
|
||||
if $data[1][6] == FOLLOWER then
|
||||
if $data[1][8] == FOLLOWER then
|
||||
if $data[1][4] == leader then
|
||||
if $data[1][6] == follower then
|
||||
if $data[1][8] == follower then
|
||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[1][6] == LEADER then
|
||||
if $data[1][4] == FOLLOWER then
|
||||
if $data[1][8] == FOLLOWER then
|
||||
elif $data[1][6] == leader then
|
||||
if $data[1][4] == follower then
|
||||
if $data[1][8] == follower then
|
||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[1][8] == LEADER then
|
||||
if $data[1][4] == FOLLOWER then
|
||||
if $data[1][6] == FOLLOWER then
|
||||
elif $data[1][8] == leader then
|
||||
if $data[1][4] == follower then
|
||||
if $data[1][6] == follower then
|
||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][7]
|
||||
endi
|
||||
endi
|
||||
|
@ -135,21 +135,21 @@ else
|
|||
goto check_vg_ready
|
||||
endi
|
||||
|
||||
if $data[2][4] == LEADER then
|
||||
if $data[2][6] == FOLLOWER then
|
||||
if $data[2][8] == FOLLOWER then
|
||||
if $data[2][4] == leader then
|
||||
if $data[2][6] == follower then
|
||||
if $data[2][8] == follower then
|
||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[2][6] == LEADER then
|
||||
if $data[2][4] == FOLLOWER then
|
||||
if $data[2][8] == FOLLOWER then
|
||||
elif $data[2][6] == leader then
|
||||
if $data[2][4] == follower then
|
||||
if $data[2][8] == follower then
|
||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[2][8] == LEADER then
|
||||
if $data[2][4] == FOLLOWER then
|
||||
if $data[2][6] == FOLLOWER then
|
||||
elif $data[2][8] == leader then
|
||||
if $data[2][4] == follower then
|
||||
if $data[2][6] == follower then
|
||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][7]
|
||||
endi
|
||||
endi
|
||||
|
@ -157,21 +157,21 @@ else
|
|||
goto check_vg_ready
|
||||
endi
|
||||
|
||||
if $data[3][4] == LEADER then
|
||||
if $data[3][6] == FOLLOWER then
|
||||
if $data[3][8] == FOLLOWER then
|
||||
if $data[3][4] == leader then
|
||||
if $data[3][6] == follower then
|
||||
if $data[3][8] == follower then
|
||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[3][6] == LEADER then
|
||||
if $data[3][4] == FOLLOWER then
|
||||
if $data[3][8] == FOLLOWER then
|
||||
elif $data[3][6] == leader then
|
||||
if $data[3][4] == follower then
|
||||
if $data[3][8] == follower then
|
||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[3][8] == LEADER then
|
||||
if $data[3][4] == FOLLOWER then
|
||||
if $data[3][6] == FOLLOWER then
|
||||
elif $data[3][8] == leader then
|
||||
if $data[3][4] == follower then
|
||||
if $data[3][6] == follower then
|
||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][7]
|
||||
endi
|
||||
endi
|
||||
|
@ -179,21 +179,21 @@ else
|
|||
goto check_vg_ready
|
||||
endi
|
||||
|
||||
if $data[4][4] == LEADER then
|
||||
if $data[4][6] == FOLLOWER then
|
||||
if $data[4][8] == FOLLOWER then
|
||||
if $data[4][4] == leader then
|
||||
if $data[4][6] == follower then
|
||||
if $data[4][8] == follower then
|
||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[4][6] == LEADER then
|
||||
if $data[4][4] == FOLLOWER then
|
||||
if $data[4][8] == FOLLOWER then
|
||||
elif $data[4][6] == leader then
|
||||
if $data[4][4] == follower then
|
||||
if $data[4][8] == follower then
|
||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[4][8] == LEADER then
|
||||
if $data[4][4] == FOLLOWER then
|
||||
if $data[4][6] == FOLLOWER then
|
||||
elif $data[4][8] == leader then
|
||||
if $data[4][4] == follower then
|
||||
if $data[4][6] == follower then
|
||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][7]
|
||||
endi
|
||||
endi
|
||||
|
@ -286,13 +286,13 @@ if $data[0][0] != 1 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
if $data[0][2] != LEADER then
|
||||
if $data[0][2] != leader then
|
||||
goto check_mnode_ready_2
|
||||
endi
|
||||
if $data[1][2] != FOLLOWER then
|
||||
if $data[1][2] != follower then
|
||||
goto check_mnode_ready_2
|
||||
endi
|
||||
if $data[2][2] != FOLLOWER then
|
||||
if $data[2][2] != follower then
|
||||
goto check_mnode_ready_2
|
||||
endi
|
||||
|
||||
|
@ -318,21 +318,21 @@ if $rows != $vgroups then
|
|||
return -1
|
||||
endi
|
||||
|
||||
if $data[0][4] == LEADER then
|
||||
if $data[0][6] == FOLLOWER then
|
||||
if $data[0][8] == FOLLOWER then
|
||||
if $data[0][4] == leader then
|
||||
if $data[0][6] == follower then
|
||||
if $data[0][8] == follower then
|
||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[0][6] == LEADER then
|
||||
if $data[0][4] == FOLLOWER then
|
||||
if $data[0][8] == FOLLOWER then
|
||||
elif $data[0][6] == leader then
|
||||
if $data[0][4] == follower then
|
||||
if $data[0][8] == follower then
|
||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[0][8] == LEADER then
|
||||
if $data[0][4] == FOLLOWER then
|
||||
if $data[0][6] == FOLLOWER then
|
||||
elif $data[0][8] == leader then
|
||||
if $data[0][4] == follower then
|
||||
if $data[0][6] == follower then
|
||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
||||
endi
|
||||
endi
|
||||
|
@ -340,21 +340,21 @@ else
|
|||
goto check_vg_ready1
|
||||
endi
|
||||
|
||||
if $data[1][4] == LEADER then
|
||||
if $data[1][6] == FOLLOWER then
|
||||
if $data[1][8] == FOLLOWER then
|
||||
if $data[1][4] == leader then
|
||||
if $data[1][6] == follower then
|
||||
if $data[1][8] == follower then
|
||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[1][6] == LEADER then
|
||||
if $data[1][4] == FOLLOWER then
|
||||
if $data[1][8] == FOLLOWER then
|
||||
elif $data[1][6] == leader then
|
||||
if $data[1][4] == follower then
|
||||
if $data[1][8] == follower then
|
||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[1][8] == LEADER then
|
||||
if $data[1][4] == FOLLOWER then
|
||||
if $data[1][6] == FOLLOWER then
|
||||
elif $data[1][8] == leader then
|
||||
if $data[1][4] == follower then
|
||||
if $data[1][6] == follower then
|
||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][7]
|
||||
endi
|
||||
endi
|
||||
|
@ -362,21 +362,21 @@ else
|
|||
goto check_vg_ready1
|
||||
endi
|
||||
|
||||
if $data[2][4] == LEADER then
|
||||
if $data[2][6] == FOLLOWER then
|
||||
if $data[2][8] == FOLLOWER then
|
||||
if $data[2][4] == leader then
|
||||
if $data[2][6] == follower then
|
||||
if $data[2][8] == follower then
|
||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[2][6] == LEADER then
|
||||
if $data[2][4] == FOLLOWER then
|
||||
if $data[2][8] == FOLLOWER then
|
||||
elif $data[2][6] == leader then
|
||||
if $data[2][4] == follower then
|
||||
if $data[2][8] == follower then
|
||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[2][8] == LEADER then
|
||||
if $data[2][4] == FOLLOWER then
|
||||
if $data[2][6] == FOLLOWER then
|
||||
elif $data[2][8] == leader then
|
||||
if $data[2][4] == follower then
|
||||
if $data[2][6] == follower then
|
||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][7]
|
||||
endi
|
||||
endi
|
||||
|
@ -384,21 +384,21 @@ else
|
|||
goto check_vg_ready1
|
||||
endi
|
||||
|
||||
if $data[3][4] == LEADER then
|
||||
if $data[3][6] == FOLLOWER then
|
||||
if $data[3][8] == FOLLOWER then
|
||||
if $data[3][4] == leader then
|
||||
if $data[3][6] == follower then
|
||||
if $data[3][8] == follower then
|
||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[3][6] == LEADER then
|
||||
if $data[3][4] == FOLLOWER then
|
||||
if $data[3][8] == FOLLOWER then
|
||||
elif $data[3][6] == leader then
|
||||
if $data[3][4] == follower then
|
||||
if $data[3][8] == follower then
|
||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[3][8] == LEADER then
|
||||
if $data[3][4] == FOLLOWER then
|
||||
if $data[3][6] == FOLLOWER then
|
||||
elif $data[3][8] == leader then
|
||||
if $data[3][4] == follower then
|
||||
if $data[3][6] == follower then
|
||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][7]
|
||||
endi
|
||||
endi
|
||||
|
@ -406,21 +406,21 @@ else
|
|||
goto check_vg_ready1
|
||||
endi
|
||||
|
||||
if $data[4][4] == LEADER then
|
||||
if $data[4][6] == FOLLOWER then
|
||||
if $data[4][8] == FOLLOWER then
|
||||
if $data[4][4] == leader then
|
||||
if $data[4][6] == follower then
|
||||
if $data[4][8] == follower then
|
||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[4][6] == LEADER then
|
||||
if $data[4][4] == FOLLOWER then
|
||||
if $data[4][8] == FOLLOWER then
|
||||
elif $data[4][6] == leader then
|
||||
if $data[4][4] == follower then
|
||||
if $data[4][8] == follower then
|
||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[4][8] == LEADER then
|
||||
if $data[4][4] == FOLLOWER then
|
||||
if $data[4][6] == FOLLOWER then
|
||||
elif $data[4][8] == leader then
|
||||
if $data[4][4] == follower then
|
||||
if $data[4][6] == follower then
|
||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][7]
|
||||
endi
|
||||
endi
|
||||
|
@ -539,27 +539,27 @@ if $data[0][0] != 1 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
if $data[0][2] == LEADER then
|
||||
if $data[1][2] != FOLLOWER then
|
||||
if $data[0][2] == leader then
|
||||
if $data[1][2] != follower then
|
||||
goto check_mnode_ready_3
|
||||
endi
|
||||
if $data[2][2] != FOLLOWER then
|
||||
if $data[2][2] != follower then
|
||||
goto check_mnode_ready_3
|
||||
endi
|
||||
endi
|
||||
if $data[1][2] == LEADER then
|
||||
if $data[0][2] != FOLLOWER then
|
||||
if $data[1][2] == leader then
|
||||
if $data[0][2] != follower then
|
||||
goto check_mnode_ready_3
|
||||
endi
|
||||
if $data[2][2] != FOLLOWER then
|
||||
if $data[2][2] != follower then
|
||||
goto check_mnode_ready_3
|
||||
endi
|
||||
endi
|
||||
if $data[2][2] == LEADER then
|
||||
if $data[1][2] != FOLLOWER then
|
||||
if $data[2][2] == leader then
|
||||
if $data[1][2] != follower then
|
||||
goto check_mnode_ready_3
|
||||
endi
|
||||
if $data[0][2] != FOLLOWER then
|
||||
if $data[0][2] != follower then
|
||||
goto check_mnode_ready_3
|
||||
endi
|
||||
endi
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
system sh/stop_dnodes.sh
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
system sh/deploy.sh -n dnode2 -i 2
|
||||
system sh/cfg.sh -n dnode1 -c debugflag -v 131
|
||||
system sh/exec.sh -n dnode1 -s start -v
|
||||
system sh/exec.sh -n dnode2 -s start -v
|
||||
sql connect
|
||||
|
||||
print =============== add dnode2 into cluster
|
||||
sql create dnode $hostname port 7200
|
||||
|
||||
print =============== step1: create drop show dnodes
|
||||
$x = 0
|
||||
step1:
|
||||
$x = $x + 1
|
||||
|
@ -18,135 +15,59 @@ step1:
|
|||
endi
|
||||
sql show dnodes
|
||||
print ---> $data00 $data01 $data02 $data03 $data04 $data05
|
||||
print ---> $data10 $data11 $data12 $data13 $data14 $data15
|
||||
if $rows != 2 then
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
if $data(1)[4] != ready then
|
||||
goto step1
|
||||
endi
|
||||
if $data(2)[4] != ready then
|
||||
goto step1
|
||||
endi
|
||||
|
||||
print =============== create database, stable, table
|
||||
sql create database db vgroups 3
|
||||
sql use db
|
||||
sql create table stb (ts timestamp, c int) tags (t int)
|
||||
sql create table t0 using stb tags (0)
|
||||
sql create table tba (ts timestamp, c1 binary(10), c2 nchar(10));
|
||||
|
||||
print =============== run show xxxx
|
||||
sql show dnodes
|
||||
if $rows != 2 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print =============== step2: create db
|
||||
sql create database d1 vgroups 2 buffer 3
|
||||
sql show databases
|
||||
if $rows != 3 then
|
||||
return -1
|
||||
endi
|
||||
sql use d1
|
||||
sql show vgroups
|
||||
|
||||
print =============== step3: create show stable
|
||||
sql create table if not exists stb (ts timestamp, c1 int, c2 float, c3 double) tags (t1 int unsigned)
|
||||
sql show stables
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print =============== step4: create show table
|
||||
sql create table ct1 using stb tags(1000)
|
||||
sql create table ct2 using stb tags(2000)
|
||||
sql create table ct3 using stb tags(3000)
|
||||
sql show tables
|
||||
if $rows != 2 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql show users
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql show vgroups
|
||||
if $rows != 3 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print =============== run select * from information_schema.xxxx
|
||||
sql select * from information_schema.`dnodes`
|
||||
if $rows != 2 then
|
||||
return -1
|
||||
endi
|
||||
print =============== step5: insert data
|
||||
sql insert into ct1 values(now+0d, 10, 2.0, 3.0)
|
||||
sql insert into ct1 values(now+1d, 11, 2.1, 3.1)(now+2d, -12, -2.2, -3.2)(now+3d, -13, -2.3, -3.3)
|
||||
sql insert into ct2 values(now+0d, 10, 2.0, 3.0)
|
||||
sql insert into ct2 values(now+1d, 11, 2.1, 3.1)(now+2d, -12, -2.2, -3.2)(now+3d, -13, -2.3, -3.3)
|
||||
sql insert into ct3 values('2022-01-01 00:00:00.000', 10, 2.0, 3.0)
|
||||
|
||||
sql select * from information_schema.`mnodes`
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
print =============== step6: query data
|
||||
sql select * from ct1 where ts < now -1d and ts > now +1d
|
||||
sql select * from stb where ts < now -1d and ts > now +1d
|
||||
sql select * from ct1 where ts < now -1d and ts > now +1d order by ts desc
|
||||
sql select * from stb where ts < now -1d and ts > now +1d order by ts desc
|
||||
|
||||
sql select * from information_schema.user_databases
|
||||
if $rows != 3 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql select * from information_schema.user_stables
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql select * from information_schema.user_tables
|
||||
if $rows != 31 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql select * from information_schema.user_users
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql select * from information_schema.`vgroups`
|
||||
if $rows != 3 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql show variables;
|
||||
if $rows != 4 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql show dnode 1 variables;
|
||||
if $rows <= 0 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql show local variables;
|
||||
if $rows <= 0 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print ==== stop dnode1 and dnode2, and restart dnodes
|
||||
_OVER:
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec.sh -n dnode2 -s stop -x SIGINT
|
||||
print =============== check
|
||||
$null=
|
||||
|
||||
print =============== check dnode1
|
||||
system_content sh/checkValgrind.sh -n dnode1
|
||||
print cmd return result ----> [ $system_content ]
|
||||
if $system_content <= 0 then
|
||||
return 0
|
||||
if $system_content > 1 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
$null=
|
||||
if $system_content == $null then
|
||||
return 0
|
||||
endi
|
||||
|
||||
print =============== check dnode2
|
||||
system_content sh/checkValgrind.sh -n dnode2
|
||||
print cmd return result ----> [ $system_content ]
|
||||
if $system_content <= 0 then
|
||||
return 0
|
||||
endi
|
||||
|
||||
$null=
|
||||
if $system_content == $null then
|
||||
return 0
|
||||
return -1
|
||||
endi
|
||||
|
|
|
@ -23,7 +23,7 @@ if $data(1)[4] != ready then
|
|||
endi
|
||||
|
||||
print =============== step2: create db
|
||||
sql create database d1 vgroups 1 buffer 3
|
||||
sql create database d1 vgroups 2 buffer 3
|
||||
sql show databases
|
||||
sql use d1
|
||||
sql show vgroups
|
||||
|
@ -44,24 +44,32 @@ if $rows != 3 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
print =============== step5: insert data
|
||||
print =============== step5: insert data (null / update)
|
||||
sql insert into ct1 values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into ct1 values(now+1s, 11, 2.1, 3.1)(now+2s, -12, -2.2, -3.2)(now+3s, -13, -2.3, -3.3)
|
||||
sql insert into ct1 values(now+1s, 11, 2.1, NULL)(now+2s, -12, -2.2, -3.2)(now+3s, -13, -2.3, -3.3)
|
||||
sql insert into ct2 values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into ct2 values(now+1s, 11, 2.1, 3.1)(now+2s, -12, -2.2, -3.2)(now+3s, -13, -2.3, -3.3)
|
||||
sql insert into ct3 values('2021-01-01 00:00:00.000', 10, 2.0, 3.0)
|
||||
sql insert into ct3 values('2021-01-01 00:00:00.000', NULL, NULL, 3.0)
|
||||
sql insert into ct3 values('2022-03-02 16:59:00.010', 3 , 4, 5), ('2022-03-02 16:59:00.010', 33 , 4, 5), ('2022-04-01 16:59:00.011', 4, 4, 5), ('2022-04-01 16:59:00.011', 6, 4, 5), ('2022-03-06 16:59:00.013', 8, 4, 5);
|
||||
sql insert into ct3 values('2022-03-02 16:59:00.010', 103, 1, 2), ('2022-03-02 16:59:00.010', 303, 3, 4), ('2022-04-01 16:59:00.011', 40, 5, 6), ('2022-04-01 16:59:00.011', 60, 4, 5), ('2022-03-06 16:59:00.013', 80, 4, 5);
|
||||
|
||||
print =============== step6: query data
|
||||
sql select * from ct1
|
||||
sql select * from stb
|
||||
sql select c1, c2, c3 from ct1
|
||||
sql select ts, c1, c2, c3 from stb
|
||||
sql select * from ct1 where ts < now -1d and ts > now +1d
|
||||
sql select * from stb where ts < now -1d and ts > now +1d
|
||||
#sql select * from ct1 where ts < now -1d and ts > now +1d order by ts desc
|
||||
#sql select * from stb where ts < now -1d and ts > now +1d order by ts desc
|
||||
|
||||
print =============== step7: count
|
||||
sql select count(*) from ct1;
|
||||
sql select count(*) from stb;
|
||||
sql select count(ts), count(c1), count(c2), count(c3) from ct1
|
||||
sql select count(ts), count(c1), count(c2), count(c3) from stb
|
||||
sql select count(*) from ct1 where ts < now -1d and ts > now +1d
|
||||
sql select count(*) from stb where ts < now -1d and ts > now +1d
|
||||
|
||||
print =============== step8: func
|
||||
sql select first(ts), first(c1), first(c2), first(c3) from ct1
|
||||
|
@ -69,6 +77,20 @@ sql select min(c1), min(c2), min(c3) from ct1
|
|||
sql select max(c1), max(c2), max(c3) from ct1
|
||||
sql select sum(c1), sum(c2), sum(c3) from ct1
|
||||
|
||||
print =============== step9: insert select
|
||||
#sql create table ct4 using stb tags(4000);
|
||||
#sql insert into ct4 select * from ct1;
|
||||
#sql select * from ct4;
|
||||
#sql insert into ct4 select ts,c1,c2,c3 from stb;
|
||||
|
||||
#sql create table tb1 (ts timestamp, c1 int, c2 float, c3 double);
|
||||
#sql insert into tb1 (ts, c1, c2, c3) select * from ct1;
|
||||
#sql select * from tb1;
|
||||
|
||||
#sql create table tb2 (ts timestamp, f1 binary(10), c1 int, c2 double);
|
||||
#sql insert into tb2 (c2, c1, ts) select c2+1, c1, ts+3 from ct2;
|
||||
#sql select * from tb2;
|
||||
|
||||
_OVER:
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
||||
print =============== check
|
||||
|
|
|
@ -36,22 +36,31 @@ class TDTestCase:
|
|||
|
||||
def illegal_params(self):
|
||||
|
||||
illegal_params = ["1","0","NULL","None","False","True" ,"keep","now" ,"*" , "," ,"_" , "abc" ,"keep"]
|
||||
illegal_params = ["1","0","NULL","False","True" ,"keep","now" ,"*" , "," ,"_" , "abc" ,"keep"]
|
||||
|
||||
for value in illegal_params:
|
||||
|
||||
tdSql.error("create database testdb replica 1 cachelast '%s' " %value)
|
||||
tdSql.error("create database testdb replica 1 cachemodel '%s' " %value)
|
||||
|
||||
unexpected_numbers = [-1 , 0.0 , 3.0 , 4, 10 , 100]
|
||||
|
||||
for number in unexpected_numbers:
|
||||
tdSql.error("create database testdb replica 1 cachelast %s " %number)
|
||||
tdSql.error("create database testdb replica 1 cachemodel %s " %number)
|
||||
|
||||
def getCacheModelStr(self, value):
|
||||
numbers = {
|
||||
0 : "none",
|
||||
1 : "last_row",
|
||||
2 : "last_value",
|
||||
3 : "both"
|
||||
}
|
||||
return numbers.get(value, 'other')
|
||||
|
||||
def prepare_datas(self):
|
||||
for i in range(4):
|
||||
tdSql.execute("create database test_db_%d replica 1 cachelast %d " %(i,i))
|
||||
tdSql.execute("use test_db_%d"%i)
|
||||
str = self.getCacheModelStr(i)
|
||||
tdSql.execute("create database testdb_%s replica 1 cachemodel '%s' " %(str, str))
|
||||
tdSql.execute("use testdb_%s"%str)
|
||||
tdSql.execute("create stable st(ts timestamp , c1 int ,c2 float ) tags(ind int) ")
|
||||
tdSql.execute("create table tb1 using st tags(1) ")
|
||||
tdSql.execute("create table tb2 using st tags(2) ")
|
||||
|
@ -81,10 +90,10 @@ class TDTestCase:
|
|||
# cache_last_set value
|
||||
for k , v in cache_lasts.items():
|
||||
|
||||
if k.split("_")[-1]==str(v):
|
||||
tdLog.info(" database %s cache_last value check pass, value is %d "%(k,v) )
|
||||
if k=="testdb_"+str(v):
|
||||
tdLog.info(" database %s cache_last value check pass, value is %s "%(k,v) )
|
||||
else:
|
||||
tdLog.exit(" database %s cache_last value check fail, value is %d "%(k,v) )
|
||||
tdLog.exit(" database %s cache_last value check fail, value is %s "%(k,v) )
|
||||
|
||||
# # check storage layer implementation
|
||||
|
||||
|
@ -132,13 +141,10 @@ class TDTestCase:
|
|||
|
||||
|
||||
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
||||
|
||||
|
||||
self.illegal_params()
|
||||
self.prepare_datas()
|
||||
self.check_cache_last_sets()
|
||||
self.restart_check_cache_last_sets()
|
||||
|
||||
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
import taos
|
||||
import sys
|
||||
import datetime
|
||||
import inspect
|
||||
|
||||
from util.log import *
|
||||
from util.sql import *
|
||||
from util.cases import *
|
||||
import random
|
||||
|
||||
|
||||
class TDTestCase:
|
||||
updatecfgDict = {'debugFlag': 143, "cDebugFlag": 143, "uDebugFlag": 143, "rpcDebugFlag": 143, "tmrDebugFlag": 143,
|
||||
"jniDebugFlag": 143, "simDebugFlag": 143, "dDebugFlag": 143, "dDebugFlag": 143, "vDebugFlag": 143, "mDebugFlag": 143, "qDebugFlag": 143,
|
||||
"wDebugFlag": 143, "sDebugFlag": 143, "tsdbDebugFlag": 143, "tqDebugFlag": 143, "fsDebugFlag": 143, "udfDebugFlag": 143}
|
||||
|
||||
def init(self, conn, logSql):
|
||||
tdLog.debug(f"start to excute {__file__}")
|
||||
tdSql.init(conn.cursor(), False)
|
||||
|
||||
def case1(self):
|
||||
tdSql.execute("create database if not exists dbms precision 'ms'")
|
||||
tdSql.execute("create database if not exists dbus precision 'us'")
|
||||
tdSql.execute("create database if not exists dbns precision 'ns'")
|
||||
|
||||
tdSql.execute("create table dbms.ntb (ts timestamp, c1 int, c2 bigint)")
|
||||
tdSql.execute("create table dbus.ntb (ts timestamp, c1 int, c2 bigint)")
|
||||
tdSql.execute("create table dbns.ntb (ts timestamp, c1 int, c2 bigint)")
|
||||
|
||||
tdSql.execute("insert into dbms.ntb values ('2022-01-01 08:00:00.001', 1, 2)")
|
||||
tdSql.execute("insert into dbms.ntb values ('2022-01-01 08:00:00.002', 3, 4)")
|
||||
|
||||
tdSql.execute("insert into dbus.ntb values ('2022-01-01 08:00:00.000001', 1, 2)")
|
||||
tdSql.execute("insert into dbus.ntb values ('2022-01-01 08:00:00.000002', 3, 4)")
|
||||
|
||||
tdSql.execute("insert into dbns.ntb values ('2022-01-01 08:00:00.000000001', 1, 2)")
|
||||
tdSql.execute("insert into dbns.ntb values ('2022-01-01 08:00:00.000000002', 3, 4)")
|
||||
|
||||
tdSql.query("select count(c1) from dbms.ntb interval(1a)")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
tdSql.query("select count(c1) from dbus.ntb interval(1u)")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
tdSql.query("select count(c1) from dbns.ntb interval(1b)")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
||||
tdSql.prepare()
|
||||
|
||||
tdLog.printNoPrefix("==========start case1 run ...............")
|
||||
|
||||
self.case1()
|
||||
|
||||
tdLog.printNoPrefix("==========end case1 run ...............")
|
||||
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
tdLog.success(f"{__file__} successfully executed")
|
||||
|
||||
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
|
@ -25,7 +25,7 @@ class TDTestCase:
|
|||
def insert_datas_and_check_abs(self ,tbnums , rownums , time_step ):
|
||||
tdLog.info(" prepare datas for auto check abs function ")
|
||||
|
||||
tdSql.execute(" create database test cachelast 1 ")
|
||||
tdSql.execute(" create database test cachemodel 'last_row' ")
|
||||
tdSql.execute(" use test ")
|
||||
tdSql.execute(" create stable stb (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint,\
|
||||
c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) tags (t1 int)")
|
||||
|
@ -63,7 +63,7 @@ class TDTestCase:
|
|||
|
||||
|
||||
def prepare_datas(self):
|
||||
tdSql.execute("create database if not exists db keep 3650 duration 1000 cachelast 1")
|
||||
tdSql.execute("create database if not exists db keep 3650 duration 1000 cachemodel 'last_row'")
|
||||
tdSql.execute("use db")
|
||||
tdSql.execute(
|
||||
'''create table stb1
|
||||
|
@ -124,7 +124,7 @@ class TDTestCase:
|
|||
def prepare_tag_datas(self):
|
||||
# prepare datas
|
||||
tdSql.execute(
|
||||
"create database if not exists testdb keep 3650 duration 1000 cachelast 1")
|
||||
"create database if not exists testdb keep 3650 duration 1000 cachemodel 'last_row'")
|
||||
tdSql.execute(" use testdb ")
|
||||
|
||||
tdSql.execute(f" create stable stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp , uc1 int unsigned,\
|
||||
|
@ -528,7 +528,7 @@ class TDTestCase:
|
|||
def check_boundary_values(self):
|
||||
|
||||
tdSql.execute("drop database if exists bound_test")
|
||||
tdSql.execute("create database if not exists bound_test cachelast 2")
|
||||
tdSql.execute("create database if not exists bound_test cachemodel 'last_value'")
|
||||
time.sleep(3)
|
||||
tdSql.execute("use bound_test")
|
||||
tdSql.execute(
|
||||
|
|
|
@ -392,6 +392,31 @@ class TDTestCase:
|
|||
tdSql.query("select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000;")
|
||||
assert unionallQnode==tdSql.queryResult
|
||||
|
||||
queryPolicy=1
|
||||
|
||||
tdSql.execute('alter local "queryPolicy" "%d"'%queryPolicy)
|
||||
tdSql.query("show local variables;")
|
||||
for i in range(tdSql.queryRows):
|
||||
if tdSql.queryResult[i][0] == "queryPolicy" :
|
||||
if int(tdSql.queryResult[i][1]) == int(queryPolicy):
|
||||
tdLog.success('alter queryPolicy to %d successfully'%queryPolicy)
|
||||
else :
|
||||
tdLog.debug(tdSql.queryResult)
|
||||
tdLog.exit("alter queryPolicy to %d failed"%queryPolicy)
|
||||
tdSql.execute("reset query cache")
|
||||
|
||||
tdSql.execute("use db1;")
|
||||
tdSql.query("show dnodes;")
|
||||
dnodeId=tdSql.getData(0,0)
|
||||
tdSql.query("select max(c1) from stb10;")
|
||||
assert maxQnode==tdSql.getData(0,0)
|
||||
tdSql.query("select min(c1) from stb11;")
|
||||
assert minQnode==tdSql.getData(0,0)
|
||||
tdSql.query("select c0,c1 from stb11_1 where (c0>1000) union select c0,c1 from stb11_1 where c0>2000;")
|
||||
assert unionQnode==tdSql.queryResult
|
||||
tdSql.query("select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000;")
|
||||
assert unionallQnode==tdSql.queryResult
|
||||
|
||||
# test case : queryPolicy = 2
|
||||
def test_case2(self):
|
||||
self.taosBenchCreate("127.0.0.1","no","db1", "stb1", 10, 2, 1*10)
|
||||
|
|
|
@ -40,9 +40,9 @@ class TDTestCase:
|
|||
f"insert into rct{j} values ( {ts+i*10000}, {80+i}, {90+i}, {85+i}, {30+i*10}, {1.2*i}, {221+i*2}, {20+i*0.2}, {1500+i*20}, {150+i*2},{5+i} )"
|
||||
)
|
||||
tdSql.execute(
|
||||
f"insert into dct{j} values ( {ts+i*10000}, {1+i*0.1},{1400+i*15}, {1+i},{1500+i*20}, {150+i*2},{5+i} )"
|
||||
f"insert into dct{j} values ( {ts+i*10000}, {1+i*0.1},{1400+i*15}, {i},{1500+i*20}, {150+i*2},{5+i} )"
|
||||
)
|
||||
|
||||
tdSql.execute("insert into dct9 (ts,fuel_state) values('2021-07-13 14:06:33.123Z',1.2) ;")
|
||||
# def check_avg(self ,origin_query , check_query):
|
||||
# avg_result = tdSql.getResult(origin_query)
|
||||
# origin_result = tdSql.getResult(check_query)
|
||||
|
@ -60,13 +60,15 @@ class TDTestCase:
|
|||
|
||||
|
||||
def tsbsIotQuery(self):
|
||||
|
||||
tdSql.execute("use db_tsbs")
|
||||
|
||||
# test interval and partition
|
||||
tdSql.query(" SELECT avg(velocity) as mean_velocity ,name,driver,fleet FROM readings WHERE ts > 1451606400000 AND ts <= 1451606460000 partition BY name,driver,fleet; ")
|
||||
print(tdSql.queryResult)
|
||||
parRows=tdSql.queryRows
|
||||
tdSql.query(" SELECT avg(velocity) as mean_velocity ,name,driver,fleet FROM readings WHERE ts > 1451606400000 AND ts <= 1451606460000 partition BY name,driver,fleet interval(10m); ")
|
||||
# tdSql.checkRows(parRows)
|
||||
tdSql.checkRows(parRows)
|
||||
|
||||
|
||||
# test insert into
|
||||
|
@ -77,18 +79,53 @@ class TDTestCase:
|
|||
|
||||
|
||||
# test paitition interval fill
|
||||
# tdSql.query("SELECT name,floor(avg(velocity)/10)/floor(avg(velocity)/10) AS mv FROM readings WHERE name!='' AND ts > '2016-01-01T00:00:00Z' AND ts < '2016-01-05T00:00:01Z' partition by name interval(10m) fill(value,0) ;")
|
||||
tdSql.query("SELECT name,floor(avg(velocity)/10)/floor(avg(velocity)/10) AS mv FROM readings WHERE name!='' AND ts > '2016-01-01T00:00:00Z' AND ts < '2016-01-05T00:00:01Z' partition by name interval(10m) fill(value,0) ;")
|
||||
|
||||
|
||||
# # test partition interval limit
|
||||
# tdSql.query("SELECT ts,model,floor(2*(sum(nzs)/count(nzs)))/floor(2*(sum(nzs)/count(nzs))) AS broken_down FROM (SELECT ts,model, status/status AS nzs FROM diagnostics WHERE ts >= '2016-01-01T00:00:00Z' AND ts < '2016-01-05T00:00:01Z' ) WHERE ts >= '2016-01-01T00:00:00Z' AND ts < '2016-01-05T00:00:01Z' partition BY model,ts interval(10m) limit 10;")
|
||||
# test partition interval limit (PRcore-TD-17410)
|
||||
# tdSql.query("select name,driver from (SELECT name,driver,fleet ,avg(velocity) as mean_velocity FROM readings partition BY name,driver,fleet interval (10m) limit 1);")
|
||||
# tdSql.checkRows(10)
|
||||
|
||||
# test partition interval Pseudo time-column
|
||||
tdSql.query("SELECT count(ms1)/144 FROM (SELECT _wstart as ts1,model, fleet,avg(status) AS ms1 FROM diagnostics WHERE ts >= '2016-01-01T00:00:00Z' AND ts < '2016-01-05T00:00:01Z' partition by model, fleet interval(10m)) WHERE ts1 >= '2016-01-01T00:00:00Z' AND ts1 < '2016-01-05T00:00:01Z' AND ms1<1;")
|
||||
|
||||
# 1 high-load:
|
||||
# tdSql.query("SELECT ts,name,driver,current_load,load_capacity FROM (SELECT last(ts) as ts,name,driver, current_load,load_capacity FROM diagnostics WHERE fleet = 'South' partition by name,driver) WHERE current_load>= (0.9 * load_capacity) partition by name ORDER BY name desc, ts DESC;")
|
||||
|
||||
# tdSql.query("SELECT ts,name,driver,current_load,load_capacity FROM (SELECT last(ts) as ts,name,driver, current_load,load_capacity FROM diagnostics WHERE fleet = 'South' partition by name,driver) WHERE current_load>= (0.9 * load_capacity) partition by name ORDER BY name ;")
|
||||
|
||||
# 2 stationary-trucks
|
||||
tdSql.query("select name,driver from (SELECT name,driver,fleet ,avg(velocity) as mean_velocity FROM readings WHERE ts > '2016-01-01T15:07:21Z' AND ts <= '2016-01-01T16:17:21Z' partition BY name,driver,fleet interval(10m) LIMIT 1)")
|
||||
tdSql.query("select name,driver from (SELECT name,driver,fleet ,avg(velocity) as mean_velocity FROM readings WHERE ts > '2016-01-01T15:07:21Z' AND ts <= '2016-01-01T16:17:21Z' partition BY name,driver,fleet interval(10m) LIMIT 1) WHERE fleet = 'West' AND mean_velocity < 1000 partition BY name")
|
||||
|
||||
# 3 long-driving-sessions
|
||||
# tdSql.query("SELECT name,driver FROM(SELECT name,driver,count(*) AS ten_min FROM(SELECT _wstart as ts,name,driver,avg(velocity) as mean_velocity FROM readings where ts > '2016-01-01T00:00:34Z' AND ts <= '2016-01-01T04:00:34Z' partition BY name,driver interval(10m)) WHERE mean_velocity > 1 GROUP BY name,driver) WHERE ten_min > 22 ;")
|
||||
|
||||
|
||||
#4 long-daily-sessions
|
||||
tdSql.query("SELECT name,driver FROM(SELECT name,driver,count(*) AS ten_min FROM(SELECT name,driver,avg(velocity) as mean_velocity FROM readings WHERE fleet ='West' AND ts > '2016-01-01T12:31:37Z' AND ts <= '2016-01-05T12:31:37Z' partition BY name,driver interval(10m) ) WHERE mean_velocity > 1 GROUP BY name,driver) WHERE ten_min > 60")
|
||||
|
||||
# 5. avg-daily-driving-duration
|
||||
tdSql.query("select _wstart as ts,fleet,name,driver,count(mv)/6 as hours_driven from ( select _wstart as ts,fleet,name,driver,avg(velocity) as mv from readings where ts > '2016-01-01T00:00:00Z' and ts < '2016-01-05T00:00:01Z' partition by fleet,name,driver interval(10m)) where ts > '2016-01-01T00:00:00Z' and ts < '2016-01-05T00:00:01Z' partition by fleet,name,driver interval(1d) ;")
|
||||
|
||||
|
||||
# 6. avg-daily-driving-session
|
||||
#taosc core dumped
|
||||
tdSql.execute("create table random_measure2_1 (ts timestamp,ela float, name binary(40))")
|
||||
tdSql.query("SELECT ts,diff(mv) AS difka FROM (SELECT ts,name,floor(avg(velocity)/10)/floor(avg(velocity)/10) AS mv FROM readings WHERE name!='' AND ts > '2016-01-01T00:00:00Z' AND ts < '2016-01-05T00:00:01Z' partition by name,ts interval(10m) fill(value,0)) GROUP BY name,ts;")
|
||||
tdSql.query("SELECT _wstart,name,floor(avg(velocity)/10)/floor(avg(velocity)/10) AS mv FROM readings WHERE name!='' AND ts > '2016-01-01T00:00:00Z' AND ts < '2016-01-05T00:00:01Z' partition by name interval(10m) fill(value,0)")
|
||||
|
||||
# 7. avg-load
|
||||
tdSql.query("SELECT fleet, model,avg(ml) AS mean_load_percentage FROM (SELECT fleet, model,current_load/load_capacity AS ml FROM diagnostics partition BY name, fleet, model) partition BY fleet, model order by fleet ;")
|
||||
|
||||
# 8. daily-activity
|
||||
tdSql.query(" SELECT model,ms1 FROM (SELECT _wstart as ts1,model, fleet,avg(status) AS ms1 FROM diagnostics WHERE ts >= '2016-01-01T00:00:00Z' AND ts < '2016-01-05T00:00:01Z' partition by model, fleet interval(10m) fill(value,0)) WHERE ts1 >= '2016-01-01T00:00:00Z' AND ts1 < '2016-01-05T00:00:01Z' AND ms1<1;")
|
||||
tdSql.query("SELECT _wstart,model,fleet,count(ms1)/144 FROM (SELECT _wstart as ts1,model, fleet,avg(status) AS ms1 FROM diagnostics WHERE ts >= '2016-01-01T00:00:00Z' AND ts < '2016-01-05T00:00:01Z' partition by model, fleet interval(10m) fill(value,0)) WHERE ts1 >= '2016-01-01T00:00:00Z' AND ts1 < '2016-01-05T00:00:01Z' AND ms1<1 partition by model, fleet interval(1d) ;")
|
||||
|
||||
#it's already supported:
|
||||
# last-loc
|
||||
tdSql.query("")
|
||||
|
||||
# test
|
||||
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
||||
tdLog.printNoPrefix("==========step1:create database and table,insert data ==============")
|
||||
self.prepareData()
|
||||
|
|
|
@ -122,9 +122,9 @@ class TDTestCase:
|
|||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( {i+1} )')
|
||||
|
||||
tdSql.query('show databases;')
|
||||
tdSql.checkData(2,5,'no_strict')
|
||||
tdSql.error('alter database db strict 0')
|
||||
# tdSql.execute('alter database db strict 1')
|
||||
tdSql.checkData(2,5,'off')
|
||||
tdSql.error("alter database db strict 'off'")
|
||||
# tdSql.execute('alter database db strict 'on'')
|
||||
# tdSql.query('show databases;')
|
||||
# tdSql.checkData(2,5,'strict')
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ python3 ./test.py -f 1-insert/block_wise.py
|
|||
python3 ./test.py -f 1-insert/create_retentions.py
|
||||
python3 ./test.py -f 1-insert/table_param_ttl.py
|
||||
|
||||
python3 ./test.py -f 2-query/db.py
|
||||
python3 ./test.py -f 2-query/between.py
|
||||
python3 ./test.py -f 2-query/distinct.py
|
||||
python3 ./test.py -f 2-query/varchar.py
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit d807c3ffa6f750f7765e102917d1328cadf21c13
|
||||
Subproject commit bd496f76b64931c66da2f8b0f24143a98a881cde
|
|
@ -1 +1 @@
|
|||
Subproject commit c5fded266d3b10508e38bf3285bb7ecf798bc343
|
||||
Subproject commit 7a94ffab45f08e16f09b3f430fe75d717054adb6
|
Loading…
Reference in New Issue