Merge branch 'develop' into feature/crash_gen
This commit is contained in:
commit
e602795982
31
.travis.yml
31
.travis.yml
|
@ -59,17 +59,30 @@ matrix:
|
|||
GREEN_UNDERLINE='\033[4;32m'
|
||||
NC='\033[0m'
|
||||
|
||||
tail -10 mem-error-out.txt
|
||||
defiMemError=`grep -m 1 'definitely lost' mem-error-out.txt | awk '{print $7}'`
|
||||
memError=`grep -m 1 'ERROR SUMMARY' mem-error-out.txt | awk '{print $4}'`
|
||||
grep 'ERROR SUMMARY' mem-error-out.txt | uniq | tee uniq-mem-error-out.txt
|
||||
|
||||
if [ -n "$memError" ]; then
|
||||
if [ "$memError" -gt 16 ] || [ "$defiMemError" -gt 0 ]; then
|
||||
echo -e "${RED} ## Memory errors number valgrind reports is $memError.\
|
||||
Definitely lost is $defiMemError. More than our threshold! ## ${NC}"
|
||||
travis_terminate $memError
|
||||
for memError in `cat uniq-mem-error-out.txt | awk '{print $4}'`
|
||||
do
|
||||
if [ -n "$memError" ]; then
|
||||
if [ "$memError" -gt 16 ]; then
|
||||
echo -e "${RED} ## Memory errors number valgrind reports is $memError.\
|
||||
More than our threshold! ## ${NC}"
|
||||
travis_terminate $memError
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
grep 'definitely lost' mem-error-out.txt | uniq | tee uniq-definitely-lost-out.txt
|
||||
for defiMemError in `cat uniq-definitely-lost-out.txt | awk '{print $7}'`
|
||||
do
|
||||
if [ -n "$defiMemError" ]; then
|
||||
if [ "$defiMemError" -gt 16 ]; then
|
||||
echo -e "${RED} ## Memory errors number valgrind reports \
|
||||
Definitely lost is $defiMemError. More than our threshold! ## ${NC}"
|
||||
travis_terminate $defiMemError
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
;;
|
||||
esac
|
||||
|
|
245
README.md
245
README.md
|
@ -115,6 +115,251 @@ TDengine provides abundant developing tools for users to develop on TDengine. Fo
|
|||
- [RESTful API](https://www.taosdata.com/en/documentation/connector/#RESTful-Connector)
|
||||
- [Node.js](https://www.taosdata.com/en/documentation/connector/#Node.js-Connector)
|
||||
|
||||
# How to run the test cases and how to add a new test case?
|
||||
|
||||
### Prepare development environment
|
||||
|
||||
1. sudo apt install
|
||||
build-essential cmake net-tools python-pip python-setuptools python3-pip
|
||||
python3-setuptools valgrind
|
||||
|
||||
2. git clone <https://github.com/taosdata/TDengine>; cd TDengine
|
||||
|
||||
3. mkdir debug; cd debug; cmake ..; make ; sudo make install
|
||||
|
||||
4. pip install src/connector/python/linux/python2 ; pip3 install
|
||||
src/connector/python/linux/python3
|
||||
|
||||
### How to run TSIM test suite
|
||||
|
||||
1. cd \<TDengine\>/tests/script
|
||||
|
||||
2. sudo ./test.sh
|
||||
|
||||
### How to run Python test suite
|
||||
|
||||
1. cd \<TDengine\>/tests/pytest
|
||||
|
||||
2. ./smoketest.sh \# for smoke test
|
||||
|
||||
3. ./smoketest.sh -g \# for memory leak detection test with valgrind
|
||||
|
||||
4. ./fulltest.sh \# for full test
|
||||
|
||||
> Note1: TDengine daemon's configuration and data files are stored in
|
||||
> \<TDengine\>/sim directory. As a historical design, it's same place with
|
||||
> TSIM script. So after the TSIM script ran with sudo privilege, the directory
|
||||
> has been used by TSIM then the python script cannot write it by a normal
|
||||
> user. You need to remove the directory completely first before running the
|
||||
> Python test case. We should consider using two different locations to store
|
||||
> for TSIM and Python script.
|
||||
|
||||
> Note2: if you need to debug crash problem with a core dump, you need
|
||||
> manually edit smoketest.sh or fulltest.sh to add "ulimit -c unlimited"
|
||||
> before the script line. Then you can look for the core file in
|
||||
> \<TDengine\>/tests/pytest after the program crash.
|
||||
|
||||
### How to add a new test case
|
||||
|
||||
**1. add a new TSIM test cases:**
|
||||
|
||||
TSIM test cases are now included in the new development branch and can be
|
||||
added to the TDengine/tests/script/test.sh script based on the manual test
|
||||
methods necessary to add test cases as described above.
|
||||
|
||||
**2. add a new Python test cases:**
|
||||
|
||||
**2.1 Please refer to \<TDengine\>/tests/pytest/insert/basic.py to add a new
|
||||
test case.** The new test case must implement 3 functions, where self.init()
|
||||
and self.stop() simply copy the contents of insert/basic.py and the test
|
||||
logic is implemented in self.run(). You can refer to the code in the util
|
||||
directory for more information.
|
||||
|
||||
**2.2 Edit smoketest.sh to add the path and filename of the new test case**
|
||||
|
||||
Note: The Python test framework may continue to be improved in the future,
|
||||
hopefully, to provide more functionality and ease of writing test cases. The
|
||||
method of writing the test case above does not exclude that it will also be
|
||||
affected.
|
||||
|
||||
**2.3 What test.py does in detail:**
|
||||
|
||||
test.py is the entry program for test case execution and monitoring.
|
||||
|
||||
test.py has the following functions.
|
||||
|
||||
\-f --file, Specifies the test case file name to be executed
|
||||
-p --path, Specifies deployment path
|
||||
|
||||
\-m --master, Specifies the master server IP for cluster deployment
|
||||
-c--cluster, test cluster function
|
||||
-s--stop, terminates all running nodes
|
||||
|
||||
\-g--valgrind, load valgrind for memory leak detection test
|
||||
|
||||
\-h--help, display help
|
||||
|
||||
**2.4 What util/log.py does in detail:**
|
||||
|
||||
log.py is quite simple, the main thing is that you can print the output in
|
||||
different colors as needed. The success() should be called for successful
|
||||
test case execution and the success() will print green text. The exit() will
|
||||
print red text and exit the program, exit() should be called for test
|
||||
failure.
|
||||
|
||||
**util/log.py**
|
||||
|
||||
...
|
||||
|
||||
def info(self, info):
|
||||
|
||||
printf("%s %s" % (datetime.datetime.now(), info))
|
||||
|
||||
|
||||
|
||||
def sleep(self, sec):
|
||||
|
||||
printf("%s sleep %d seconds" % (datetime.datetime.now(), sec))
|
||||
|
||||
time.sleep(sec)
|
||||
|
||||
|
||||
|
||||
def debug(self, err):
|
||||
|
||||
printf("\\033[1;36m%s %s\\033[0m" % (datetime.datetime.now(), err))
|
||||
|
||||
|
||||
|
||||
def success(self, info):
|
||||
|
||||
printf("\\033[1;32m%s %s\\033[0m" % (datetime.datetime.now(), info))
|
||||
|
||||
|
||||
|
||||
def notice(self, err):
|
||||
|
||||
printf("\\033[1;33m%s %s\\033[0m" % (datetime.datetime.now(), err))
|
||||
|
||||
|
||||
|
||||
def exit(self, err):
|
||||
|
||||
printf("\\033[1;31m%s %s\\033[0m" % (datetime.datetime.now(), err))
|
||||
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
|
||||
def printNoPrefix(self, info):
|
||||
|
||||
printf("\\033[1;36m%s\\033[0m" % (info)
|
||||
|
||||
...
|
||||
|
||||
**2.5 What util/sql.py does in detail:**
|
||||
|
||||
SQL.py is mainly used to execute SQL statements to manipulate the database,
|
||||
and the code is extracted and commented as follows:
|
||||
|
||||
**util/sql.py**
|
||||
|
||||
\# prepare() is mainly used to set up the environment for testing table and
|
||||
data, and to set up the database db for testing. do not call prepare() if you
|
||||
need to test the database operation command.
|
||||
|
||||
def prepare(self):
|
||||
|
||||
tdLog.info("prepare database:db")
|
||||
|
||||
self.cursor.execute('reset query cache')
|
||||
|
||||
self.cursor.execute('drop database if exists db')
|
||||
|
||||
self.cursor.execute('create database db')
|
||||
|
||||
self.cursor.execute('use db')
|
||||
|
||||
...
|
||||
|
||||
\# query() is mainly used to execute select statements for normal syntax input
|
||||
|
||||
def query(self, sql):
|
||||
|
||||
...
|
||||
|
||||
\# error() is mainly used to execute the select statement with the wrong syntax
|
||||
input, the error will be caught as a reasonable behavior, if not caught it will
|
||||
prove that the test failed
|
||||
|
||||
def error()
|
||||
|
||||
...
|
||||
|
||||
\# checkRows() is used to check the number of returned lines after calling
|
||||
query(select ...) after calling the query(select ...) to check the number of
|
||||
rows of returned results.
|
||||
|
||||
def checkRows(self, expectRows):
|
||||
|
||||
...
|
||||
|
||||
\# checkData() is used to check the returned result data after calling
|
||||
query(select ...) after the query(select ...) is called, failure to meet
|
||||
expectation is
|
||||
|
||||
def checkData(self, row, col, data):
|
||||
|
||||
...
|
||||
|
||||
\# getData() returns the result data after calling query(select ...) to return
|
||||
the resulting data after calling query(select ...)
|
||||
|
||||
def getData(self, row, col):
|
||||
|
||||
...
|
||||
|
||||
\# execute() used to execute sql and return the number of affected rows
|
||||
|
||||
def execute(self, sql):
|
||||
|
||||
...
|
||||
|
||||
\# executeTimes() Multiple executions of the same sql statement
|
||||
|
||||
def executeTimes(self, sql, times):
|
||||
|
||||
...
|
||||
|
||||
\# CheckAffectedRows() Check if the number of affected rows is as expected
|
||||
|
||||
def checkAffectedRows(self, expectAffectedRows):
|
||||
|
||||
...
|
||||
|
||||
> Note: Both Python2 and Python3 are currently supported by the Python test
|
||||
> case. Since Python2 is no longer officially supported by January 1, 2020, it
|
||||
> is recommended that subsequent test case development be guaranteed to run
|
||||
> correctly on Python3. For Python2, please consider being compatible if
|
||||
> appropriate without additional
|
||||
> burden. <https://nakedsecurity.sophos.com/2020/01/03/python-is-dead-long-live-python/>
|
||||
|
||||
### CI Covenant submission adoption principle.
|
||||
|
||||
- Every commit / PR compilation must pass. Currently, the warning is treated
|
||||
as an error, so the warning must also be resolved.
|
||||
|
||||
- Test cases that already exist must pass.
|
||||
|
||||
- Because CI is very important to support build and automatically test
|
||||
procedure, it is necessary to manually test the test case before adding it
|
||||
and do as many iterations as possible to ensure that the test case provides
|
||||
stable and reliable test results when added.
|
||||
|
||||
> Note: In the future, according to the requirements and test development
|
||||
> progress will add stress testing, performance testing, code style,
|
||||
> and other features based on functional testing.
|
||||
|
||||
### Third Party Connectors
|
||||
|
||||
The TDengine community has also kindly built some of their own connectors! Follow the links below to find the source code for them.
|
||||
|
|
|
@ -280,6 +280,7 @@ typedef struct {
|
|||
SResRec * pGroupRec;
|
||||
char * data;
|
||||
void ** tsrow;
|
||||
int32_t* length; // length for each field for current row
|
||||
char ** buffer; // Buffer used to put multibytes encoded using unicode (wchar_t)
|
||||
SColumnIndex * pColumnIndex;
|
||||
struct SLocalReducer *pLocalReducer;
|
||||
|
@ -421,7 +422,7 @@ int32_t tscInvalidSQLErrMsg(char *msg, const char *additionalInfo, const char *s
|
|||
|
||||
void tscQueueAsyncFreeResult(SSqlObj *pSql);
|
||||
int32_t tscToSQLCmd(SSqlObj *pSql, struct SSqlInfo *pInfo);
|
||||
char * tscGetResultColumnChr(SSqlRes *pRes, SQueryInfo *pQueryInfo, int32_t column, int16_t bytes);
|
||||
void tscGetResultColumnChr(SSqlRes *pRes, SFieldInfo* pFieldInfo, int32_t column);
|
||||
|
||||
extern void * pVnodeConn;
|
||||
extern void * tscCacheHandle;
|
||||
|
|
|
@ -317,7 +317,7 @@ void tscProcessFetchRow(SSchedMsg *pMsg) {
|
|||
SFieldSupInfo* pSup = taosArrayGet(pQueryInfo->fieldsInfo.pSupportInfo, i);
|
||||
|
||||
if (pSup->pSqlExpr != NULL) {
|
||||
pRes->tsrow[i] = tscGetResultColumnChr(pRes, pQueryInfo, i, pSup->pSqlExpr->resBytes);
|
||||
tscGetResultColumnChr(pRes, &pQueryInfo->fieldsInfo, i);
|
||||
} else {
|
||||
// todo add
|
||||
}
|
||||
|
|
|
@ -310,7 +310,7 @@ int32_t tsParseOneColumnData(SSchema *pSchema, SSQLToken *pToken, char *payload,
|
|||
|
||||
*payload = TSDB_DATA_BINARY_NULL;
|
||||
} else { // too long values will return invalid sql, not be truncated automatically
|
||||
if (pToken->n > pSchema->bytes) {
|
||||
if (pToken->n + VARSTR_HEADER_SIZE > pSchema->bytes) { //todo refactor
|
||||
return tscInvalidSQLErrMsg(msg, "string data overflow", pToken->z);
|
||||
}
|
||||
|
||||
|
@ -328,7 +328,7 @@ int32_t tsParseOneColumnData(SSchema *pSchema, SSQLToken *pToken, char *payload,
|
|||
} else {
|
||||
// if the converted output len is over than pColumnModel->bytes, return error: 'Argument list too long'
|
||||
int32_t resLen = -1;
|
||||
if (!taosMbsToUcs4(pToken->z, pToken->n, payload + VARSTR_HEADER_SIZE, pSchema->bytes, &resLen)) {
|
||||
if (!taosMbsToUcs4(pToken->z, pToken->n, payload + VARSTR_HEADER_SIZE, pSchema->bytes - VARSTR_HEADER_SIZE, &resLen)) {
|
||||
char buf[512] = {0};
|
||||
snprintf(buf, 512, "%s", strerror(errno));
|
||||
|
||||
|
|
|
@ -5520,18 +5520,26 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
|
|||
SSchema* pTagSchema = tscGetTableTagSchema(pStableMeterMetaInfo->pTableMeta);
|
||||
|
||||
char* tagVal = pCreateTable->usingInfo.tagdata.data;
|
||||
int32_t ret = TSDB_CODE_SUCCESS;
|
||||
|
||||
for (int32_t i = 0; i < pList->nExpr; ++i) {
|
||||
int32_t ret = tVariantDump(&(pList->a[i].pVar), tagVal, pTagSchema[i].type);
|
||||
|
||||
if (pTagSchema[i].type == TSDB_DATA_TYPE_BINARY || pTagSchema[i].type == TSDB_DATA_TYPE_NCHAR) {
|
||||
// validate the length of binary
|
||||
if (pList->a[i].pVar.nLen + VARSTR_HEADER_SIZE > pTagSchema[i].bytes) {
|
||||
return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg3);
|
||||
}
|
||||
|
||||
*(VarDataLenT*)tagVal = pList->a[i].pVar.nLen;
|
||||
ret = tVariantDump(&(pList->a[i].pVar), tagVal + VARSTR_HEADER_SIZE, pTagSchema[i].type);
|
||||
} else {
|
||||
ret = tVariantDump(&(pList->a[i].pVar), tagVal, pTagSchema[i].type);
|
||||
}
|
||||
|
||||
if (ret != TSDB_CODE_SUCCESS) {
|
||||
return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg4);
|
||||
}
|
||||
|
||||
// validate the length of binary
|
||||
if ((pTagSchema[i].type == TSDB_DATA_TYPE_BINARY || pTagSchema[i].type == TSDB_DATA_TYPE_NCHAR) &&
|
||||
pList->a[i].pVar.nLen > pTagSchema[i].bytes) {
|
||||
return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg3);
|
||||
}
|
||||
|
||||
tagVal += pTagSchema[i].bytes;
|
||||
}
|
||||
|
||||
|
@ -5541,7 +5549,7 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
|
|||
}
|
||||
|
||||
STableMetaInfo* pTableMeterMetaInfo = tscGetMetaInfo(pQueryInfo, TABLE_INDEX);
|
||||
int32_t ret = tscSetTableId(pTableMeterMetaInfo, &pInfo->pCreateTableInfo->name, pSql);
|
||||
ret = tscSetTableId(pTableMeterMetaInfo, &pInfo->pCreateTableInfo->name, pSql);
|
||||
if (ret != TSDB_CODE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -2262,7 +2262,7 @@ int tscProcessConnectRsp(SSqlObj *pSql) {
|
|||
strcpy(pObj->sversion, pConnect->serverVersion);
|
||||
pObj->writeAuth = pConnect->writeAuth;
|
||||
pObj->superAuth = pConnect->superAuth;
|
||||
// taosTmrReset(tscProcessActivityTimer, tsShellActivityTimer * 500, pObj, tscTmr, &pObj->pTimer);
|
||||
taosTmrReset(tscProcessActivityTimer, tsShellActivityTimer * 500, pObj, tscTmr, &pObj->pTimer);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -168,6 +168,13 @@ static void syncConnCallback(void *param, TAOS_RES *tres, int code) {
|
|||
|
||||
TAOS *taos_connect(const char *ip, const char *user, const char *pass, const char *db, uint16_t port) {
|
||||
tscTrace("try to create a connection to %s", ip);
|
||||
if (port != 0) {
|
||||
tsServerPort = port;
|
||||
tsMnodeShellPort = tsServerPort + TSDB_PORT_MNODESHELL;
|
||||
tsDnodeShellPort = tsServerPort + TSDB_PORT_DNODESHELL;
|
||||
tsMnodeDnodePort = tsServerPort + TSDB_PORT_MNODEDNODE;
|
||||
tsDnodeMnodePort = tsServerPort + TSDB_PORT_DNODEMNODE;
|
||||
}
|
||||
|
||||
STscObj *pObj = taosConnectImpl(ip, user, pass, db, port, NULL, NULL, NULL);
|
||||
if (pObj != NULL) {
|
||||
|
@ -425,7 +432,7 @@ int taos_fetch_block_impl(TAOS_RES *res, TAOS_ROW *rows) {
|
|||
|
||||
assert(0);
|
||||
for (int i = 0; i < pQueryInfo->fieldsInfo.numOfOutput; ++i) {
|
||||
pRes->tsrow[i] = tscGetResultColumnChr(pRes, pQueryInfo, i, 0);
|
||||
tscGetResultColumnChr(pRes, &pQueryInfo->fieldsInfo, i);
|
||||
}
|
||||
|
||||
*rows = pRes->tsrow;
|
||||
|
@ -725,6 +732,15 @@ char *taos_get_server_info(TAOS *taos) {
|
|||
return pObj->sversion;
|
||||
}
|
||||
|
||||
int* taos_fetch_lengths(TAOS_RES *res) {
|
||||
SSqlObj* pSql = (SSqlObj* ) res;
|
||||
if (pSql == NULL || pSql->signature != pSql) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return pSql->res.length;
|
||||
}
|
||||
|
||||
char *taos_get_client_info() { return version; }
|
||||
|
||||
void taos_stop_query(TAOS_RES *res) {
|
||||
|
@ -796,7 +812,7 @@ int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields)
|
|||
case TSDB_DATA_TYPE_BINARY:
|
||||
case TSDB_DATA_TYPE_NCHAR: {
|
||||
size_t xlen = 0;
|
||||
for (xlen = 0; xlen <= fields[i].bytes; xlen++) {
|
||||
for (xlen = 0; xlen < fields[i].bytes - VARSTR_HEADER_SIZE; xlen++) {
|
||||
char c = ((char *)row[i])[xlen];
|
||||
if (c == 0) break;
|
||||
str[len++] = c;
|
||||
|
|
|
@ -1849,6 +1849,7 @@ void tscBuildResFromSubqueries(SSqlObj *pSql) {
|
|||
|
||||
if (pRes->tsrow == NULL) {
|
||||
pRes->tsrow = calloc(numOfExprs, POINTER_BYTES);
|
||||
pRes->length = calloc(numOfExprs, sizeof(int32_t));
|
||||
}
|
||||
|
||||
bool success = false;
|
||||
|
@ -1967,7 +1968,7 @@ void **doSetResultRowData(SSqlObj *pSql, bool finalResult) {
|
|||
for (int i = 0; i < tscNumOfFields(pQueryInfo); ++i) {
|
||||
SFieldSupInfo* pSup = tscFieldInfoGetSupp(&pQueryInfo->fieldsInfo, i);
|
||||
if (pSup->pSqlExpr != NULL) {
|
||||
pRes->tsrow[i] = tscGetResultColumnChr(pRes, pQueryInfo, i, pSup->pSqlExpr->resBytes);
|
||||
tscGetResultColumnChr(pRes, &pQueryInfo->fieldsInfo, i);
|
||||
}
|
||||
|
||||
// primary key column cannot be null in interval query, no need to check
|
||||
|
|
|
@ -210,7 +210,7 @@ bool tscNonOrderedProjectionQueryOnSTable(SQueryInfo* pQueryInfo, int32_t tableI
|
|||
return false;
|
||||
}
|
||||
|
||||
// order by column exists, not a non-ordered projection query
|
||||
// order by columnIndex exists, not a non-ordered projection query
|
||||
return pQueryInfo->order.orderColId < 0;
|
||||
}
|
||||
|
||||
|
@ -219,7 +219,7 @@ bool tscOrderedProjectionQueryOnSTable(SQueryInfo* pQueryInfo, int32_t tableInde
|
|||
return false;
|
||||
}
|
||||
|
||||
// order by column exists, a non-ordered projection query
|
||||
// order by columnIndex exists, a non-ordered projection query
|
||||
return pQueryInfo->order.orderColId >= 0;
|
||||
}
|
||||
|
||||
|
@ -286,13 +286,15 @@ int32_t tscCreateResPointerInfo(SSqlRes* pRes, SQueryInfo* pQueryInfo) {
|
|||
int32_t numOfOutput = pQueryInfo->fieldsInfo.numOfOutput;
|
||||
pRes->numOfCols = numOfOutput;
|
||||
|
||||
pRes->tsrow = calloc(POINTER_BYTES, numOfOutput);
|
||||
pRes->buffer = calloc(POINTER_BYTES, numOfOutput);
|
||||
pRes->tsrow = calloc(numOfOutput, POINTER_BYTES);
|
||||
pRes->length = calloc(numOfOutput, sizeof(int32_t)); // todo refactor
|
||||
pRes->buffer = calloc(numOfOutput, POINTER_BYTES);
|
||||
|
||||
// not enough memory
|
||||
if (pRes->tsrow == NULL || (pRes->buffer == NULL && pRes->numOfCols > 0)) {
|
||||
tfree(pRes->tsrow);
|
||||
tfree(pRes->buffer);
|
||||
tfree(pRes->length);
|
||||
|
||||
pRes->code = TSDB_CODE_CLI_OUT_OF_MEMORY;
|
||||
return pRes->code;
|
||||
|
@ -312,6 +314,7 @@ void tscDestroyResPointerInfo(SSqlRes* pRes) {
|
|||
|
||||
tfree(pRes->pRsp);
|
||||
tfree(pRes->tsrow);
|
||||
tfree(pRes->length);
|
||||
|
||||
tfree(pRes->pGroupRec);
|
||||
tfree(pRes->pColumnIndex);
|
||||
|
@ -592,7 +595,7 @@ int32_t tscGetDataBlockFromList(void* pHashList, SDataBlockList* pDataBlockList,
|
|||
}
|
||||
|
||||
static int trimDataBlock(void* pDataBlock, STableDataBlocks* pTableDataBlock) {
|
||||
// TODO: optimize this function
|
||||
// TODO: optimize this function, handle the case while binary is not presented
|
||||
int len = 0;
|
||||
|
||||
STableMeta* pTableMeta = pTableDataBlock->pTableMeta;
|
||||
|
@ -924,7 +927,7 @@ static SSqlExpr* doBuildSqlExpr(SQueryInfo* pQueryInfo, int16_t functionId, SCol
|
|||
SSqlExpr* pExpr = calloc(1, sizeof(SSqlExpr));
|
||||
pExpr->functionId = functionId;
|
||||
|
||||
// set the correct column index
|
||||
// set the correct columnIndex index
|
||||
if (pColIndex->columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
|
||||
pExpr->colInfo.colId = TSDB_TBNAME_COLUMN_INDEX;
|
||||
} else {
|
||||
|
@ -1063,7 +1066,7 @@ void tscSqlExprCopy(SArray* dst, const SArray* src, uint64_t uid, bool deepcopy)
|
|||
}
|
||||
|
||||
SColumn* tscColumnListInsert(SArray* pColumnList, SColumnIndex* pColIndex) {
|
||||
// ignore the tbname column to be inserted into source list
|
||||
// ignore the tbname columnIndex to be inserted into source list
|
||||
if (pColIndex->columnIndex < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
@ -2124,22 +2127,30 @@ void tscTryQueryNextClause(SSqlObj* pSql, void (*queryFp)()) {
|
|||
}
|
||||
}
|
||||
|
||||
char* tscGetResultColumnChr(SSqlRes* pRes, SQueryInfo* pQueryInfo, int32_t column, int16_t bytes) {
|
||||
SFieldInfo* pFieldInfo = &pQueryInfo->fieldsInfo;
|
||||
SFieldSupInfo* pInfo = tscFieldInfoGetSupp(pFieldInfo, column);
|
||||
|
||||
void tscGetResultColumnChr(SSqlRes* pRes, SFieldInfo* pFieldInfo, int32_t columnIndex) {
|
||||
SFieldSupInfo* pInfo = tscFieldInfoGetSupp(pFieldInfo, columnIndex);
|
||||
assert(pInfo->pSqlExpr != NULL);
|
||||
|
||||
int32_t type = pInfo->pSqlExpr->resType;
|
||||
int32_t bytes = pInfo->pSqlExpr->resBytes;
|
||||
|
||||
char* pData = ((char*) pRes->data) + pInfo->pSqlExpr->offset * pRes->numOfRows + bytes * pRes->row;
|
||||
|
||||
if (type == TSDB_DATA_TYPE_NCHAR || type == TSDB_DATA_TYPE_BINARY) {
|
||||
int32_t realLen = varDataLen(pData);
|
||||
assert(realLen <= bytes - VARSTR_HEADER_SIZE);
|
||||
|
||||
if (realLen < pInfo->pSqlExpr->resBytes - VARSTR_HEADER_SIZE) { // todo refactor
|
||||
*(char*) (pData + realLen + VARSTR_HEADER_SIZE) = 0;
|
||||
}
|
||||
|
||||
return pData + VARSTR_HEADER_SIZE; // head is the length of binary/nchar data
|
||||
pRes->tsrow[columnIndex] = pData + VARSTR_HEADER_SIZE;
|
||||
pRes->length[columnIndex] = realLen;
|
||||
} else {
|
||||
return pData;
|
||||
assert(bytes == tDataTypeDesc[type].nSize);
|
||||
|
||||
pRes->tsrow[columnIndex] = pData;
|
||||
pRes->length[columnIndex] = bytes;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ extern "C" {
|
|||
|
||||
#define STR_WITH_MAXSIZE_TO_VARSTR(x, str, _maxs) do {\
|
||||
char* _e = stpncpy((char*)(x) + VARSTR_HEADER_SIZE, (str), (_maxs));\
|
||||
*(VarDataLenT*)(x) = _e - (x);\
|
||||
*(VarDataLenT*)(x) = (_e - (x) - VARSTR_HEADER_SIZE);\
|
||||
} while(0)
|
||||
|
||||
#define STR_WITH_SIZE_TO_VARSTR(x, str, _size) do {\
|
||||
|
@ -97,7 +97,7 @@ typedef void *SDataRow;
|
|||
#define TD_DATA_ROW_HEAD_SIZE sizeof(int32_t)
|
||||
|
||||
#define dataRowLen(r) (*(int32_t *)(r))
|
||||
#define dataRowTuple(r) POINTER_DRIFT(r, TD_DATA_ROW_HEAD_SIZE)
|
||||
#define dataRowTuple(r) POINTER_SHIFT(r, TD_DATA_ROW_HEAD_SIZE)
|
||||
#define dataRowKey(r) (*(TSKEY *)(dataRowTuple(r)))
|
||||
#define dataRowSetLen(r, l) (dataRowLen(r) = (l))
|
||||
#define dataRowCpy(dst, r) memcpy((dst), (r), dataRowLen(r))
|
||||
|
@ -114,10 +114,10 @@ static FORCE_INLINE void *tdGetRowDataOfCol(SDataRow row, int8_t type, int32_t o
|
|||
switch (type) {
|
||||
case TSDB_DATA_TYPE_BINARY:
|
||||
case TSDB_DATA_TYPE_NCHAR:
|
||||
return POINTER_DRIFT(row, *(VarDataOffsetT *)POINTER_DRIFT(row, offset));
|
||||
return POINTER_SHIFT(row, *(VarDataOffsetT *)POINTER_SHIFT(row, offset));
|
||||
break;
|
||||
default:
|
||||
return POINTER_DRIFT(row, offset);
|
||||
return POINTER_SHIFT(row, offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -149,11 +149,11 @@ static FORCE_INLINE void *tdGetColDataOfRow(SDataCol *pCol, int row) {
|
|||
switch (pCol->type) {
|
||||
case TSDB_DATA_TYPE_BINARY:
|
||||
case TSDB_DATA_TYPE_NCHAR:
|
||||
return POINTER_DRIFT(pCol->pData, pCol->dataOff[row]);
|
||||
return POINTER_SHIFT(pCol->pData, pCol->dataOff[row]);
|
||||
break;
|
||||
|
||||
default:
|
||||
return POINTER_DRIFT(pCol->pData, TYPE_BYTES[pCol->type] * row);
|
||||
return POINTER_SHIFT(pCol->pData, TYPE_BYTES[pCol->type] * row);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -167,17 +167,17 @@ void tdFreeDataRow(SDataRow row) {
|
|||
int tdAppendColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int32_t offset) {
|
||||
ASSERT(value != NULL);
|
||||
int32_t toffset = offset + TD_DATA_ROW_HEAD_SIZE;
|
||||
char * ptr = POINTER_DRIFT(row, dataRowLen(row));
|
||||
char * ptr = POINTER_SHIFT(row, dataRowLen(row));
|
||||
|
||||
switch (type) {
|
||||
case TSDB_DATA_TYPE_BINARY:
|
||||
case TSDB_DATA_TYPE_NCHAR:
|
||||
*(VarDataOffsetT *)POINTER_DRIFT(row, toffset) = dataRowLen(row);
|
||||
*(VarDataOffsetT *)POINTER_SHIFT(row, toffset) = dataRowLen(row);
|
||||
memcpy(ptr, value, varDataTLen(value));
|
||||
dataRowLen(row) += varDataTLen(value);
|
||||
break;
|
||||
default:
|
||||
memcpy(POINTER_DRIFT(row, toffset), value, TYPE_BYTES[type]);
|
||||
memcpy(POINTER_SHIFT(row, toffset), value, TYPE_BYTES[type]);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -202,13 +202,13 @@ void dataColInit(SDataCol *pDataCol, STColumn *pCol, void **pBuf, int maxPoints)
|
|||
if (pDataCol->type == TSDB_DATA_TYPE_BINARY || pDataCol->type == TSDB_DATA_TYPE_NCHAR) {
|
||||
pDataCol->spaceSize = (sizeof(VarDataLenT) + pDataCol->bytes) * maxPoints;
|
||||
pDataCol->dataOff = (VarDataOffsetT *)(*pBuf);
|
||||
pDataCol->pData = POINTER_DRIFT(*pBuf, TYPE_BYTES[pDataCol->type] * maxPoints);
|
||||
*pBuf = POINTER_DRIFT(*pBuf, pDataCol->spaceSize + TYPE_BYTES[pDataCol->type] * maxPoints);
|
||||
pDataCol->pData = POINTER_SHIFT(*pBuf, TYPE_BYTES[pDataCol->type] * maxPoints);
|
||||
*pBuf = POINTER_SHIFT(*pBuf, pDataCol->spaceSize + TYPE_BYTES[pDataCol->type] * maxPoints);
|
||||
} else {
|
||||
pDataCol->spaceSize = pDataCol->bytes * maxPoints;
|
||||
pDataCol->dataOff = NULL;
|
||||
pDataCol->pData = *pBuf;
|
||||
*pBuf = POINTER_DRIFT(*pBuf, pDataCol->spaceSize);
|
||||
*pBuf = POINTER_SHIFT(*pBuf, pDataCol->spaceSize);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -222,13 +222,13 @@ void dataColAppendVal(SDataCol *pCol, void *value, int numOfPoints, int maxPoint
|
|||
// set offset
|
||||
pCol->dataOff[numOfPoints] = pCol->len;
|
||||
// Copy data
|
||||
memcpy(POINTER_DRIFT(pCol->pData, pCol->len), value, varDataTLen(value));
|
||||
memcpy(POINTER_SHIFT(pCol->pData, pCol->len), value, varDataTLen(value));
|
||||
// Update the length
|
||||
pCol->len += varDataTLen(value);
|
||||
break;
|
||||
default:
|
||||
ASSERT(pCol->len == TYPE_BYTES[pCol->type] * numOfPoints);
|
||||
memcpy(POINTER_DRIFT(pCol->pData, pCol->len), value, pCol->bytes);
|
||||
memcpy(POINTER_SHIFT(pCol->pData, pCol->len), value, pCol->bytes);
|
||||
pCol->len += pCol->bytes;
|
||||
break;
|
||||
}
|
||||
|
@ -244,12 +244,12 @@ void dataColPopPoints(SDataCol *pCol, int pointsToPop, int numOfPoints) {
|
|||
VarDataOffsetT toffset = pCol->dataOff[pointsToPop];
|
||||
pCol->len = pCol->len - toffset;
|
||||
ASSERT(pCol->len > 0);
|
||||
memmove(pCol->pData, POINTER_DRIFT(pCol->pData, toffset), pCol->len);
|
||||
memmove(pCol->pData, POINTER_SHIFT(pCol->pData, toffset), pCol->len);
|
||||
dataColSetOffset(pCol, pointsLeft);
|
||||
} else {
|
||||
ASSERT(pCol->len == TYPE_BYTES[pCol->type] * numOfPoints);
|
||||
pCol->len = TYPE_BYTES[pCol->type] * pointsLeft;
|
||||
memmove(pCol->pData, POINTER_DRIFT(pCol->pData, TYPE_BYTES[pCol->type] * pointsToPop), pCol->len);
|
||||
memmove(pCol->pData, POINTER_SHIFT(pCol->pData, TYPE_BYTES[pCol->type] * pointsToPop), pCol->len);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -301,7 +301,7 @@ void dataColSetOffset(SDataCol *pCol, int nEle) {
|
|||
for (int i = 0; i < nEle; i++) {
|
||||
pCol->dataOff[i] = offset;
|
||||
offset += varDataTLen(tptr);
|
||||
tptr = POINTER_DRIFT(tptr, varDataTLen(tptr));
|
||||
tptr = POINTER_SHIFT(tptr, varDataTLen(tptr));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,122 +13,6 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
char *taosMsg[] = {
|
||||
"null",
|
||||
"registration",
|
||||
"registration-rsp",
|
||||
"submit",
|
||||
"submit-rsp",
|
||||
"query",
|
||||
"query-rsp",
|
||||
"retrieve",
|
||||
"retrieve-rsp",
|
||||
"create-table",
|
||||
"create-table-rsp", //10
|
||||
|
||||
"drop-table",
|
||||
"drop-table-rsp",
|
||||
"alter-table",
|
||||
"alter-table-rsp",
|
||||
"create-vnode",
|
||||
"create-vnode-rsp",
|
||||
"drop-vnode",
|
||||
"drop-vnode-rsp",
|
||||
"alter-vnode",
|
||||
"alter-vnode-rsp", //20
|
||||
|
||||
"drop-stable",
|
||||
"drop-stable-rsp",
|
||||
"alter-stream",
|
||||
"alter-stream-rsp",
|
||||
"config-dnode",
|
||||
"config-dnode-rsp",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"", //30
|
||||
|
||||
"connect",
|
||||
"connect-rsp",
|
||||
"create-acct",
|
||||
"create-acct-rsp",
|
||||
"alter-acct",
|
||||
"alter-acct-rsp",
|
||||
"drop-acct",
|
||||
"drop-acct-rsp",
|
||||
"create-user",
|
||||
"create-user-rsp", //40
|
||||
|
||||
"alter-user",
|
||||
"alter-user-rsp",
|
||||
"drop-user",
|
||||
"drop-user-rsp",
|
||||
"create-dnode",
|
||||
"create-dnode-rsp",
|
||||
"drop-dnode",
|
||||
"drop-dnode-rsp",
|
||||
"create-db",
|
||||
"create-db-rsp", //50
|
||||
|
||||
"drop-db",
|
||||
"drop-db-rsp",
|
||||
"use-db",
|
||||
"use-db-rsp",
|
||||
"alter-db",
|
||||
"alter-db-rsp",
|
||||
"create-table",
|
||||
"create-table-rsp",
|
||||
"drop-table",
|
||||
"drop-table-rsp", //60
|
||||
|
||||
"alter-table",
|
||||
"alter-table-rsp",
|
||||
"table-meta",
|
||||
"table-meta-rsp",
|
||||
"super-table-meta",
|
||||
"super-stable-meta-rsp",
|
||||
"multi-table-meta",
|
||||
"multi-table-meta-rsp",
|
||||
"alter-stream",
|
||||
"alter-stream-rsp", //70
|
||||
|
||||
"show",
|
||||
"show-rsp",
|
||||
"kill-query",
|
||||
"kill-query-rsp",
|
||||
"kill-stream",
|
||||
"kill-stream-rsp",
|
||||
"kill-connection",
|
||||
"kill-connectoin-rsp",
|
||||
"heart-beat",
|
||||
"heart-beat-rsp", //80
|
||||
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"", //90
|
||||
|
||||
"config-table",
|
||||
"config-table-rsp",
|
||||
"config-vnode",
|
||||
"config-vnode-rsp",
|
||||
"status",
|
||||
"status-rsp",
|
||||
"grant",
|
||||
"grant-rsp",
|
||||
"",
|
||||
"", //100
|
||||
|
||||
"sdb-sync",
|
||||
"sdb-sync-rsp",
|
||||
"sdb-forward",
|
||||
"sdb-forward-rsp",
|
||||
"max"
|
||||
};
|
||||
#define TAOS_MESSAGE_C
|
||||
|
||||
#include "taosmsg.h"
|
||||
|
|
|
@ -146,6 +146,7 @@ class CTaosInterface(object):
|
|||
libtaos.taos_errstr.restype = ctypes.c_char_p
|
||||
libtaos.taos_subscribe.restype = ctypes.c_void_p
|
||||
libtaos.taos_consume.restype = ctypes.c_void_p
|
||||
libtaos.taos_fetch_lengths.restype = ctypes.c_void_p
|
||||
|
||||
def __init__(self, config=None):
|
||||
'''
|
||||
|
@ -314,6 +315,8 @@ class CTaosInterface(object):
|
|||
|
||||
isMicro = (CTaosInterface.libtaos.taos_result_precision(result) == FieldType.C_TIMESTAMP_MICRO)
|
||||
blocks = [None] * len(fields)
|
||||
fieldL = CTaosInterface.libtaos.taos_fetch_lengths(result)
|
||||
fieldLen = [ele for ele in ctypes.cast(fieldL, ctypes.POINTER(ctypes.c_int))[:len(fields)]]
|
||||
for i in range(len(fields)):
|
||||
data = ctypes.cast(pblock, ctypes.POINTER(ctypes.c_void_p))[i]
|
||||
if data == None:
|
||||
|
@ -323,7 +326,7 @@ class CTaosInterface(object):
|
|||
if fields[i]['type'] not in _CONVERT_FUNC:
|
||||
raise DatabaseError("Invalid data type returned from database")
|
||||
|
||||
blocks[i] = _CONVERT_FUNC[fields[i]['type']](data, num_of_rows, fields[i]['bytes'], isMicro)
|
||||
blocks[i] = _CONVERT_FUNC[fields[i]['type']](data, num_of_rows, fieldLen[i], isMicro)
|
||||
|
||||
return blocks, abs(num_of_rows)
|
||||
|
||||
|
|
|
@ -74,8 +74,10 @@ void dnodeCleanupRead() {
|
|||
|
||||
for (int i=0; i < readPool.max; ++i) {
|
||||
SReadWorker *pWorker = readPool.readWorker + i;
|
||||
if (pWorker->thread)
|
||||
if (pWorker->thread) {
|
||||
pthread_cancel(pWorker->thread);
|
||||
pthread_join(pWorker->thread, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
taosCloseQset(readQset);
|
||||
|
@ -114,12 +116,12 @@ void dnodeRead(SRpcMsg *pMsg) {
|
|||
pRead->pCont = pCont;
|
||||
pRead->contLen = pHead->contLen;
|
||||
|
||||
taosWriteQitem(queue, TAOS_QTYPE_RPC, pRead);
|
||||
|
||||
// next vnode
|
||||
leftLen -= pHead->contLen;
|
||||
pCont -= pHead->contLen;
|
||||
queuedMsgNum++;
|
||||
|
||||
taosWriteQitem(queue, TAOS_QTYPE_RPC, pRead);
|
||||
}
|
||||
|
||||
if (queuedMsgNum == 0) {
|
||||
|
|
|
@ -71,7 +71,10 @@ void dnodeCleanupWrite() {
|
|||
for (int32_t i = 0; i < wWorkerPool.max; ++i) {
|
||||
SWriteWorker *pWorker = wWorkerPool.writeWorker + i;
|
||||
if (pWorker->thread) {
|
||||
pthread_cancel(pWorker->thread);
|
||||
pthread_join(pWorker->thread, NULL);
|
||||
taosFreeQall(pWorker->qall);
|
||||
taosCloseQset(pWorker->qset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -228,7 +231,7 @@ static void dnodeHandleIdleWorker(SWriteWorker *pWorker) {
|
|||
int32_t num = taosGetQueueNumber(pWorker->qset);
|
||||
|
||||
if (num > 0) {
|
||||
usleep(30);
|
||||
usleep(30000);
|
||||
sched_yield();
|
||||
} else {
|
||||
taosFreeQall(pWorker->qall);
|
||||
|
|
|
@ -53,9 +53,9 @@ typedef enum {
|
|||
} TSDB_OPTION;
|
||||
|
||||
typedef struct taosField {
|
||||
char name[64];
|
||||
short bytes;
|
||||
char type;
|
||||
char name[64];
|
||||
short bytes;
|
||||
uint8_t type;
|
||||
} TAOS_FIELD;
|
||||
|
||||
#ifdef _TD_GO_DLL_
|
||||
|
@ -104,6 +104,8 @@ DLL_EXPORT void taos_stop_query(TAOS_RES *res);
|
|||
int taos_fetch_block(TAOS_RES *res, TAOS_ROW *rows);
|
||||
int taos_validate_sql(TAOS *taos, const char *sql);
|
||||
|
||||
int* taos_fetch_lengths(TAOS_RES *res);
|
||||
|
||||
// TAOS_RES *taos_list_tables(TAOS *mysql, const char *wild);
|
||||
// TAOS_RES *taos_list_dbs(TAOS *mysql, const char *wild);
|
||||
|
||||
|
|
|
@ -36,14 +36,17 @@ extern "C" {
|
|||
typedef int32_t VarDataOffsetT;
|
||||
typedef int16_t VarDataLenT;
|
||||
|
||||
#define VARSTR_HEADER_SIZE sizeof(VarDataLenT)
|
||||
|
||||
#define varDataLen(v) ((VarDataLenT *)(v))[0]
|
||||
#define varDataTLen(v) (sizeof(VarDataLenT) + varDataLen(v))
|
||||
#define varDataVal(v) ((void *)((char *)v + sizeof(VarDataLenT)))
|
||||
#define varDataCopy(dst, v) memcpy((dst), (void*) (v), varDataTLen(v))
|
||||
#define varDataLenByData(v) (*(VarDataLenT *)(((char*)(v)) - VARSTR_HEADER_SIZE))
|
||||
|
||||
// this data type is internally used only in 'in' query to hold the values
|
||||
#define TSDB_DATA_TYPE_ARRAY (TSDB_DATA_TYPE_NCHAR + 1)
|
||||
#define VARSTR_HEADER_SIZE sizeof(VarDataLenT)
|
||||
|
||||
|
||||
// Bytes for each type.
|
||||
extern const int32_t TYPE_BYTES[11];
|
||||
|
|
|
@ -115,6 +115,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_QUERY_ID, 0, 255, "invalid query i
|
|||
TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_STREAM_ID, 0, 256, "invalid stream id")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONNECTION, 0, 257, "invalid connection")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_SDB_ERROR, 0, 258, "sdb error")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_TIMESTAMP_OUT_OF_RANGE, 0, 259, "timestamp is out of range")
|
||||
|
||||
// acct
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_ACCT_ALREADY_EXIST, 0, 300, "accounts already exist")
|
||||
|
@ -172,6 +173,9 @@ TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VALUE, 0, 462, "invalid value")
|
|||
// others
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_FILE_FORMAT, 0, 500, "invalid file format")
|
||||
|
||||
// TSDB
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONFIG, 0, 550, "invalid TSDB configuration")
|
||||
|
||||
|
||||
#ifdef TAOS_ERROR_C
|
||||
};
|
||||
|
|
|
@ -28,103 +28,76 @@ extern "C" {
|
|||
#include "trpc.h"
|
||||
|
||||
// message type
|
||||
#define TSDB_MSG_TYPE_REG 1
|
||||
#define TSDB_MSG_TYPE_REG_RSP 2
|
||||
#define TSDB_MSG_TYPE_SUBMIT 3
|
||||
#define TSDB_MSG_TYPE_SUBMIT_RSP 4
|
||||
#define TSDB_MSG_TYPE_QUERY 5
|
||||
#define TSDB_MSG_TYPE_QUERY_RSP 6
|
||||
#define TSDB_MSG_TYPE_RETRIEVE 7
|
||||
#define TSDB_MSG_TYPE_RETRIEVE_RSP 8
|
||||
|
||||
#ifdef TAOS_MESSAGE_C
|
||||
#define TAOS_DEFINE_MESSAGE_TYPE( name, msg ) msg, msg "-rsp",
|
||||
char *taosMsg[] = {
|
||||
"null",
|
||||
#else
|
||||
#define TAOS_DEFINE_MESSAGE_TYPE( name, msg ) name, name##_RSP,
|
||||
enum {
|
||||
TSDB_MESSAGE_NULL = 0,
|
||||
#endif
|
||||
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_REG, "registration" ) // 1
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SUBMIT, "submit" ) // 3
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_QUERY, "query" ) // 5
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_RETRIEVE, "retrieve" ) // 7
|
||||
|
||||
// message from mnode to dnode
|
||||
#define TSDB_MSG_TYPE_MD_CREATE_TABLE 9
|
||||
#define TSDB_MSG_TYPE_MD_CREATE_TABLE_RSP 10
|
||||
#define TSDB_MSG_TYPE_MD_DROP_TABLE 11
|
||||
#define TSDB_MSG_TYPE_MD_DROP_TABLE_RSP 12
|
||||
#define TSDB_MSG_TYPE_MD_ALTER_TABLE 13
|
||||
#define TSDB_MSG_TYPE_MD_ALTER_TABLE_RSP 14
|
||||
#define TSDB_MSG_TYPE_MD_CREATE_VNODE 15
|
||||
#define TSDB_MSG_TYPE_MD_CREATE_VNODE_RSP 16
|
||||
#define TSDB_MSG_TYPE_MD_DROP_VNODE 17
|
||||
#define TSDB_MSG_TYPE_MD_DROP_VNODE_RSP 18
|
||||
#define TSDB_MSG_TYPE_MD_DROP_STABLE 19
|
||||
#define TSDB_MSG_TYPE_MD_DROP_STABLE_RSP 20
|
||||
#define TSDB_MSG_TYPE_MD_ALTER_STREAM 21
|
||||
#define TSDB_MSG_TYPE_MD_ALTER_STREAM_RSP 22
|
||||
#define TSDB_MSG_TYPE_MD_CONFIG_DNODE 23
|
||||
#define TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP 24
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CREATE_TABLE, "create-table" ) // 9
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_TABLE, "drop-table" ) // 11
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_ALTER_TABLE, "alter-table" ) // 13
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CREATE_VNODE, "create-vnode" ) // 15
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_VNODE, "drop-vnode" ) // 17
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_STABLE, "drop-stable" ) // 19
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_ALTER_STREAM, "alter-stream" ) // 21
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CONFIG_DNODE, "config-dnode" ) // 23
|
||||
|
||||
// message from client to mnode
|
||||
#define TSDB_MSG_TYPE_CM_CONNECT 31
|
||||
#define TSDB_MSG_TYPE_CM_CONNECT_RSP 32
|
||||
#define TSDB_MSG_TYPE_CM_CREATE_ACCT 33
|
||||
#define TSDB_MSG_TYPE_CM_CREATE_ACCT_RSP 34
|
||||
#define TSDB_MSG_TYPE_CM_ALTER_ACCT 35
|
||||
#define TSDB_MSG_TYPE_CM_ALTER_ACCT_RSP 36
|
||||
#define TSDB_MSG_TYPE_CM_DROP_ACCT 37
|
||||
#define TSDB_MSG_TYPE_CM_DROP_ACCT_RSP 38
|
||||
#define TSDB_MSG_TYPE_CM_CREATE_USER 39
|
||||
#define TSDB_MSG_TYPE_CM_CREATE_USER_RSP 40
|
||||
#define TSDB_MSG_TYPE_CM_ALTER_USER 41
|
||||
#define TSDB_MSG_TYPE_CM_ALTER_USER_RSP 42
|
||||
#define TSDB_MSG_TYPE_CM_DROP_USER 43
|
||||
#define TSDB_MSG_TYPE_CM_DROP_USER_RSP 44
|
||||
#define TSDB_MSG_TYPE_CM_CREATE_DNODE 45
|
||||
#define TSDB_MSG_TYPE_CM_CREATE_DNODE_RSP 46
|
||||
#define TSDB_MSG_TYPE_CM_DROP_DNODE 47
|
||||
#define TSDB_MSG_TYPE_CM_DROP_DNODE_RSP 48
|
||||
#define TSDB_MSG_TYPE_CM_CONFIG_DNODE TSDB_MSG_TYPE_MD_CONFIG_DNODE
|
||||
#define TSDB_MSG_TYPE_CM_CONFIG_DNODE_RSP TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP
|
||||
#define TSDB_MSG_TYPE_CM_CREATE_DB 49
|
||||
#define TSDB_MSG_TYPE_CM_CREATE_DB_RSP 50
|
||||
#define TSDB_MSG_TYPE_CM_DROP_DB 51
|
||||
#define TSDB_MSG_TYPE_CM_DROP_DB_RSP 52
|
||||
#define TSDB_MSG_TYPE_CM_USE_DB 53
|
||||
#define TSDB_MSG_TYPE_CM_USE_DB_RSP 54
|
||||
#define TSDB_MSG_TYPE_CM_ALTER_DB 55
|
||||
#define TSDB_MSG_TYPE_CM_ALTER_DB_RSP 56
|
||||
#define TSDB_MSG_TYPE_CM_CREATE_TABLE 57
|
||||
#define TSDB_MSG_TYPE_CM_CREATE_TABLE_RSP 58
|
||||
#define TSDB_MSG_TYPE_CM_DROP_TABLE 59
|
||||
#define TSDB_MSG_TYPE_CM_DROP_TABLE_RSP 60
|
||||
#define TSDB_MSG_TYPE_CM_ALTER_TABLE 61
|
||||
#define TSDB_MSG_TYPE_CM_ALTER_TABLE_RSP 62
|
||||
#define TSDB_MSG_TYPE_CM_TABLE_META 63
|
||||
#define TSDB_MSG_TYPE_CM_TABLE_META_RSP 64
|
||||
#define TSDB_MSG_TYPE_CM_STABLE_VGROUP 65
|
||||
#define TSDB_MSG_TYPE_CM_STABLE_VGROUP_RSP 66
|
||||
#define TSDB_MSG_TYPE_CM_TABLES_META 67
|
||||
#define TSDB_MSG_TYPE_CM_TABLES_META_RSP 68
|
||||
#define TSDB_MSG_TYPE_CM_ALTER_STREAM 69
|
||||
#define TSDB_MSG_TYPE_CM_ALTER_STREAM_RSP 70
|
||||
#define TSDB_MSG_TYPE_CM_SHOW 71
|
||||
#define TSDB_MSG_TYPE_CM_SHOW_RSP 72
|
||||
#define TSDB_MSG_TYPE_CM_KILL_QUERY 73
|
||||
#define TSDB_MSG_TYPE_CM_KILL_QUERY_RSP 74
|
||||
#define TSDB_MSG_TYPE_CM_KILL_STREAM 75
|
||||
#define TSDB_MSG_TYPE_CM_KILL_STREAM_RSP 76
|
||||
#define TSDB_MSG_TYPE_CM_KILL_CONN 77
|
||||
#define TSDB_MSG_TYPE_CM_KILL_CONN_RSP 78
|
||||
#define TSDB_MSG_TYPE_CM_HEARTBEAT 79
|
||||
#define TSDB_MSG_TYPE_CM_HEARTBEAT_RSP 80
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CONNECT, "connect" ) // 31
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_ACCT, "create-acct" ) // 33
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_ACCT, "alter-acct" ) // 35
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_ACCT, "drop-acct" ) // 37
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_USER, "create-user" ) // 39
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_USER, "alter-user" ) // 41
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_USER, "drop-user" ) // 43
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_DNODE, "create-dnode" ) // 45
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_DNODE, "drop-dnode" ) // 47
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_DB, "create-db" ) // 49
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_DB, "drop-db" ) // 51
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_USE_DB, "use-db" ) // 53
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_DB, "alter-db" ) // 55
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_TABLE, "create-table" ) // 57
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_TABLE, "drop-table" ) // 59
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_TABLE, "alter-table" ) // 61
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_TABLE_META, "table-meta" ) // 63
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_STABLE_VGROUP, "stable-vgroup" ) // 65
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_TABLES_META, "tables-meta" ) // 67
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_STREAM, "alter-stream" ) // 69
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_SHOW, "show" ) // 71
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_QUERY, "kill-query" ) // 73
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_STREAM, "kill-stream" ) // 75
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_CONN, "kill-conn" ) // 77
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_HEARTBEAT, "heartbeat" ) // 79
|
||||
|
||||
// message from dnode to mnode
|
||||
#define TSDB_MSG_TYPE_DM_CONFIG_TABLE 91
|
||||
#define TSDB_MSG_TYPE_DM_CONFIG_TABLE_RSP 92
|
||||
#define TSDB_MSG_TYPE_DM_CONFIG_VNODE 93
|
||||
#define TSDB_MSG_TYPE_DM_CONFIG_VNODE_RSP 94
|
||||
#define TSDB_MSG_TYPE_DM_STATUS 95
|
||||
#define TSDB_MSG_TYPE_DM_STATUS_RSP 96
|
||||
#define TSDB_MSG_TYPE_DM_GRANT 97
|
||||
#define TSDB_MSG_TYPE_DM_GRANT_RSP 98
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_TABLE, "config-table" ) // 91
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_VNODE, "config-vnode" ) // 93
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_STATUS, "status" ) // 95
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_GRANT, "grant" ) // 97
|
||||
|
||||
#define TSDB_MSG_TYPE_SDB_SYNC 101
|
||||
#define TSDB_MSG_TYPE_SDB_SYNC_RSP 102
|
||||
#define TSDB_MSG_TYPE_SDB_FORWARD 103
|
||||
#define TSDB_MSG_TYPE_SDB_FORWARD_RSP 104
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SDB_SYNC, "sdb-sync" ) // 101
|
||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SDB_FORWARD, "sdb-forward" ) // 103
|
||||
|
||||
#define TSDB_MSG_TYPE_MAX 105
|
||||
#ifndef TAOS_MESSAGE_C
|
||||
TSDB_MSG_TYPE_MAX // 105
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
#define TSDB_MSG_TYPE_CM_CONFIG_DNODE TSDB_MSG_TYPE_MD_CONFIG_DNODE
|
||||
#define TSDB_MSG_TYPE_CM_CONFIG_DNODE_RSP TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP
|
||||
|
||||
// IE type
|
||||
#define TSDB_IE_TYPE_SEC 1
|
||||
|
|
|
@ -61,6 +61,7 @@ struct arguments {
|
|||
int threadNum;
|
||||
char* commands;
|
||||
int abort;
|
||||
int port;
|
||||
};
|
||||
|
||||
/**************** Function declarations ****************/
|
||||
|
|
|
@ -81,7 +81,7 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) {
|
|||
// for management port
|
||||
else if (strcmp(argv[i], "-P") == 0) {
|
||||
if (i < argc - 1) {
|
||||
tsMnodeShellPort = atoi(argv[++i]);
|
||||
arguments->port = atoi(argv[++i]);
|
||||
} else {
|
||||
fprintf(stderr, "option -P requires an argument\n");
|
||||
exit(EXIT_FAILURE);
|
||||
|
|
|
@ -68,7 +68,7 @@ TAOS *shellInit(struct arguments *args) {
|
|||
tsMeterMetaKeepTimer = 3000;
|
||||
|
||||
// Connect to the database.
|
||||
TAOS *con = taos_connect(args->host, args->user, args->password, args->database, tsMnodeShellPort);
|
||||
TAOS *con = taos_connect(args->host, args->user, args->password, args->database, args->port);
|
||||
if (con == NULL) {
|
||||
return con;
|
||||
}
|
||||
|
@ -350,6 +350,8 @@ int shellDumpResult(TAOS *con, char *fname, int *error_no, bool printMode) {
|
|||
TAOS_FIELD *fields = taos_fetch_fields(result);
|
||||
|
||||
row = taos_fetch_row(result);
|
||||
int32_t* length = taos_fetch_lengths(result);
|
||||
|
||||
char t_str[TSDB_MAX_BYTES_PER_ROW] = "\0";
|
||||
int l[TSDB_MAX_COLUMNS] = {0};
|
||||
int maxLenColumnName = 0;
|
||||
|
@ -457,7 +459,7 @@ int shellDumpResult(TAOS *con, char *fname, int *error_no, bool printMode) {
|
|||
case TSDB_DATA_TYPE_BINARY:
|
||||
case TSDB_DATA_TYPE_NCHAR:
|
||||
memset(t_str, 0, TSDB_MAX_BYTES_PER_ROW);
|
||||
memcpy(t_str, row[i], fields[i].bytes);
|
||||
memcpy(t_str, row[i], length[i]);
|
||||
/* printf("%-*s|",max(fields[i].bytes, strlen(fields[i].name)),
|
||||
* t_str); */
|
||||
/* printf("%-*s|", l[i], t_str); */
|
||||
|
@ -532,7 +534,8 @@ int shellDumpResult(TAOS *con, char *fname, int *error_no, bool printMode) {
|
|||
case TSDB_DATA_TYPE_BINARY:
|
||||
case TSDB_DATA_TYPE_NCHAR:
|
||||
memset(t_str, 0, TSDB_MAX_BYTES_PER_ROW);
|
||||
memcpy(t_str, row[i], fields[i].bytes);
|
||||
memcpy(t_str, row[i], length[i]);
|
||||
|
||||
l[i] = MAX(fields[i].bytes, strlen(fields[i].name));
|
||||
shellPrintNChar(t_str, l[i], printMode);
|
||||
break;
|
||||
|
@ -610,7 +613,7 @@ int shellDumpResult(TAOS *con, char *fname, int *error_no, bool printMode) {
|
|||
case TSDB_DATA_TYPE_BINARY:
|
||||
case TSDB_DATA_TYPE_NCHAR:
|
||||
memset(t_str, 0, TSDB_MAX_BYTES_PER_ROW);
|
||||
memcpy(t_str, row[i], fields[i].bytes);
|
||||
memcpy(t_str, row[i], length[i]);
|
||||
fprintf(fp, "\'%s\'", t_str);
|
||||
break;
|
||||
case TSDB_DATA_TYPE_TIMESTAMP:
|
||||
|
|
|
@ -63,7 +63,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
|
|||
break;
|
||||
case 'P':
|
||||
if (arg) {
|
||||
tsMnodeShellPort = atoi(arg);
|
||||
arguments->port = atoi(arg);
|
||||
} else {
|
||||
fprintf(stderr, "Invalid port\n");
|
||||
return -1;
|
||||
|
|
|
@ -61,7 +61,7 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) {
|
|||
// for management port
|
||||
else if (strcmp(argv[i], "-P") == 0) {
|
||||
if (i < argc - 1) {
|
||||
tsMnodeShellPort = atoi(argv[++i]);
|
||||
arguments->port = atoi(argv[++i]);
|
||||
} else {
|
||||
fprintf(stderr, "option -P requires an argument\n");
|
||||
exit(EXIT_FAILURE);
|
||||
|
|
|
@ -52,14 +52,14 @@ int32_t mgmtInitDServer() {
|
|||
rpcInit.idleTime = tsShellActivityTimer * 1000;
|
||||
rpcInit.afp = mgmtDServerRetrieveAuth;
|
||||
|
||||
tsMgmtDServerQhandle = taosInitScheduler(tsMaxShellConns, 1, "MS");
|
||||
|
||||
tsMgmtDServerRpc = rpcOpen(&rpcInit);
|
||||
if (tsMgmtDServerRpc == NULL) {
|
||||
mError("failed to init server connection to dnode");
|
||||
return -1;
|
||||
}
|
||||
|
||||
tsMgmtDServerQhandle = taosInitScheduler(tsMaxShellConns, 1, "MS");
|
||||
|
||||
mPrint("server connection to dnode is opened");
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -672,7 +672,7 @@ static int32_t mgmtRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void *
|
|||
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
|
||||
char *prec = (pDb->cfg.precision == TSDB_TIME_PRECISION_MILLI) ? TSDB_TIME_PRECISION_MILLI_STR
|
||||
: TSDB_TIME_PRECISION_MICRO_STR;
|
||||
strcpy(pWrite, prec);
|
||||
STR_WITH_SIZE_TO_VARSTR(pWrite, prec, 2);
|
||||
cols++;
|
||||
|
||||
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
|
||||
|
|
|
@ -426,6 +426,7 @@ static int32_t mgmtDropDnodeByEp(char *ep) {
|
|||
return TSDB_CODE_NO_REMOVE_MASTER;
|
||||
}
|
||||
|
||||
mPrint("dnode:%d, start to drop it", pDnode->dnodeId);
|
||||
#ifndef _SYNC
|
||||
return mgmtDropDnode(pDnode);
|
||||
#else
|
||||
|
|
|
@ -143,7 +143,9 @@ static void *sdbGetTableFromId(int32_t tableId) {
|
|||
|
||||
static int32_t sdbInitWal() {
|
||||
SWalCfg walCfg = {.commitLog = 2, .wals = 2, .keep = 1};
|
||||
tsSdbObj.wal = walOpen(tsMnodeDir, &walCfg);
|
||||
char temp[TSDB_FILENAME_LEN];
|
||||
sprintf(temp, "%s/wal", tsMnodeDir);
|
||||
tsSdbObj.wal = walOpen(temp, &walCfg);
|
||||
if (tsSdbObj.wal == NULL) {
|
||||
sdbError("failed to open sdb wal in %s", tsMnodeDir);
|
||||
return -1;
|
||||
|
@ -196,8 +198,7 @@ static uint32_t sdbGetFileInfo(void *ahandle, char *name, uint32_t *index, int32
|
|||
}
|
||||
|
||||
static int sdbGetWalInfo(void *ahandle, char *name, uint32_t *index) {
|
||||
strcpy(name, "wal0");
|
||||
return 0;
|
||||
return walGetWalFile(tsSdbObj.wal, name, index);
|
||||
}
|
||||
|
||||
static void sdbNotifyRole(void *ahandle, int8_t role) {
|
||||
|
@ -281,7 +282,7 @@ void sdbUpdateSync() {
|
|||
syncInfo.vgId = 1;
|
||||
syncInfo.version = sdbGetVersion();
|
||||
syncInfo.syncCfg = syncCfg;
|
||||
sprintf(syncInfo.path, "%s/", tsMnodeDir);
|
||||
sprintf(syncInfo.path, "%s", tsMnodeDir);
|
||||
syncInfo.ahandle = NULL;
|
||||
syncInfo.getWalInfo = sdbGetWalInfo;
|
||||
syncInfo.getFileInfo = sdbGetFileInfo;
|
||||
|
|
|
@ -396,7 +396,7 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) {
|
|||
code = mgmtUpdateUser(pUser);
|
||||
mLPrint("user:%s, password is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code));
|
||||
} else {
|
||||
mError("user:%s, no rights to ater user", pOperUser->user);
|
||||
mError("user:%s, no rights to alter user", pOperUser->user);
|
||||
code = TSDB_CODE_NO_RIGHTS;
|
||||
}
|
||||
|
||||
|
@ -439,13 +439,13 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) {
|
|||
code = mgmtUpdateUser(pUser);
|
||||
mLPrint("user:%s, privilege is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code));
|
||||
} else {
|
||||
mError("user:%s, no rights to ater user", pOperUser->user);
|
||||
mError("user:%s, no rights to alter user", pOperUser->user);
|
||||
code = TSDB_CODE_NO_RIGHTS;
|
||||
}
|
||||
|
||||
mgmtSendSimpleResp(pMsg->thandle, code);
|
||||
} else {
|
||||
mError("user:%s, no rights to ater user", pOperUser->user);
|
||||
mError("user:%s, no rights to alter user", pOperUser->user);
|
||||
mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_RIGHTS);
|
||||
}
|
||||
|
||||
|
|
|
@ -160,10 +160,7 @@ static int32_t mgmtVgroupActionUpdate(SSdbOper *pOper) {
|
|||
|
||||
mgmtDecVgroupRef(pVgroup);
|
||||
|
||||
mTrace("vgId:%d, is updated, numOfVnode:%d", pVgroup->vgId, pVgroup->numOfVnodes);
|
||||
if (pDb) {
|
||||
mTrace("tables:%d", pDb->cfg.maxTables);
|
||||
}
|
||||
mTrace("vgId:%d, is updated, numOfVnode:%d tables:%d", pVgroup->vgId, pVgroup->numOfVnodes, pDb == NULL ? 0 : pDb->cfg.maxTables);
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -1083,6 +1083,7 @@ static void rpcSendMsgToPeer(SRpcConn *pConn, void *msg, int msgLen) {
|
|||
pRpc->label, pConn, taosMsg[pHead->msgType], pConn->peerFqdn,
|
||||
pConn->peerPort, msgLen, pHead->sourceId, pHead->destId, pHead->tranId);
|
||||
} else {
|
||||
if (pHead->code == 0) pConn->secured = 1; // for success response, set link as secured
|
||||
if (pHead->msgType < TSDB_MSG_TYPE_CM_HEARTBEAT || (rpcDebugFlag & 16))
|
||||
tTrace( "%s %p, %s is sent to %s:%hu, code:0x%x len:%d sig:0x%08x:0x%08x:%d",
|
||||
pRpc->label, pConn, taosMsg[pHead->msgType], pConn->peerFqdn, pConn->peerPort,
|
||||
|
@ -1364,7 +1365,7 @@ static int rpcCheckAuthentication(SRpcConn *pConn, char *msg, int msgLen) {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
tTrace("%s %p, auth spi not matched, msg discarded", pRpc->label, pConn);
|
||||
tTrace("%s %p, auth spi:%d not matched with received:%d", pRpc->label, pConn, pConn->spi, pHead->spi);
|
||||
code = TSDB_CODE_AUTH_FAILURE;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "tskiplist.h"
|
||||
#include "tutil.h"
|
||||
#include "tlog.h"
|
||||
#include "tcoding.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -160,6 +161,7 @@ typedef struct {
|
|||
|
||||
typedef struct {
|
||||
int64_t index;
|
||||
int numOfCacheBlocks;
|
||||
SList * memPool;
|
||||
} STsdbCachePool;
|
||||
|
||||
|
@ -227,13 +229,13 @@ typedef struct {
|
|||
int maxFGroups;
|
||||
int numOfFGroups;
|
||||
|
||||
SFileGroup fGroup[];
|
||||
SFileGroup *fGroup;
|
||||
} STsdbFileH;
|
||||
|
||||
#define TSDB_MIN_FILE_ID(fh) (fh)->fGroup[0].fileId
|
||||
#define TSDB_MAX_FILE_ID(fh) (fh)->fGroup[(fh)->numOfFGroups - 1].fileId
|
||||
|
||||
STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles);
|
||||
STsdbFileH *tsdbInitFileH(char *dataDir, STsdbCfg *pCfg);
|
||||
void tsdbCloseFileH(STsdbFileH *pFileH);
|
||||
int tsdbCreateFile(char *dataDir, int fileId, const char *suffix, int maxTables, SFile *pFile, int writeHeader,
|
||||
int toClose);
|
||||
|
@ -261,11 +263,12 @@ SFileGroup *tsdbGetFileGroupNext(SFileGroupIter *pIter);
|
|||
typedef struct {
|
||||
int32_t len;
|
||||
int32_t offset;
|
||||
int32_t padding; // For padding purpose
|
||||
int32_t hasLast : 1;
|
||||
int32_t numOfBlocks : 31;
|
||||
int32_t checksum;
|
||||
int64_t uid;
|
||||
TSKEY maxKey;
|
||||
} SCompIdx; /* sizeof(SCompIdx) = 24 */
|
||||
} SCompIdx; /* sizeof(SCompIdx) = 28 */
|
||||
|
||||
/**
|
||||
* if numOfSubBlocks == 0, then the SCompBlock is a sub-block
|
||||
|
@ -485,6 +488,11 @@ int tsdbMoveLastBlockIfNeccessary(SRWHelper *pHelper);
|
|||
int tsdbWriteCompInfo(SRWHelper *pHelper);
|
||||
int tsdbWriteCompIdx(SRWHelper *pHelper);
|
||||
|
||||
// --------- Other functions need to further organize
|
||||
void tsdbFitRetention(STsdbRepo *pRepo);
|
||||
int tsdbAlterCacheTotalBlocks(STsdbRepo *pRepo, int totalBlocks);
|
||||
void tsdbAdjustCacheBlocks(STsdbCache *pCache);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
static int tsdbAllocBlockFromPool(STsdbCache *pCache);
|
||||
static void tsdbFreeBlockList(SList *list);
|
||||
static void tsdbFreeCacheMem(SCacheMem *mem);
|
||||
static int tsdbAddCacheBlockToPool(STsdbCache *pCache);
|
||||
|
||||
STsdbCache *tsdbInitCache(int cacheBlockSize, int totalBlocks, TsdbRepoT *pRepo) {
|
||||
STsdbCache *pCache = (STsdbCache *)calloc(1, sizeof(STsdbCache));
|
||||
|
@ -40,13 +41,7 @@ STsdbCache *tsdbInitCache(int cacheBlockSize, int totalBlocks, TsdbRepoT *pRepo)
|
|||
if (pPool->memPool == NULL) goto _err;
|
||||
|
||||
for (int i = 0; i < totalBlocks; i++) {
|
||||
STsdbCacheBlock *pBlock = (STsdbCacheBlock *)malloc(sizeof(STsdbCacheBlock) + cacheBlockSize);
|
||||
if (pBlock == NULL) {
|
||||
goto _err;
|
||||
}
|
||||
pBlock->offset = 0;
|
||||
pBlock->remain = cacheBlockSize;
|
||||
tdListAppend(pPool->memPool, (void *)(&pBlock));
|
||||
if (tsdbAddCacheBlockToPool(pCache) < 0) goto _err;
|
||||
}
|
||||
|
||||
pCache->mem = NULL;
|
||||
|
@ -142,4 +137,70 @@ static int tsdbAllocBlockFromPool(STsdbCache *pCache) {
|
|||
tsdbUnLockRepo(pCache->pRepo);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int tsdbAlterCacheTotalBlocks(STsdbRepo *pRepo, int totalBlocks) {
|
||||
STsdbCache *pCache = pRepo->tsdbCache;
|
||||
int oldNumOfBlocks = pCache->totalCacheBlocks;
|
||||
|
||||
tsdbLockRepo((TsdbRepoT *)pRepo);
|
||||
|
||||
ASSERT(pCache->totalCacheBlocks != totalBlocks);
|
||||
|
||||
if (pCache->totalCacheBlocks < totalBlocks) {
|
||||
ASSERT(pCache->totalCacheBlocks == pCache->pool.numOfCacheBlocks);
|
||||
int blocksToAdd = pCache->totalCacheBlocks - totalBlocks;
|
||||
pCache->totalCacheBlocks = totalBlocks;
|
||||
for (int i = 0; i < blocksToAdd; i++) {
|
||||
if (tsdbAddCacheBlockToPool(pCache) < 0) {
|
||||
tsdbUnLockRepo((TsdbRepoT *)pRepo);
|
||||
tsdbError("tsdbId %d: failed to add cache block to cache pool", pRepo->config.tsdbId);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
pCache->totalCacheBlocks = totalBlocks;
|
||||
tsdbAdjustCacheBlocks(pCache);
|
||||
}
|
||||
|
||||
tsdbUnLockRepo((TsdbRepoT *)pRepo);
|
||||
tsdbTrace("tsdbId %d: tsdb total cache blocks changed from %d to %d", pRepo->config.tsdbId, oldNumOfBlocks, totalBlocks);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tsdbAddCacheBlockToPool(STsdbCache *pCache) {
|
||||
STsdbCachePool *pPool = &pCache->pool;
|
||||
|
||||
STsdbCacheBlock *pBlock = malloc(sizeof(STsdbCacheBlock) + pCache->cacheBlockSize);
|
||||
if (pBlock == NULL) return -1;
|
||||
|
||||
pBlock->offset = 0;
|
||||
pBlock->remain = pCache->cacheBlockSize;
|
||||
tdListAppend(pPool->memPool, (void *)(&pBlock));
|
||||
pPool->numOfCacheBlocks++;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tsdbRemoveCacheBlockFromPool(STsdbCache *pCache) {
|
||||
STsdbCachePool *pPool = &pCache->pool;
|
||||
STsdbCacheBlock *pBlock = NULL;
|
||||
|
||||
ASSERT(pCache->totalCacheBlocks >= 0);
|
||||
|
||||
SListNode *node = tdListPopHead(pPool->memPool);
|
||||
if (node == NULL) return -1;
|
||||
|
||||
tdListNodeGetData(pPool->memPool, node, &pBlock);
|
||||
free(pBlock);
|
||||
listNodeFree(node);
|
||||
pPool->numOfCacheBlocks--;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void tsdbAdjustCacheBlocks(STsdbCache *pCache) {
|
||||
while (pCache->totalCacheBlocks < pCache->pool.numOfCacheBlocks) {
|
||||
if (tsdbRemoveCacheBlockFromPool(pCache) < 0) break;
|
||||
}
|
||||
}
|
|
@ -27,6 +27,7 @@
|
|||
#include "tchecksum.h"
|
||||
#include "tsdbMain.h"
|
||||
#include "tutil.h"
|
||||
#include "ttime.h"
|
||||
|
||||
const char *tsdbFileSuffix[] = {
|
||||
".head", // TSDB_FILE_TYPE_HEAD
|
||||
|
@ -40,13 +41,19 @@ static int tsdbWriteFileHead(SFile *pFile);
|
|||
static int tsdbWriteHeadFileIdx(SFile *pFile, int maxTables);
|
||||
static int tsdbOpenFGroup(STsdbFileH *pFileH, char *dataDir, int fid);
|
||||
|
||||
STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles) {
|
||||
STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(STsdbFileH) + sizeof(SFileGroup) * maxFiles);
|
||||
STsdbFileH *tsdbInitFileH(char *dataDir, STsdbCfg *pCfg) {
|
||||
STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(STsdbFileH));
|
||||
if (pFileH == NULL) { // TODO: deal with ERROR here
|
||||
return NULL;
|
||||
}
|
||||
|
||||
pFileH->maxFGroups = maxFiles;
|
||||
pFileH->maxFGroups = pCfg->keep / pCfg->daysPerFile + 3;
|
||||
|
||||
pFileH->fGroup = (SFileGroup *)calloc(pFileH->maxFGroups, sizeof(SFileGroup));
|
||||
if (pFileH->fGroup == NULL) {
|
||||
free(pFileH);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DIR *dir = opendir(dataDir);
|
||||
if (dir == NULL) {
|
||||
|
@ -69,7 +76,12 @@ STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles) {
|
|||
return pFileH;
|
||||
}
|
||||
|
||||
void tsdbCloseFileH(STsdbFileH *pFileH) { free(pFileH); }
|
||||
void tsdbCloseFileH(STsdbFileH *pFileH) {
|
||||
if (pFileH) {
|
||||
tfree(pFileH->fGroup);
|
||||
free(pFileH);
|
||||
}
|
||||
}
|
||||
|
||||
static int tsdbInitFile(char *dataDir, int fid, const char *suffix, SFile *pFile) {
|
||||
tsdbGetFileName(dataDir, fid, suffix, pFile->fname);
|
||||
|
@ -161,6 +173,18 @@ void tsdbInitFileGroupIter(STsdbFileH *pFileH, SFileGroupIter *pIter, int direct
|
|||
}
|
||||
}
|
||||
|
||||
void tsdbFitRetention(STsdbRepo *pRepo) {
|
||||
STsdbFileH *pFileH = pRepo->tsdbFileH;
|
||||
SFileGroup *pGroup = pFileH->fGroup;
|
||||
|
||||
int mfid =
|
||||
tsdbGetKeyFileId(taosGetTimestamp(pRepo->config.precision), pRepo->config.daysPerFile, pRepo->config.precision) - pFileH->maxFGroups + 3;
|
||||
|
||||
while (pFileH->numOfFGroups > 0 && pGroup[0].fileId < mfid) {
|
||||
tsdbRemoveFileGroup(pFileH, pGroup[0].fileId);
|
||||
}
|
||||
}
|
||||
|
||||
void tsdbSeekFileGroupIter(SFileGroupIter *pIter, int fid) {
|
||||
if (pIter->numOfFGroups == 0) {
|
||||
assert(pIter->pFileGroup == NULL);
|
||||
|
@ -252,43 +276,6 @@ int tsdbCopyBlockDataInFile(SFile *pOutFile, SFile *pInFile, SCompInfo *pCompInf
|
|||
return 0;
|
||||
}
|
||||
|
||||
// int tsdbLoadCompIdx(SFileGroup *pGroup, void *buf, int maxTables) {
|
||||
// SFile *pFile = &(pGroup->files[TSDB_FILE_TYPE_HEAD]);
|
||||
// if (lseek(pFile->fd, TSDB_FILE_HEAD_SIZE, SEEK_SET) < 0) return -1;
|
||||
|
||||
// if (read(pFile->fd, buf, sizeof(SCompIdx) * maxTables) < 0) return -1;
|
||||
// // TODO: need to check the correctness
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
// int tsdbLoadCompBlocks(SFileGroup *pGroup, SCompIdx *pIdx, void *buf) {
|
||||
// SFile *pFile = &(pGroup->files[TSDB_FILE_TYPE_HEAD]);
|
||||
|
||||
// if (lseek(pFile->fd, pIdx->offset, SEEK_SET) < 0) return -1;
|
||||
|
||||
// if (read(pFile->fd, buf, pIdx->len) < 0) return -1;
|
||||
|
||||
// // TODO: need to check the correctness
|
||||
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
// int tsdbLoadCompCols(SFile *pFile, SCompBlock *pBlock, void *buf) {
|
||||
// // assert(pBlock->numOfSubBlocks == 0 || pBlock->numOfSubBlocks == 1);
|
||||
|
||||
// if (lseek(pFile->fd, pBlock->offset, SEEK_SET) < 0) return -1;
|
||||
// size_t size = sizeof(SCompData) + sizeof(SCompCol) * pBlock->numOfCols;
|
||||
// if (read(pFile->fd, buf, size) < 0) return -1;
|
||||
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
// int tsdbLoadColData(SFile *pFile, SCompCol *pCol, int64_t blockBaseOffset, void *buf) {
|
||||
// if (lseek(pFile->fd, blockBaseOffset + pCol->offset, SEEK_SET) < 0) return -1;
|
||||
// if (read(pFile->fd, buf, pCol->len) < 0) return -1;
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
static int compFGroupKey(const void *key, const void *fgroup) {
|
||||
int fid = *(int *)key;
|
||||
SFileGroup *pFGroup = (SFileGroup *)fgroup;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "tsdbMain.h"
|
||||
#include "tscompression.h"
|
||||
#include "tchecksum.h"
|
||||
#include "ttime.h"
|
||||
|
||||
int tsdbDebugFlag = 135;
|
||||
|
||||
|
@ -27,7 +28,7 @@ static int32_t tsdbCheckAndSetDefaultCfg(STsdbCfg *pCfg);
|
|||
static int32_t tsdbSetRepoEnv(STsdbRepo *pRepo);
|
||||
static int32_t tsdbDestroyRepoEnv(STsdbRepo *pRepo);
|
||||
// static int tsdbOpenMetaFile(char *tsdbDir);
|
||||
static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock);
|
||||
static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock, TSKEY now);
|
||||
static int32_t tsdbRestoreCfg(STsdbRepo *pRepo, STsdbCfg *pCfg);
|
||||
static int32_t tsdbGetDataDirName(STsdbRepo *pRepo, char *fname);
|
||||
static void * tsdbCommitData(void *arg);
|
||||
|
@ -35,8 +36,9 @@ static int tsdbCommitToFile(STsdbRepo *pRepo, int fid, SSkipListIterator **i
|
|||
SDataCols *pDataCols);
|
||||
static TSKEY tsdbNextIterKey(SSkipListIterator *pIter);
|
||||
static int tsdbHasDataToCommit(SSkipListIterator **iters, int nIters, TSKEY minKey, TSKEY maxKey);
|
||||
// static int tsdbWriteBlockToFileImpl(SFile *pFile, SDataCols *pCols, int pointsToWrite, int64_t *offset, int32_t *len,
|
||||
// int64_t uid);
|
||||
static void tsdbAlterCompression(STsdbRepo *pRepo, int8_t compression);
|
||||
static void tsdbAlterKeep(STsdbRepo *pRepo, int32_t keep);
|
||||
static void tsdbAlterMaxTables(STsdbRepo *pRepo, int32_t maxTables);
|
||||
|
||||
#define TSDB_GET_TABLE_BY_ID(pRepo, sid) (((STSDBRepo *)pRepo)->pTableList)[sid]
|
||||
#define TSDB_GET_TABLE_BY_NAME(pRepo, name)
|
||||
|
@ -214,7 +216,7 @@ TsdbRepoT *tsdbOpenRepo(char *tsdbDir, STsdbAppH *pAppH) {
|
|||
}
|
||||
|
||||
tsdbGetDataDirName(pRepo, dataDir);
|
||||
pRepo->tsdbFileH = tsdbInitFileH(dataDir, pRepo->config.maxTables);
|
||||
pRepo->tsdbFileH = tsdbInitFileH(dataDir, &(pRepo->config));
|
||||
if (pRepo->tsdbFileH == NULL) {
|
||||
tsdbFreeCache(pRepo->tsdbCache);
|
||||
tsdbFreeMeta(pRepo->tsdbMeta);
|
||||
|
@ -297,10 +299,23 @@ int32_t tsdbCloseRepo(TsdbRepoT *repo) {
|
|||
*/
|
||||
int32_t tsdbConfigRepo(TsdbRepoT *repo, STsdbCfg *pCfg) {
|
||||
STsdbRepo *pRepo = (STsdbRepo *)repo;
|
||||
STsdbCfg * pRCfg = &pRepo->config;
|
||||
|
||||
pRepo->config = *pCfg;
|
||||
// TODO
|
||||
return 0;
|
||||
if (tsdbCheckAndSetDefaultCfg(pCfg) < 0) return TSDB_CODE_INVALID_CONFIG;
|
||||
|
||||
ASSERT(pRCfg->tsdbId == pCfg->tsdbId);
|
||||
ASSERT(pRCfg->cacheBlockSize == pCfg->cacheBlockSize);
|
||||
ASSERT(pRCfg->daysPerFile == pCfg->daysPerFile);
|
||||
ASSERT(pRCfg->minRowsPerFileBlock == pCfg->minRowsPerFileBlock);
|
||||
ASSERT(pRCfg->maxRowsPerFileBlock == pCfg->maxRowsPerFileBlock);
|
||||
ASSERT(pRCfg->precision == pCfg->precision);
|
||||
|
||||
if (pRCfg->compression != pCfg->compression) tsdbAlterCompression(pRepo, pCfg->compression);
|
||||
if (pRCfg->keep != pCfg->keep) tsdbAlterKeep(pRepo, pCfg->keep);
|
||||
if (pRCfg->totalBlocks != pCfg->totalBlocks) tsdbAlterCacheTotalBlocks(pRepo, pCfg->totalBlocks);
|
||||
if (pRCfg->maxTables != pCfg->maxTables) tsdbAlterMaxTables(pRepo, pCfg->maxTables);
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t tsdbTriggerCommit(TsdbRepoT *repo) {
|
||||
|
@ -394,13 +409,16 @@ STableInfo *tsdbGetTableInfo(TsdbRepoT *pRepo, STableId tableId) {
|
|||
// TODO: need to return the number of data inserted
|
||||
int32_t tsdbInsertData(TsdbRepoT *repo, SSubmitMsg *pMsg) {
|
||||
SSubmitMsgIter msgIter;
|
||||
STsdbRepo *pRepo = (STsdbRepo *)repo;
|
||||
|
||||
tsdbInitSubmitMsgIter(pMsg, &msgIter);
|
||||
SSubmitBlk *pBlock = NULL;
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
|
||||
|
||||
TSKEY now = taosGetTimestamp(pRepo->config.precision);
|
||||
|
||||
while ((pBlock = tsdbGetSubmitMsgNext(&msgIter)) != NULL) {
|
||||
if ((code = tsdbInsertDataToTable(repo, pBlock)) != TSDB_CODE_SUCCESS) {
|
||||
if ((code = tsdbInsertDataToTable(repo, pBlock, now)) != TSDB_CODE_SUCCESS) {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
@ -787,21 +805,31 @@ static int32_t tdInsertRowToTable(STsdbRepo *pRepo, SDataRow row, STable *pTable
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock) {
|
||||
static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock, TSKEY now) {
|
||||
STsdbRepo *pRepo = (STsdbRepo *)repo;
|
||||
|
||||
STableId tableId = {.uid = pBlock->uid, .tid = pBlock->tid};
|
||||
STable *pTable = tsdbIsValidTableToInsert(pRepo->tsdbMeta, tableId);
|
||||
if (pTable == NULL) {
|
||||
uError("failed to get table for insert, uid:%" PRIu64 ", tid:%d", tableId.uid, tableId.tid);
|
||||
tsdbError("failed to get table for insert, uid:%" PRIu64 ", tid:%d", tableId.uid, tableId.tid);
|
||||
return TSDB_CODE_INVALID_TABLE_ID;
|
||||
}
|
||||
|
||||
SSubmitBlkIter blkIter;
|
||||
SDataRow row;
|
||||
SSubmitBlkIter blkIter = {0};
|
||||
SDataRow row = NULL;
|
||||
|
||||
TSKEY minKey = now - tsMsPerDay[pRepo->config.precision] * pRepo->config.keep;
|
||||
TSKEY maxKey = now + tsMsPerDay[pRepo->config.precision] * pRepo->config.daysPerFile;
|
||||
|
||||
tsdbInitSubmitBlkIter(pBlock, &blkIter);
|
||||
while ((row = tsdbGetSubmitBlkNext(&blkIter)) != NULL) {
|
||||
if (dataRowKey(row) < minKey || dataRowKey(row) > maxKey) {
|
||||
tsdbError(
|
||||
"tsdbId: %d, table tid: %d, talbe uid: %ld timestamp is out of range. now: %ld maxKey: %ld, minKey: %ld",
|
||||
pRepo->config.tsdbId, pTable->tableId.tid, pTable->tableId.uid, now, minKey, maxKey);
|
||||
return TSDB_CODE_TIMESTAMP_OUT_OF_RANGE;
|
||||
}
|
||||
|
||||
if (tdInsertRowToTable(pRepo, row, pTable) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
@ -903,6 +931,9 @@ static void *tsdbCommitData(void *arg) {
|
|||
}
|
||||
}
|
||||
|
||||
// Do retention actions
|
||||
tsdbFitRetention(pRepo);
|
||||
|
||||
_exit:
|
||||
tdFreeDataCols(pDataCols);
|
||||
tsdbDestroyTableIters(iters, pCfg->maxTables);
|
||||
|
@ -910,6 +941,7 @@ _exit:
|
|||
|
||||
tsdbLockRepo(arg);
|
||||
tdListMove(pCache->imem->list, pCache->pool.memPool);
|
||||
tsdbAdjustCacheBlocks(pCache);
|
||||
tdListFree(pCache->imem->list);
|
||||
free(pCache->imem);
|
||||
pCache->imem = NULL;
|
||||
|
@ -1028,4 +1060,27 @@ static int tsdbHasDataToCommit(SSkipListIterator **iters, int nIters, TSKEY minK
|
|||
if (nextKey > 0 && (nextKey >= minKey && nextKey <= maxKey)) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void tsdbAlterCompression(STsdbRepo *pRepo, int8_t compression) {
|
||||
pRepo->config.compression = compression;
|
||||
}
|
||||
|
||||
static void tsdbAlterKeep(STsdbRepo *pRepo, int32_t keep) {
|
||||
STsdbCfg *pCfg = &pRepo->config;
|
||||
|
||||
int maxFiles = keep / pCfg->maxTables + 3;
|
||||
if (pRepo->config.keep > keep) {
|
||||
pRepo->tsdbFileH->maxFGroups = maxFiles;
|
||||
} else {
|
||||
pRepo->tsdbFileH->fGroup = realloc(pRepo->tsdbFileH->fGroup, sizeof(SFileGroup));
|
||||
if (pRepo->tsdbFileH->fGroup == NULL) {
|
||||
// TODO: deal with the error
|
||||
}
|
||||
pRepo->tsdbFileH->maxFGroups = maxFiles;
|
||||
}
|
||||
}
|
||||
|
||||
static void tsdbAlterMaxTables(STsdbRepo *pRepo, int32_t maxTables) {
|
||||
// TODO
|
||||
}
|
|
@ -535,5 +535,5 @@ static int tsdbEstimateTableEncodeSize(STable *pTable) {
|
|||
char *getTupleKey(const void * data) {
|
||||
SDataRow row = (SDataRow)data;
|
||||
|
||||
return POINTER_DRIFT(row, TD_DATA_ROW_HEAD_SIZE);
|
||||
return POINTER_SHIFT(row, TD_DATA_ROW_HEAD_SIZE);
|
||||
}
|
|
@ -414,6 +414,7 @@ int tsdbWriteCompInfo(SRWHelper *pHelper) {
|
|||
ASSERT((pIdx->len - sizeof(SCompInfo) - sizeof(TSCKSUM)) % sizeof(SCompBlock) == 0);
|
||||
taosCalcChecksumAppend(0, (uint8_t *)pHelper->pCompInfo, pIdx->len);
|
||||
pIdx->offset = lseek(pHelper->files.nHeadF.fd, 0, SEEK_END);
|
||||
pIdx->uid = pHelper->tableInfo.uid;
|
||||
if (pIdx->offset < 0) return -1;
|
||||
ASSERT(pIdx->offset >= tsizeof(pHelper->pCompIdx));
|
||||
|
||||
|
|
|
@ -0,0 +1,214 @@
|
|||
/*
|
||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||
*
|
||||
* This program is free software: you can use, redistribute, and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3
|
||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TD_CODING_H_
|
||||
#define _TD_CODING_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "tutil.h"
|
||||
|
||||
// TODO: move this to a platform file
|
||||
#define ENCODE_LIMIT (((uint8_t)1) << 7)
|
||||
static const int32_t TNUMBER = 1;
|
||||
#define IS_LITTLE_ENDIAN() (*(uint8_t *)(&TNUMBER) != 0)
|
||||
|
||||
static FORCE_INLINE void *taosEncodeFixed16(void *buf, uint16_t value) {
|
||||
if (IS_LITTLE_ENDIAN()) {
|
||||
memcpy(buf, &value, sizeof(value));
|
||||
} else {
|
||||
((uint8_t *)buf)[0] = value & 0xff;
|
||||
((uint8_t *)buf)[1] = (value >> 8) & 0xff;
|
||||
}
|
||||
|
||||
return POINTER_SHIFT(buf, sizeof(value));
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosEncodeFixed32(void *buf, uint32_t value) {
|
||||
if (IS_LITTLE_ENDIAN()) {
|
||||
memcpy(buf, &value, sizeof(value));
|
||||
} else {
|
||||
((uint8_t *)buf)[0] = value & 0xff;
|
||||
((uint8_t *)buf)[1] = (value >> 8) & 0xff;
|
||||
((uint8_t *)buf)[2] = (value >> 16) & 0xff;
|
||||
((uint8_t *)buf)[3] = (value >> 24) & 0xff;
|
||||
}
|
||||
|
||||
return POINTER_SHIFT(buf, sizeof(value));
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosEncodeFixed64(void *buf, uint64_t value) {
|
||||
if (IS_LITTLE_ENDIAN()) {
|
||||
memcpy(buf, &value, sizeof(value));
|
||||
} else {
|
||||
((uint8_t *)buf)[0] = value & 0xff;
|
||||
((uint8_t *)buf)[1] = (value >> 8) & 0xff;
|
||||
((uint8_t *)buf)[2] = (value >> 16) & 0xff;
|
||||
((uint8_t *)buf)[3] = (value >> 24) & 0xff;
|
||||
((uint8_t *)buf)[4] = (value >> 32) & 0xff;
|
||||
((uint8_t *)buf)[5] = (value >> 40) & 0xff;
|
||||
((uint8_t *)buf)[6] = (value >> 48) & 0xff;
|
||||
((uint8_t *)buf)[7] = (value >> 56) & 0xff;
|
||||
}
|
||||
|
||||
return POINTER_SHIFT(buf, sizeof(value));
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosDecodeFixed16(void *buf, uint16_t *value) {
|
||||
if (IS_LITTLE_ENDIAN()) {
|
||||
memcpy(value, buf, sizeof(*value));
|
||||
} else {
|
||||
((uint8_t *)value)[1] = ((uint8_t *)buf)[0];
|
||||
((uint8_t *)value)[0] = ((uint8_t *)buf)[1];
|
||||
}
|
||||
|
||||
return POINTER_SHIFT(buf, sizeof(*value));
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosDecodeFixed32(void *buf, uint32_t *value) {
|
||||
if (IS_LITTLE_ENDIAN()) {
|
||||
memcpy(value, buf, sizeof(*value));
|
||||
} else {
|
||||
((uint8_t *)value)[3] = ((uint8_t *)buf)[0];
|
||||
((uint8_t *)value)[2] = ((uint8_t *)buf)[1];
|
||||
((uint8_t *)value)[1] = ((uint8_t *)buf)[2];
|
||||
((uint8_t *)value)[0] = ((uint8_t *)buf)[3];
|
||||
}
|
||||
|
||||
return POINTER_SHIFT(buf, sizeof(*value));
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosDecodeFixed64(void *buf, uint64_t *value) {
|
||||
if (IS_LITTLE_ENDIAN()) {
|
||||
memcpy(value, buf, sizeof(*value));
|
||||
} else {
|
||||
((uint8_t *)value)[7] = ((uint8_t *)buf)[0];
|
||||
((uint8_t *)value)[6] = ((uint8_t *)buf)[1];
|
||||
((uint8_t *)value)[5] = ((uint8_t *)buf)[2];
|
||||
((uint8_t *)value)[4] = ((uint8_t *)buf)[3];
|
||||
((uint8_t *)value)[3] = ((uint8_t *)buf)[4];
|
||||
((uint8_t *)value)[2] = ((uint8_t *)buf)[5];
|
||||
((uint8_t *)value)[1] = ((uint8_t *)buf)[6];
|
||||
((uint8_t *)value)[0] = ((uint8_t *)buf)[7];
|
||||
}
|
||||
|
||||
return POINTER_SHIFT(buf, sizeof(*value));
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosEncodeVariant16(void *buf, uint16_t value) {
|
||||
int i = 0;
|
||||
while (value >= ENCODE_LIMIT) {
|
||||
((uint8_t *)buf)[i] = (value | ENCODE_LIMIT);
|
||||
value >>= 7;
|
||||
i++;
|
||||
ASSERT(i < 3);
|
||||
}
|
||||
|
||||
((uint8_t *)buf)[i] = value;
|
||||
|
||||
return POINTER_SHIFT(buf, i+1);
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosEncodeVariant32(void *buf, uint32_t value) {
|
||||
int i = 0;
|
||||
while (value >= ENCODE_LIMIT) {
|
||||
((uint8_t *)buf)[i] = (value | ENCODE_LIMIT);
|
||||
value >>= 7;
|
||||
i++;
|
||||
ASSERT(i < 5);
|
||||
}
|
||||
|
||||
((uint8_t *)buf)[i] = value;
|
||||
|
||||
return POINTER_SHIFT(buf, i + 1);
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosEncodeVariant64(void *buf, uint64_t value) {
|
||||
int i = 0;
|
||||
while (value >= ENCODE_LIMIT) {
|
||||
((uint8_t *)buf)[i] = (value | ENCODE_LIMIT);
|
||||
value >>= 7;
|
||||
i++;
|
||||
ASSERT(i < 10);
|
||||
}
|
||||
|
||||
((uint8_t *)buf)[i] = value;
|
||||
|
||||
return POINTER_SHIFT(buf, i + 1);
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosDecodeVariant16(void *buf, uint16_t *value) {
|
||||
int i = 0;
|
||||
uint16_t tval = 0;
|
||||
*value = 0;
|
||||
while (i < 3) {
|
||||
tval = (uint16_t)(((uint8_t *)buf)[i]);
|
||||
if (tval < ENCODE_LIMIT) {
|
||||
(*value) |= (tval << (7 * i));
|
||||
return POINTER_SHIFT(buf, i + 1);
|
||||
} else {
|
||||
(*value) |= ((tval & (ENCODE_LIMIT - 1)) << (7 * i));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL; // error happened
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosDecodeVariant32(void *buf, uint32_t *value) {
|
||||
int i = 0;
|
||||
uint32_t tval = 0;
|
||||
*value = 0;
|
||||
while (i < 5) {
|
||||
tval = (uint32_t)(((uint8_t *)buf)[i]);
|
||||
if (tval < ENCODE_LIMIT) {
|
||||
(*value) |= (tval << (7 * i));
|
||||
return POINTER_SHIFT(buf, i + 1);
|
||||
} else {
|
||||
(*value) |= ((tval & (ENCODE_LIMIT - 1)) << (7 * i));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL; // error happened
|
||||
}
|
||||
|
||||
static FORCE_INLINE void *taosDecodeVariant64(void *buf, uint64_t *value) {
|
||||
int i = 0;
|
||||
uint64_t tval = 0;
|
||||
*value = 0;
|
||||
while (i < 10) {
|
||||
tval = (uint64_t)(((uint8_t *)buf)[i]);
|
||||
if (tval < ENCODE_LIMIT) {
|
||||
(*value) |= (tval << (7 * i));
|
||||
return POINTER_SHIFT(buf, i + 1);
|
||||
} else {
|
||||
(*value) |= ((tval & (ENCODE_LIMIT - 1)) << (7 * i));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL; // error happened
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -22,22 +22,37 @@ extern "C" {
|
|||
|
||||
#include <stdint.h>
|
||||
#include <time.h>
|
||||
#include "tutil.h"
|
||||
|
||||
//@return timestamp in second
|
||||
int32_t taosGetTimestampSec();
|
||||
|
||||
//@return timestamp in millisecond
|
||||
int64_t taosGetTimestampMs();
|
||||
static FORCE_INLINE int64_t taosGetTimestampMs() {
|
||||
struct timeval systemTime;
|
||||
gettimeofday(&systemTime, NULL);
|
||||
return (int64_t)systemTime.tv_sec * 1000L + (uint64_t)systemTime.tv_usec / 1000;
|
||||
}
|
||||
|
||||
//@return timestamp in microsecond
|
||||
int64_t taosGetTimestampUs();
|
||||
static FORCE_INLINE int64_t taosGetTimestampUs() {
|
||||
struct timeval systemTime;
|
||||
gettimeofday(&systemTime, NULL);
|
||||
return (int64_t)systemTime.tv_sec * 1000000L + (uint64_t)systemTime.tv_usec;
|
||||
}
|
||||
|
||||
/*
|
||||
* @return timestamp decided by global conf variable, tsTimePrecision
|
||||
* if precision == TSDB_TIME_PRECISION_MICRO, it returns timestamp in microsecond.
|
||||
* precision == TSDB_TIME_PRECISION_MILLI, it returns timestamp in millisecond.
|
||||
*/
|
||||
int64_t taosGetTimestamp(int32_t precision);
|
||||
static FORCE_INLINE int64_t taosGetTimestamp(int32_t precision) {
|
||||
if (precision == TSDB_TIME_PRECISION_MICRO) {
|
||||
return taosGetTimestampUs();
|
||||
} else {
|
||||
return taosGetTimestampMs();
|
||||
}
|
||||
}
|
||||
|
||||
int32_t getTimestampInUsFromStr(char* token, int32_t tokenlen, int64_t* ts);
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ extern "C" {
|
|||
#define tclose(x) taosCloseSocket(x)
|
||||
|
||||
// Pointer p drift right by b bytes
|
||||
#define POINTER_DRIFT(p, b) ((void *)((char *)(p) + (b)))
|
||||
#define POINTER_SHIFT(p, b) ((void *)((char *)(p) + (b)))
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define ASSERT(x) assert(x)
|
||||
|
|
|
@ -41,6 +41,7 @@ typedef struct _taos_qset {
|
|||
pthread_mutex_t mutex;
|
||||
int32_t numOfQueues;
|
||||
int32_t numOfItems;
|
||||
tsem_t sem;
|
||||
} STaosQset;
|
||||
|
||||
typedef struct _taos_qall {
|
||||
|
@ -59,6 +60,7 @@ taos_queue taosOpenQueue() {
|
|||
}
|
||||
|
||||
pthread_mutex_init(&queue->mutex, NULL);
|
||||
|
||||
return queue;
|
||||
}
|
||||
|
||||
|
@ -79,7 +81,7 @@ void taosCloseQueue(taos_queue param) {
|
|||
}
|
||||
|
||||
pthread_mutex_unlock(&queue->mutex);
|
||||
|
||||
pthread_mutex_destroy(&queue->mutex);
|
||||
free(queue);
|
||||
}
|
||||
|
||||
|
@ -92,8 +94,6 @@ void *taosAllocateQitem(int size) {
|
|||
void taosFreeQitem(void *param) {
|
||||
if (param == NULL) return;
|
||||
|
||||
uTrace("item:%p is freed", param);
|
||||
|
||||
char *temp = (char *)param;
|
||||
temp -= sizeof(STaosQnode);
|
||||
free(temp);
|
||||
|
@ -116,11 +116,12 @@ int taosWriteQitem(taos_queue param, int type, void *item) {
|
|||
|
||||
queue->numOfItems++;
|
||||
if (queue->qset) atomic_add_fetch_32(&queue->qset->numOfItems, 1);
|
||||
|
||||
uTrace("item:%p is put into queue:%p, type:%d items:%d", item, queue, type, queue->numOfItems);
|
||||
|
||||
pthread_mutex_unlock(&queue->mutex);
|
||||
|
||||
if (queue->qset) tsem_post(&queue->qset->sem);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -141,7 +142,7 @@ int taosReadQitem(taos_queue param, int *type, void **pitem) {
|
|||
queue->numOfItems--;
|
||||
if (queue->qset) atomic_sub_fetch_32(&queue->qset->numOfItems, 1);
|
||||
code = 1;
|
||||
//uTrace("item:%p is read out from queue, items:%d", *pitem, queue->numOfItems);
|
||||
uTrace("item:%p is read out from queue, items:%d", *pitem, queue->numOfItems);
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&queue->mutex);
|
||||
|
@ -217,12 +218,15 @@ taos_qset taosOpenQset() {
|
|||
}
|
||||
|
||||
pthread_mutex_init(&qset->mutex, NULL);
|
||||
tsem_init(&qset->sem, 0, 0);
|
||||
|
||||
return qset;
|
||||
}
|
||||
|
||||
void taosCloseQset(taos_qset param) {
|
||||
STaosQset *qset = (STaosQset *)param;
|
||||
pthread_mutex_destroy(&qset->mutex);
|
||||
tsem_destroy(&qset->sem);
|
||||
free(qset);
|
||||
}
|
||||
|
||||
|
@ -298,16 +302,17 @@ int taosReadQitemFromQset(taos_qset param, int *type, void **pitem, void **phand
|
|||
STaosQnode *pNode = NULL;
|
||||
int code = 0;
|
||||
|
||||
tsem_wait(&qset->sem);
|
||||
|
||||
pthread_mutex_lock(&qset->mutex);
|
||||
|
||||
for(int i=0; i<qset->numOfQueues; ++i) {
|
||||
//pthread_mutex_lock(&qset->mutex);
|
||||
if (qset->current == NULL)
|
||||
qset->current = qset->head;
|
||||
STaosQueue *queue = qset->current;
|
||||
if (queue) qset->current = queue->next;
|
||||
//pthread_mutex_unlock(&qset->mutex);
|
||||
if (queue == NULL) break;
|
||||
if (queue->head == NULL) continue;
|
||||
|
||||
pthread_mutex_lock(&queue->mutex);
|
||||
|
||||
|
@ -339,16 +344,16 @@ int taosReadAllQitemsFromQset(taos_qset param, taos_qall p2, void **phandle) {
|
|||
STaosQall *qall = (STaosQall *)p2;
|
||||
int code = 0;
|
||||
|
||||
tsem_wait(&qset->sem);
|
||||
pthread_mutex_lock(&qset->mutex);
|
||||
|
||||
for(int i=0; i<qset->numOfQueues; ++i) {
|
||||
// pthread_mutex_lock(&qset->mutex);
|
||||
if (qset->current == NULL)
|
||||
qset->current = qset->head;
|
||||
queue = qset->current;
|
||||
if (queue) qset->current = queue->next;
|
||||
// pthread_mutex_unlock(&qset->mutex);
|
||||
if (queue == NULL) break;
|
||||
if (queue->head == NULL) continue;
|
||||
|
||||
pthread_mutex_lock(&queue->mutex);
|
||||
|
||||
|
@ -364,6 +369,7 @@ int taosReadAllQitemsFromQset(taos_qset param, taos_qall p2, void **phandle) {
|
|||
queue->tail = NULL;
|
||||
queue->numOfItems = 0;
|
||||
atomic_sub_fetch_32(&qset->numOfItems, qall->numOfItems);
|
||||
for (int j=1; j<qall->numOfItems; ++j) tsem_wait(&qset->sem);
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&queue->mutex);
|
||||
|
|
|
@ -121,30 +121,6 @@ static int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec);
|
|||
|
||||
int32_t taosGetTimestampSec() { return (int32_t)time(NULL); }
|
||||
|
||||
int64_t taosGetTimestampMs() {
|
||||
struct timeval systemTime;
|
||||
gettimeofday(&systemTime, NULL);
|
||||
return (int64_t)systemTime.tv_sec * 1000L + (uint64_t)systemTime.tv_usec / 1000;
|
||||
}
|
||||
|
||||
int64_t taosGetTimestampUs() {
|
||||
struct timeval systemTime;
|
||||
gettimeofday(&systemTime, NULL);
|
||||
return (int64_t)systemTime.tv_sec * 1000000L + (uint64_t)systemTime.tv_usec;
|
||||
}
|
||||
|
||||
/*
|
||||
* If tsTimePrecision == 1, taosGetTimestamp will return timestamp in microsecond.
|
||||
* Otherwise, it will return timestamp in millisecond.
|
||||
*/
|
||||
int64_t taosGetTimestamp(int32_t precision) {
|
||||
if (precision == TSDB_TIME_PRECISION_MICRO) {
|
||||
return taosGetTimestampUs();
|
||||
} else {
|
||||
return taosGetTimestampMs();
|
||||
}
|
||||
}
|
||||
|
||||
int32_t taosParseTime(char* timestr, int64_t* time, int32_t len, int32_t timePrec) {
|
||||
/* parse datatime string in with tz */
|
||||
if (strnchr(timestr, 'T', len, false) != NULL) {
|
||||
|
|
|
@ -0,0 +1,116 @@
|
|||
#include <gtest/gtest.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <random>
|
||||
|
||||
#include "tcoding.h"
|
||||
|
||||
static bool test_fixed_uint16(uint16_t value) {
|
||||
char buf[20] = "\0";
|
||||
uint16_t value_check = 0;
|
||||
|
||||
void *ptr1 = taosEncodeFixed16(static_cast<void *>(buf), value);
|
||||
void *ptr2 = taosDecodeFixed16(static_cast<void *>(buf), &value_check);
|
||||
|
||||
return ((ptr2 != NULL) && (value == value_check) && (ptr1 == ptr2));
|
||||
}
|
||||
|
||||
static bool test_fixed_uint32(uint32_t value) {
|
||||
char buf[20] = "\0";
|
||||
uint32_t value_check = 0;
|
||||
|
||||
void *ptr1 = taosEncodeFixed32(static_cast<void *>(buf), value);
|
||||
void *ptr2 = taosDecodeFixed32(static_cast<void *>(buf), &value_check);
|
||||
|
||||
return ((ptr2 != NULL) && (value == value_check) && (ptr1 == ptr2));
|
||||
}
|
||||
|
||||
static bool test_fixed_uint64(uint64_t value) {
|
||||
char buf[20] = "\0";
|
||||
uint64_t value_check = 0;
|
||||
|
||||
void *ptr1 = taosEncodeFixed64(static_cast<void *>(buf), value);
|
||||
void *ptr2 = taosDecodeFixed64(static_cast<void *>(buf), &value_check);
|
||||
|
||||
return ((ptr2 != NULL) && (value == value_check) && (ptr1 == ptr2));
|
||||
}
|
||||
|
||||
static bool test_variant_uint16(uint16_t value) {
|
||||
char buf[20] = "\0";
|
||||
uint16_t value_check = 0;
|
||||
|
||||
void *ptr1 = taosEncodeVariant16(static_cast<void *>(buf), value);
|
||||
void *ptr2 = taosDecodeVariant16(static_cast<void *>(buf), &value_check);
|
||||
|
||||
return ((ptr2 != NULL) && (value == value_check) && (ptr1 == ptr2));
|
||||
}
|
||||
|
||||
static bool test_variant_uint32(uint32_t value) {
|
||||
char buf[20] = "\0";
|
||||
uint32_t value_check = 0;
|
||||
|
||||
void *ptr1 = taosEncodeVariant32(static_cast<void *>(buf), value);
|
||||
void *ptr2 = taosDecodeVariant32(static_cast<void *>(buf), &value_check);
|
||||
|
||||
return ((ptr2 != NULL) && (value == value_check) && (ptr1 == ptr2));
|
||||
}
|
||||
|
||||
static bool test_variant_uint64(uint64_t value) {
|
||||
char buf[20] = "\0";
|
||||
uint64_t value_check = 0;
|
||||
|
||||
void *ptr1 = taosEncodeVariant64(static_cast<void *>(buf), value);
|
||||
void *ptr2 = taosDecodeVariant64(static_cast<void *>(buf), &value_check);
|
||||
|
||||
return ((ptr2 != NULL) && (value == value_check) && (ptr1 == ptr2));
|
||||
}
|
||||
|
||||
TEST(codingTest, fixed_encode_decode) {
|
||||
srand(time(0));
|
||||
|
||||
for (uint16_t value = 0; value <= UINT16_MAX; value++) {
|
||||
ASSERT_TRUE(test_fixed_uint16(value));
|
||||
if (value == UINT16_MAX) break;
|
||||
}
|
||||
|
||||
ASSERT_TRUE(test_fixed_uint32(0));
|
||||
ASSERT_TRUE(test_fixed_uint32(UINT32_MAX));
|
||||
|
||||
for (int i = 0; i < 1000000; i++) {
|
||||
ASSERT_TRUE(test_fixed_uint32(rand()));
|
||||
}
|
||||
|
||||
std::mt19937_64 gen (std::random_device{}());
|
||||
|
||||
ASSERT_TRUE(test_fixed_uint64(0));
|
||||
ASSERT_TRUE(test_fixed_uint64(UINT64_MAX));
|
||||
for (int i = 0; i < 1000000; i++) {
|
||||
ASSERT_TRUE(test_fixed_uint64(gen()));
|
||||
}
|
||||
}
|
||||
|
||||
TEST(codingTest, variant_encode_decode) {
|
||||
srand(time(0));
|
||||
|
||||
for (uint16_t value = 0; value <= UINT16_MAX; value++) {
|
||||
ASSERT_TRUE(test_variant_uint16(value));
|
||||
if (value == UINT16_MAX) break;
|
||||
}
|
||||
|
||||
ASSERT_TRUE(test_variant_uint32(0));
|
||||
ASSERT_TRUE(test_variant_uint32(UINT32_MAX));
|
||||
|
||||
for (int i = 0; i < 5000000; i++) {
|
||||
ASSERT_TRUE(test_variant_uint32(rand()));
|
||||
}
|
||||
|
||||
std::mt19937_64 gen (std::random_device{}());
|
||||
|
||||
ASSERT_TRUE(test_variant_uint64(0));
|
||||
ASSERT_TRUE(test_variant_uint64(UINT64_MAX));
|
||||
for (int i = 0; i < 5000000; i++) {
|
||||
uint64_t value = gen();
|
||||
// printf("%ull\n", value);
|
||||
ASSERT_TRUE(test_variant_uint64(value));
|
||||
}
|
||||
}
|
|
@ -184,6 +184,7 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) {
|
|||
pVnode->status = TAOS_VN_STATUS_INIT;
|
||||
pVnode->refCount = 1;
|
||||
pVnode->version = 0;
|
||||
pVnode->tsdbCfg.tsdbId = pVnode->vgId;
|
||||
taosAddIntHash(tsDnodeVnodesHash, pVnode->vgId, (char *)(&pVnode));
|
||||
|
||||
int32_t code = vnodeReadCfg(pVnode);
|
||||
|
|
|
@ -111,11 +111,13 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe
|
|||
int32_t code = 0;
|
||||
|
||||
dTrace("pVnode:%p vgId:%d, table:%s, start to create", pVnode, pVnode->vgId, pTable->tableId);
|
||||
int16_t numOfColumns = htons(pTable->numOfColumns);
|
||||
int16_t numOfTags = htons(pTable->numOfTags);
|
||||
int32_t sid = htonl(pTable->sid);
|
||||
uint64_t uid = htobe64(pTable->uid);
|
||||
SSchema *pSchema = (SSchema *) pTable->data;
|
||||
int16_t numOfColumns = htons(pTable->numOfColumns);
|
||||
int16_t numOfTags = htons(pTable->numOfTags);
|
||||
int32_t sid = htonl(pTable->sid);
|
||||
uint64_t uid = htobe64(pTable->uid);
|
||||
SSchema * pSchema = (SSchema *)pTable->data;
|
||||
STSchema *pDestTagSchema = NULL;
|
||||
SDataRow dataRow = NULL;
|
||||
|
||||
int32_t totalCols = numOfColumns + numOfTags;
|
||||
|
||||
|
@ -130,7 +132,7 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe
|
|||
tsdbTableSetName(&tCfg, pTable->tableId, false);
|
||||
|
||||
if (numOfTags != 0) {
|
||||
STSchema *pDestTagSchema = tdNewSchema(numOfTags);
|
||||
pDestTagSchema = tdNewSchema(numOfTags);
|
||||
for (int i = numOfColumns; i < totalCols; i++) {
|
||||
tdSchemaAddCol(pDestTagSchema, pSchema[i].type, htons(pSchema[i].colId), htons(pSchema[i].bytes));
|
||||
}
|
||||
|
@ -140,7 +142,7 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe
|
|||
|
||||
char *pTagData = pTable->data + totalCols * sizeof(SSchema);
|
||||
int accumBytes = 0;
|
||||
SDataRow dataRow = tdNewDataRowFromSchema(pDestTagSchema);
|
||||
dataRow = tdNewDataRowFromSchema(pDestTagSchema);
|
||||
|
||||
for (int i = 0; i < numOfTags; i++) {
|
||||
STColumn *pTCol = schemaColAt(pDestTagSchema, i);
|
||||
|
@ -151,6 +153,8 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe
|
|||
}
|
||||
|
||||
code = tsdbCreateTable(pVnode->tsdb, &tCfg);
|
||||
tdFreeDataRow(dataRow);
|
||||
tfree(pDestTagSchema);
|
||||
tfree(pDestSchema);
|
||||
|
||||
dTrace("pVnode:%p vgId:%d, table:%s is created, result:%x", pVnode, pVnode->vgId, pTable->tableId, code);
|
||||
|
|
|
@ -27,8 +27,8 @@ class TDTestCase:
|
|||
tdSql.query('select speed from tb order by ts desc')
|
||||
tdLog.info('tdSql.checkRow(1)')
|
||||
tdSql.checkRows(1)
|
||||
tdLog.info('tdSql.checkData(0, 0, 1234)')
|
||||
tdSql.checkData(0, 0, 1234)
|
||||
tdLog.info("tdSql.checkData(0, 0, '1234')")
|
||||
tdSql.checkData(0, 0, '1234')
|
||||
tdLog.info('=============== step3')
|
||||
tdLog.info("insert into tb values (now+2a, '23456')")
|
||||
tdSql.execute("insert into tb values (now+2a, '23456')")
|
||||
|
@ -37,8 +37,8 @@ class TDTestCase:
|
|||
tdLog.info('tdSql.checkRow(2)')
|
||||
tdSql.checkRows(2)
|
||||
tdLog.info('==> $data00')
|
||||
tdLog.info('tdSql.checkData(0, 0, 23456)')
|
||||
tdSql.checkData(0, 0, 23456)
|
||||
tdLog.info("tdSql.checkData(0, 0, '23456')")
|
||||
tdSql.checkData(0, 0, '23456')
|
||||
tdLog.info('=============== step4')
|
||||
tdLog.info("insert into tb values (now+3a, '345678')")
|
||||
tdSql.error("insert into tb values (now+3a, '345678')")
|
||||
|
@ -49,8 +49,8 @@ class TDTestCase:
|
|||
tdLog.info('tdSql.checkRow(3)')
|
||||
tdSql.checkRows(3)
|
||||
tdLog.info('==> $data00')
|
||||
tdLog.info('tdSql.checkData(0, 0, 34567)')
|
||||
tdSql.checkData(0, 0, 34567)
|
||||
tdLog.info("tdSql.checkData(0, 0, '34567')")
|
||||
tdSql.checkData(0, 0, '34567')
|
||||
tdLog.info('drop database db')
|
||||
tdSql.execute('drop database db')
|
||||
tdLog.info('show databases')
|
||||
|
|
|
@ -93,6 +93,9 @@ class TDSql:
|
|||
if data is None:
|
||||
tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" %
|
||||
(self.sql, row, col, self.queryResult[row][col], data))
|
||||
elif isinstance(data, str):
|
||||
tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" %
|
||||
(self.sql, row, col, self.queryResult[row][col], data))
|
||||
elif isinstance(data, datetime.date):
|
||||
tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" %
|
||||
(self.sql, row, col, self.queryResult[row][col], data))
|
||||
|
|
|
@ -0,0 +1,96 @@
|
|||
cd ../../debug; cmake ..
|
||||
#cd ../../debug; make clean
|
||||
cd ../../debug; make
|
||||
|
||||
cd ../../../debug; cmake ..
|
||||
#cd ../../../debug; make clean
|
||||
cd ../../../debug; make
|
||||
|
||||
|
||||
#general
|
||||
|
||||
./test.sh -f general/db/basic1.sim
|
||||
./test.sh -f general/db/basic2.sim
|
||||
./test.sh -f general/db/basic3.sim
|
||||
./test.sh -f general/db/basic4.sim
|
||||
./test.sh -f general/db/basic5.sim
|
||||
|
||||
./test.sh -f general/table/autocreate.sim
|
||||
./test.sh -f general/table/basic1.sim
|
||||
./test.sh -f general/table/basic2.sim
|
||||
./test.sh -f general/table/basic3.sim
|
||||
./test.sh -f general/table/bigint.sim
|
||||
./test.sh -f general/table/bool.sim
|
||||
./test.sh -f general/table/column_name.sim
|
||||
./test.sh -f general/table/column_num.sim
|
||||
./test.sh -f general/table/db.table.sim
|
||||
./test.sh -f general/table/double.sim
|
||||
./test.sh -f general/table/float.sim
|
||||
./test.sh -f general/table/int.sim
|
||||
./test.sh -f general/table/smallint.sim
|
||||
./test.sh -f general/table/tinyint.sim
|
||||
|
||||
./test.sh -f general/user/basic1.sim
|
||||
./test.sh -f general/user/pass_alter.sim
|
||||
./test.sh -f general/user/pass_len.sim
|
||||
./test.sh -f general/user/user_create.sim
|
||||
./test.sh -f general/user/user_len.sim
|
||||
|
||||
|
||||
# unique
|
||||
|
||||
./test.sh -u -f unique/account/account_create.sim
|
||||
./test.sh -u -f unique/account/account_delete.sim
|
||||
./test.sh -u -f unique/account/account_len.sim
|
||||
./test.sh -u -f unique/account/authority.sim
|
||||
./test.sh -u -f unique/account/basic.sim
|
||||
./test.sh -u -f unique/account/paras.sim
|
||||
./test.sh -u -f unique/account/pass_alter.sim
|
||||
./test.sh -u -f unique/account/pass_len.sim
|
||||
./test.sh -u -f unique/account/usage.sim
|
||||
./test.sh -u -f unique/account/user_create.sim
|
||||
./test.sh -u -f unique/account/user_len.sim
|
||||
|
||||
#big
|
||||
|
||||
./test.sh -u -f unique/cluster/balance1.sim
|
||||
./test.sh -u -f unique/cluster/balance2.sim
|
||||
./test.sh -u -f unique/cluster/balance3.sim
|
||||
|
||||
./test.sh -u -f unique/column/replica3.sim
|
||||
|
||||
./test.sh -u -f unique/db/replica_add12.sim
|
||||
./test.sh -u -f unique/db/replica_add13.sim
|
||||
./test.sh -u -f unique/db/replica_add23.sim
|
||||
./test.sh -u -f unique/db/replica_reduce21.sim
|
||||
./test.sh -u -f unique/db/replica_reduce32.sim
|
||||
./test.sh -u -f unique/db/replica_reduce31.sim
|
||||
./test.sh -u -f unique/db/replica_part.sim
|
||||
|
||||
./test.sh -u -f unique/dnode/balance1.sim
|
||||
./test.sh -u -f unique/dnode/balance2.sim
|
||||
./test.sh -u -f unique/dnode/balance3.sim
|
||||
./test.sh -u -f unique/dnode/balancex.sim
|
||||
./test.sh -u -f unique/dnode/offline1.sim
|
||||
./test.sh -u -f unique/dnode/offline2.sim
|
||||
|
||||
./test.sh -u -f unique/http/admin.sim
|
||||
|
||||
#import
|
||||
|
||||
#metrics
|
||||
|
||||
./test.sh -u -f unique/mnode/mgmt22.sim
|
||||
./test.sh -u -f unique/mnode/mgmt23.sim
|
||||
./test.sh -u -f unique/mnode/mgmt24.sim
|
||||
./test.sh -u -f unique/mnode/mgmt25.sim
|
||||
./test.sh -u -f unique/mnode/mgmt26.sim
|
||||
./test.sh -u -f unique/mnode/mgmt33.sim
|
||||
./test.sh -u -f unique/mnode/mgmt34.sim
|
||||
|
||||
#stream
|
||||
|
||||
#table
|
||||
|
||||
./test.sh -u -f unique/vnode/replica2_basic2.sim
|
||||
./test.sh -u -f unique/vnode/replica3_basic.sim
|
|
@ -1,11 +0,0 @@
|
|||
./test.sh -f general/user/basic1.sim
|
||||
|
||||
./test.sh -f general/db/basic1.sim
|
||||
./test.sh -f general/db/basic2.sim
|
||||
./test.sh -f general/db/basic3.sim
|
||||
./test.sh -f general/db/basic4.sim
|
||||
./test.sh -f general/db/basic5.sim
|
||||
|
||||
./test.sh -f general/table/basic1.sim
|
||||
./test.sh -f general/table/basic2.sim
|
||||
./test.sh -f general/table/basic3.sim
|
|
@ -76,4 +76,4 @@ if $rows != 1 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -94,4 +94,6 @@ sql drop account oroot
|
|||
sql show accounts
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -88,3 +88,5 @@ sql show users
|
|||
if $rows != 3 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -227,7 +227,8 @@ print ============= step6
|
|||
sql close
|
||||
sql connect owrite
|
||||
sleep 2000
|
||||
|
||||
sql reset query cache
|
||||
sleep 1000
|
||||
sql create database d1
|
||||
sql create database d3
|
||||
sql create table d1.t1 (ts timestamp, i int)
|
||||
|
@ -342,3 +343,5 @@ sql drop database d1
|
|||
sql drop database d2
|
||||
sql drop database d3
|
||||
sql drop database d4
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -42,4 +42,4 @@ endi
|
|||
print $data00 $data01 $data02
|
||||
print $data10 $data11 $data22
|
||||
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -109,3 +109,5 @@ endi
|
|||
if $data16 != 0.000/10.000 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -112,3 +112,5 @@ sql alter user oroot pass 'taosdata'
|
|||
sql drop account oroot
|
||||
sql drop user read
|
||||
sql drop user write
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -78,4 +78,4 @@ if $rows != 3 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -4,7 +4,7 @@ run unique/account/account_len.sim
|
|||
run unique/account/authority.sim
|
||||
run unique/account/basic.sim
|
||||
run unique/account/paras.sim
|
||||
#run unique/account/pass_alter.sim
|
||||
run unique/account/pass_alter.sim
|
||||
run unique/account/pass_len.sim
|
||||
run unique/account/usage.sim
|
||||
run unique/account/user_create.sim
|
||||
|
|
|
@ -54,4 +54,6 @@ if $data05 != 0/10 then
|
|||
endi
|
||||
|
||||
print =============== check grant
|
||||
sql_error create database d6
|
||||
sql_error create database d6
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -81,7 +81,4 @@ step42:
|
|||
|
||||
sql drop user read
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -89,3 +89,5 @@ sql show accounts
|
|||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
|
@ -1,9 +1,3 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
system sh/stop_dnodes.sh
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
|
||||
|
|
|
@ -92,7 +92,7 @@ $x = 0
|
|||
show2:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show2
|
||||
|
@ -134,7 +134,7 @@ $x = 0
|
|||
show4:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show4
|
||||
|
@ -442,19 +442,24 @@ sql reset query cache
|
|||
sleep 1000
|
||||
|
||||
sql use c_b1_d1
|
||||
sql select * from c_b1_t1
|
||||
sql select * from c_b1_d1.c_b1_t1
|
||||
print $rows
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $rows != 5 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b1_d2
|
||||
sql select * from c_b1_t2
|
||||
if $rows == 6 then
|
||||
sql select * from c_b1_d2.c_b1_t2
|
||||
print $rows
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $rows != 6 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b1_d3
|
||||
sql select * from c_b1_t3 order by t desc
|
||||
sql select * from c_b1_d3.c_b1_t3 order by t desc
|
||||
print $rows
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $rows != 6 then
|
||||
return -1
|
||||
|
@ -464,11 +469,13 @@ if $data01 != 36 then
|
|||
endi
|
||||
|
||||
sql use c_b1_d4
|
||||
sql select * from c_b1_t4 order by t desc
|
||||
sql select * from c_b1_d4.c_b1_t4 order by t desc
|
||||
print $rows
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
|
||||
sql use c_b1_d5
|
||||
sql select * from c_b1_t5 order by t desc
|
||||
sql select * from c_b1_d5.c_b1_t5 order by t desc
|
||||
print $rows
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 51 then
|
||||
return -1
|
||||
|
@ -487,7 +494,8 @@ if $data41 != 55 then
|
|||
endi
|
||||
|
||||
sql use c_b1_d6
|
||||
sql select * from c_b1_t6 order by t desc
|
||||
sql select * from c_b1_d6.c_b1_t6 order by t desc
|
||||
print $rows
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 61 then
|
||||
return -1
|
||||
|
@ -506,7 +514,8 @@ if $data41 != 65 then
|
|||
endi
|
||||
|
||||
sql use c_b1_d7
|
||||
sql select * from c_b1_t7 order by t desc
|
||||
sql select * from c_b1_d7.c_b1_t7 order by t desc
|
||||
print $rows
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 71 then
|
||||
return -1
|
||||
|
@ -525,7 +534,8 @@ if $data41 != 75 then
|
|||
endi
|
||||
|
||||
sql use c_b1_d8
|
||||
sql select * from c_b1_t8 order by t desc
|
||||
sql select * from c_b1_d8.c_b1_t8 order by t desc
|
||||
print $rows
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 81 then
|
||||
return -1
|
||||
|
@ -543,11 +553,12 @@ if $data41 != 85 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
print ============================================ over
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
|
||||
|
||||
|
||||
print ============================================ over=
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -1,789 +0,0 @@
|
|||
system sh/stop_dnodes.sh
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
system sh/deploy.sh -n dnode2 -i 2
|
||||
system sh/deploy.sh -n dnode3 -i 3
|
||||
system sh/deploy.sh -n dnode4 -i 4
|
||||
|
||||
system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3
|
||||
|
||||
system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
|
||||
|
||||
system sh/cfg.sh -n dnode1 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode2 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode3 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode4 -c clog -v 1
|
||||
|
||||
system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0
|
||||
system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0
|
||||
system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0
|
||||
system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0
|
||||
|
||||
print ============== step1
|
||||
print ========= start dnode1
|
||||
system sh/exec_up.sh -n dnode1 -s start
|
||||
sql connect
|
||||
|
||||
sql create database c_b1_d1 tables 4
|
||||
sql use c_b1_d1
|
||||
|
||||
sql create table c_b1_t1 (t timestamp, i int)
|
||||
sql insert into c_b1_t1 values(now+1s, 15)
|
||||
sql insert into c_b1_t1 values(now+2s, 14)
|
||||
sql insert into c_b1_t1 values(now+2s, 13)
|
||||
sql insert into c_b1_t1 values(now+3s, 12)
|
||||
sql insert into c_b1_t1 values(now+4s, 11)
|
||||
|
||||
sql create database c_b1_d2 tables 4
|
||||
sql use c_b1_d2
|
||||
sql create table c_b1_t2 (t timestamp, i int)
|
||||
sql insert into c_b1_t2 values(now+1s, 25)
|
||||
sql insert into c_b1_t2 values(now+2s, 24)
|
||||
sql insert into c_b1_t2 values(now+3s, 23)
|
||||
sql insert into c_b1_t2 values(now+4s, 22)
|
||||
sql insert into c_b1_t2 values(now+5s, 21)
|
||||
|
||||
sql show dnodes
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
return -1
|
||||
endi
|
||||
if $dnode2Vnodes != null then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print ============================== step2
|
||||
print ========= start dnode2
|
||||
sleep 2000
|
||||
sql create dnode $hostname2
|
||||
system sh/exec_up.sh -n dnode2 -s start
|
||||
sleep 5000
|
||||
|
||||
$x = 0
|
||||
show2:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show2
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
if $dnode1Vnodes != 3 then
|
||||
goto show2
|
||||
endi
|
||||
if $dnode2Vnodes != 3 then
|
||||
goto show2
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
print ============================== step3
|
||||
print ========= add db3
|
||||
sql create database c_b1_d3 tables 4
|
||||
sql use c_b1_d3
|
||||
sql create table c_b1_t3 (t timestamp, i int)
|
||||
sql insert into c_b1_t3 values(now+1s, 35)
|
||||
sql insert into c_b1_t3 values(now+2s, 34)
|
||||
sql insert into c_b1_t3 values(now+3s, 33)
|
||||
sql insert into c_b1_t3 values(now+4s, 32)
|
||||
sql insert into c_b1_t3 values(now+5s, 31)
|
||||
|
||||
print ============================== step4
|
||||
print ========= drop dnode2
|
||||
sql drop dnode $hostname2
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show4:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show4
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
goto show4
|
||||
endi
|
||||
if $dnode2Vnodes != null then
|
||||
goto show4
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
print ============================== step5
|
||||
print ========= add dnode2
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
sleep 5000
|
||||
system sh/exec_up.sh -n dnode2 -s start
|
||||
sql create dnode $hostname2
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show5:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show5
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show5
|
||||
endi
|
||||
if $dnode2Vnodes != 3 then
|
||||
goto show5
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
print ============================== step6
|
||||
print ========= drop dnode1
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
print stop dnode1 and sleep 10000
|
||||
sleep 10000
|
||||
|
||||
sql drop dnode $hostname1
|
||||
print drop dnode1 and sleep 9000
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show6:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show6
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
if $dnode1Vnodes != null then
|
||||
goto show6
|
||||
endi
|
||||
if $dnode2Vnodes != 1 then
|
||||
goto show6
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
print ============================== step7
|
||||
print ========= add dnode1
|
||||
sql create dnode $hostname1
|
||||
sleep 23000
|
||||
system sh/exec_up.sh -n dnode1 -s start
|
||||
sleep 14000
|
||||
|
||||
$x = 0
|
||||
show7:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show7
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
if $dnode1Vnodes != 3 then
|
||||
goto show7
|
||||
endi
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show7
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
print ============================== step8
|
||||
print ========= drop dnode2
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
print stop dnode2 and sleep 10000
|
||||
sleep 20000
|
||||
sql drop dnode $hostname2
|
||||
print drop dnode2 and sleep 9000
|
||||
sleep 19000
|
||||
|
||||
$x = 0
|
||||
show8:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show8
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
goto show8
|
||||
endi
|
||||
if $dnode2Vnodes != null then
|
||||
goto show8
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
if $dnode1Role != master then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print ============================== step9
|
||||
print ========= add dnode2
|
||||
sql create dnode $hostname2
|
||||
system sh/exec_up.sh -n dnode2 -s start
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show9:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show9
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show9
|
||||
endi
|
||||
if $dnode2Vnodes != 3 then
|
||||
goto show9
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
print ============================== step10
|
||||
print ========= add db4
|
||||
sql create database c_b1_d4 tables 4
|
||||
sql use c_b1_d4
|
||||
sql create table c_b1_t4 (t timestamp, i int)
|
||||
sql insert into c_b1_t4 values(now+1s, 45)
|
||||
sql insert into c_b1_t4 values(now+2s, 44)
|
||||
sql insert into c_b1_t4 values(now+3s, 43)
|
||||
sql insert into c_b1_t4 values(now+4s, 42)
|
||||
sql insert into c_b1_t4 values(now+5s, 41)
|
||||
|
||||
$x = 0
|
||||
show10:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show10
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show10
|
||||
endi
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show10
|
||||
endi
|
||||
|
||||
sql use c_b1_d3
|
||||
sql insert into c_b1_t3 values(now+1s, 35)
|
||||
|
||||
sql use c_b1_d2
|
||||
sql insert into c_b1_t2 values(now+1s, 25)
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
|
||||
if $dnode1Role != master then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print ============================== step11
|
||||
print ========= drop dnode2
|
||||
sleep 2000
|
||||
sql drop dnode $hostname2
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show11:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show11
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
if $dnode1Vnodes != 0 then
|
||||
goto show11
|
||||
endi
|
||||
if $dnode2Vnodes != null then
|
||||
goto show11
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
|
||||
print ============================== step12
|
||||
print ========= add db5
|
||||
sql create database c_b1_d5 tables 4
|
||||
sql use c_b1_d5
|
||||
sql create table c_b1_t5 (t timestamp, i int) -x error3
|
||||
print no enough vnodes, but create success
|
||||
return -1
|
||||
error3:
|
||||
|
||||
print ============================== step13
|
||||
print ========= add dnode2
|
||||
sql create dnode $hostname2
|
||||
system sh/exec_up.sh -n dnode2 -s start
|
||||
sleep 9000
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
sql use c_b1_d5;
|
||||
$x = 0
|
||||
create5:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql create table c_b1_t5 (t timestamp, i int) -x create5
|
||||
sql insert into c_b1_t5 values(now+1s, 55)
|
||||
sql insert into c_b1_t5 values(now+2s, 54)
|
||||
sql insert into c_b1_t5 values(now+3s, 53)
|
||||
sql insert into c_b1_t5 values(now+4s, 52)
|
||||
sql insert into c_b1_t5 values(now+5s, 51)
|
||||
|
||||
sql create database c_b1_d6
|
||||
sql use c_b1_d6
|
||||
$x = 0
|
||||
create6:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql create table c_b1_t6 (t timestamp, i int) -x create6
|
||||
sql insert into c_b1_t6 values(now+1s, 65)
|
||||
sql insert into c_b1_t6 values(now+2s, 64)
|
||||
sql insert into c_b1_t6 values(now+3s, 63)
|
||||
sql insert into c_b1_t6 values(now+4s, 62)
|
||||
sql insert into c_b1_t6 values(now+5s, 61)
|
||||
|
||||
sql show dnodes
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
|
||||
#if $dnode1Vnodes != 1 then
|
||||
# return -1
|
||||
#endi
|
||||
#if $dnode2Vnodes != 1 then
|
||||
# return -1
|
||||
#endi
|
||||
|
||||
print ============================== step14
|
||||
print ========= add dnode3
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
sleep 2000
|
||||
sql create dnode $hostname3
|
||||
system sh/exec_up.sh -n dnode3 -s start
|
||||
sleep 15000
|
||||
|
||||
$x = 0
|
||||
show14:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show14
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show14
|
||||
endi
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show14
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
goto show14
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
|
||||
print ============================== step15
|
||||
print ========= create db7 db8
|
||||
|
||||
sql create database c_b1_d7 tables 4
|
||||
sql use c_b1_d7
|
||||
sql create table c_b1_t7 (t timestamp, i int)
|
||||
sql insert into c_b1_t7 values(now+1s, 75)
|
||||
sql insert into c_b1_t7 values(now+2s, 74)
|
||||
sql insert into c_b1_t7 values(now+3s, 73)
|
||||
sql insert into c_b1_t7 values(now+4s, 72)
|
||||
sql insert into c_b1_t7 values(now+5s, 71)
|
||||
|
||||
sql create database c_b1_d8
|
||||
sql use c_b1_d8
|
||||
sql create table c_b1_t8 (t timestamp, i int)
|
||||
sql insert into c_b1_t8 values(now+1s, 85)
|
||||
sql insert into c_b1_t8 values(now+2s, 84)
|
||||
sql insert into c_b1_t8 values(now+3s, 83)
|
||||
sql insert into c_b1_t8 values(now+4s, 82)
|
||||
sql insert into c_b1_t8 values(now+5s, 81)
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
print ========== add dnode4
|
||||
sleep 2000
|
||||
sql create dnode $hostname4
|
||||
print sql create dnode $hostname4 over
|
||||
system sh/exec_up.sh -n dnode4 -s start
|
||||
print sleep 12000
|
||||
sleep 12000
|
||||
print sleep 12000 over
|
||||
|
||||
$x = 0
|
||||
show15:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 15 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show15
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show15
|
||||
endi
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show15
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
goto show15
|
||||
endi
|
||||
if $dnode4Vnodes != 2 then
|
||||
goto show15
|
||||
endi
|
||||
|
||||
print ============================== step16
|
||||
print ========= drop dnode4, create db9
|
||||
|
||||
sql drop dnode $hostname4
|
||||
sleep 10000
|
||||
sql create database c_b1_d9 tables 4
|
||||
sql use c_b1_d9
|
||||
sql create table c_b1_t9 (t timestamp, i int)
|
||||
sql insert into c_b1_t9 values(now+1s, 95)
|
||||
sql insert into c_b1_t9 values(now+2s, 94)
|
||||
sql insert into c_b1_t9 values(now+3s, 93)
|
||||
sql insert into c_b1_t9 values(now+4s, 92)
|
||||
sql insert into c_b1_t9 values(now+5s, 91)
|
||||
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
|
||||
$x = 0
|
||||
show16:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show16
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
goto show16
|
||||
endi
|
||||
if $dnode2Vnodes != 1 then
|
||||
goto show16
|
||||
endi
|
||||
if $dnode3Vnodes != 1 then
|
||||
goto show16
|
||||
endi
|
||||
|
||||
print ============================== step17
|
||||
print ========= check data
|
||||
|
||||
sleep 2000
|
||||
|
||||
sql use c_b1_d1
|
||||
sql select * from c_b1_t1 order by t desc -x s1
|
||||
s1:
|
||||
|
||||
sql use c_b1_d2
|
||||
sql select * from c_b1_t2 order by t desc -x s2
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
|
||||
if $data01 != 25 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
if $data11 != 21 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 22 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 23 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 24 then
|
||||
return -1
|
||||
endi
|
||||
s2:
|
||||
|
||||
sql use c_b1_d3
|
||||
sql select * from c_b1_t3 order by t desc -x s3
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 35 then
|
||||
return -1
|
||||
endi
|
||||
s3:
|
||||
|
||||
sql use c_b1_d4
|
||||
sql select * from c_b1_d4.c_b1_t4 order by t desc -x s4
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
s4:
|
||||
|
||||
|
||||
sql use c_b1_d5
|
||||
sql select * from c_b1_d5.c_b1_t5 order by t desc -x s5
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 51 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 52 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 53 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 54 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 55 then
|
||||
return -1
|
||||
endi
|
||||
s5:
|
||||
|
||||
sql use c_b1_d6
|
||||
sql select * from c_b1_d6.c_b1_t6 order by t desc -x s6
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 61 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 62 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 63 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 64 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 65 then
|
||||
return -1
|
||||
endi
|
||||
s6:
|
||||
|
||||
sql use c_b1_d7
|
||||
sql select * from c_b1_d7.c_b1_t7 order by t desc -x s7
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 71 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 72 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 73 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 74 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 75 then
|
||||
return -1
|
||||
endi
|
||||
s7:
|
||||
|
||||
sql use c_b1_d9
|
||||
sql select * from c_b1_t9 order by t desc -x s8
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 91 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 92 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 93 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 94 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 95 then
|
||||
return -1
|
||||
endi
|
||||
s8:
|
||||
|
||||
print ============================================ over
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
|
||||
|
||||
|
|
@ -1,716 +0,0 @@
|
|||
system sh/stop_dnodes.sh
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
system sh/deploy.sh -n dnode2 -i 2
|
||||
system sh/deploy.sh -n dnode3 -i 3
|
||||
system sh/deploy.sh -n dnode4 -i 4
|
||||
system sh/deploy.sh -n dnode5 -i 5
|
||||
|
||||
system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1
|
||||
system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1
|
||||
system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1
|
||||
system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1
|
||||
system sh/cfg.sh -n dnode5 -c numOfMPeers -v 1
|
||||
|
||||
system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode5 -c numOfTotalVnodes -v 4
|
||||
|
||||
system sh/cfg.sh -n dnode1 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode2 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode3 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode4 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode5 -c clog -v 1
|
||||
|
||||
system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4
|
||||
system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4
|
||||
system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4
|
||||
system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4
|
||||
system sh/cfg.sh -n dnode5 -c mgmtEqualVnodeNum -v 4
|
||||
|
||||
print ============== step1
|
||||
print ========= start dnode1
|
||||
system sh/exec_up.sh -n dnode1 -s start
|
||||
sleep 3000
|
||||
sql connect
|
||||
sql create dnode $hostname2
|
||||
system sh/exec_up.sh -n dnode2 -s start
|
||||
|
||||
$x = 0
|
||||
show1:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show1
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode2Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode3Vnodes
|
||||
|
||||
if $dnode1Vnodes != 4 then
|
||||
goto show1
|
||||
endi
|
||||
if $dnode2Vnodes != 4 then
|
||||
goto show1
|
||||
endi
|
||||
sleep 1000
|
||||
|
||||
sql create database c_b1_d1 tables 4
|
||||
sql use c_b1_d1
|
||||
|
||||
sql create table c_b1_t1 (t timestamp, i int)
|
||||
sql insert into c_b1_t1 values(now+1s, 15)
|
||||
sql insert into c_b1_t1 values(now+2s, 14)
|
||||
sql insert into c_b1_t1 values(now+2s, 13)
|
||||
sql insert into c_b1_t1 values(now+3s, 12)
|
||||
sql insert into c_b1_t1 values(now+4s, 11)
|
||||
|
||||
sql create database c_b1_d2 tables 4
|
||||
sql use c_b1_d2
|
||||
sql create table c_b1_t2 (t timestamp, i int)
|
||||
sql insert into c_b1_t2 values(now+1s, 25)
|
||||
sql insert into c_b1_t2 values(now+2s, 24)
|
||||
sql insert into c_b1_t2 values(now+3s, 23)
|
||||
sql insert into c_b1_t2 values(now+4s, 22)
|
||||
sql insert into c_b1_t2 values(now+5s, 21)
|
||||
|
||||
sql show dnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode2Vnodes != 2 then
|
||||
return -1
|
||||
endi
|
||||
if $dnode3Vnodes != null then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print ============================== step2
|
||||
print ========= start dnode3
|
||||
sleep 3000
|
||||
sql create dnode $hostname3
|
||||
system sh/exec_up.sh -n dnode3 -s start
|
||||
sleep 8000
|
||||
|
||||
$x = 0
|
||||
show2:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show2
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode2Vnodes != 3 then
|
||||
goto show2
|
||||
endi
|
||||
if $dnode3Vnodes != 3 then
|
||||
goto show2
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
print ============================== step3
|
||||
print ========= add db3
|
||||
sql create database c_b1_d3 tables 4
|
||||
sql use c_b1_d3
|
||||
sql create table c_b1_t3 (t timestamp, i int)
|
||||
sql insert into c_b1_t3 values(now+1s, 35)
|
||||
sql insert into c_b1_t3 values(now+2s, 34)
|
||||
sql insert into c_b1_t3 values(now+3s, 33)
|
||||
sql insert into c_b1_t3 values(now+4s, 32)
|
||||
sql insert into c_b1_t3 values(now+5s, 31)
|
||||
|
||||
|
||||
print ============================== step4
|
||||
print ========= drop dnode3
|
||||
sql drop dnode $hostname3
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show4:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show4
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode2Vnodes != 1 then
|
||||
goto show4
|
||||
endi
|
||||
if $dnode3Vnodes != null then
|
||||
goto show4
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
print ============================== step5
|
||||
print ========= add dnode3
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
sleep 5000
|
||||
system sh/exec_up.sh -n dnode3 -s start
|
||||
sql create dnode $hostname3
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show5:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show5
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show5
|
||||
endi
|
||||
if $dnode3Vnodes != 3 then
|
||||
goto show5
|
||||
endi
|
||||
|
||||
print ============================== step6
|
||||
print ========= drop dnode2
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
print stop dnode2 and sleep 10000
|
||||
sleep 10000
|
||||
|
||||
sql drop dnode $hostname2
|
||||
print drop dnode2 and sleep 9000
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show6:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show6
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode2Vnodes != null then
|
||||
goto show6
|
||||
endi
|
||||
if $dnode3Vnodes != 1 then
|
||||
goto show6
|
||||
endi
|
||||
|
||||
#only c_b2_d2 has data, c_b1_d1 and c_b1_d3 is null
|
||||
|
||||
print ============================== step7
|
||||
print ========= add dnode2
|
||||
sql create dnode $hostname2
|
||||
system sh/exec_up.sh -n dnode2 -s start
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show7:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show7
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode2Vnodes != 3 then
|
||||
goto show7
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
goto show7
|
||||
endi
|
||||
|
||||
print ============================== step8
|
||||
print ========= drop dnode3
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
print stop dnode3 and sleep 10000
|
||||
sleep 10000
|
||||
sql drop dnode $hostname3
|
||||
print drop dnode3 and sleep 9000
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show8:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show8
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode2Vnodes != 1 then
|
||||
goto show8
|
||||
endi
|
||||
if $dnode3Vnodes != null then
|
||||
goto show8
|
||||
endi
|
||||
|
||||
print ============================== step9
|
||||
print ========= add dnode3
|
||||
sql create dnode $hostname3
|
||||
system sh/exec_up.sh -n dnode3 -s start
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show9:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show9
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show9
|
||||
endi
|
||||
if $dnode3Vnodes != 3 then
|
||||
goto show9
|
||||
endi
|
||||
|
||||
print ============================== step10
|
||||
print ========= add db4
|
||||
sql create database c_b1_d4 tables 4
|
||||
sql use c_b1_d4
|
||||
sql create table c_b1_t4 (t timestamp, i int)
|
||||
sql insert into c_b1_t4 values(now+1s, 45)
|
||||
sql insert into c_b1_t4 values(now+2s, 44)
|
||||
sql insert into c_b1_t4 values(now+3s, 43)
|
||||
sql insert into c_b1_t4 values(now+4s, 42)
|
||||
sql insert into c_b1_t4 values(now+5s, 41)
|
||||
|
||||
$x = 0
|
||||
show10:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show10
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show10
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
goto show10
|
||||
endi
|
||||
|
||||
sql use c_b1_d3
|
||||
sql insert into c_b1_t3 values(now+1s, 35)
|
||||
|
||||
sql use c_b1_d2
|
||||
sql insert into c_b1_t2 values(now+1s, 25)
|
||||
|
||||
print ============================== step11
|
||||
print ========= drop dnode3
|
||||
sql drop dnode $hostname3
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show11:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show11
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode2Vnodes != 0 then
|
||||
goto show11
|
||||
endi
|
||||
if $dnode3Vnodes != null then
|
||||
goto show11
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
|
||||
print ============================== step12
|
||||
print ========= add db5
|
||||
sql create database c_b1_d5 tables 4
|
||||
sql use c_b1_d5
|
||||
|
||||
print ============================== step13
|
||||
print ========= add dnode3
|
||||
sql create dnode $hostname3
|
||||
system sh/exec_up.sh -n dnode3 -s start
|
||||
sleep 9000
|
||||
|
||||
sql use c_b1_d5;
|
||||
$x = 0
|
||||
create5:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql create table c_b1_t5 (t timestamp, i int) -x create5
|
||||
sql insert into c_b1_t5 values(now+1s, 55)
|
||||
sql insert into c_b1_t5 values(now+2s, 54)
|
||||
sql insert into c_b1_t5 values(now+3s, 53)
|
||||
sql insert into c_b1_t5 values(now+4s, 52)
|
||||
sql insert into c_b1_t5 values(now+5s, 51)
|
||||
|
||||
sql create database c_b1_d6 tables 4
|
||||
sql use c_b1_d6
|
||||
$x = 0
|
||||
create6:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql create table c_b1_t6 (t timestamp, i int) -x create6
|
||||
sql insert into c_b1_t6 values(now+1s, 65)
|
||||
sql insert into c_b1_t6 values(now+2s, 64)
|
||||
sql insert into c_b1_t6 values(now+3s, 63)
|
||||
sql insert into c_b1_t6 values(now+4s, 62)
|
||||
sql insert into c_b1_t6 values(now+5s, 61)
|
||||
|
||||
sql show dnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
#if $dnode2Vnodes != 1 then
|
||||
# return -1
|
||||
#endi
|
||||
#if $dnode3Vnodes != 1 then
|
||||
# return -1
|
||||
#endi
|
||||
|
||||
print ============================== step14
|
||||
print ========= add dnode4
|
||||
sql create dnode $hostname4
|
||||
system sh/exec_up.sh -n dnode4 -s start
|
||||
sleep 10000
|
||||
|
||||
$x = 0
|
||||
show14:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show14
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show14
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
goto show14
|
||||
endi
|
||||
if $dnode4Vnodes != 2 then
|
||||
goto show14
|
||||
endi
|
||||
|
||||
print ============================== step15
|
||||
print ========= create db7 db8
|
||||
|
||||
sql create database c_b1_d7 tables 4
|
||||
sql use c_b1_d7
|
||||
sql create table c_b1_t7 (t timestamp, i int)
|
||||
sql insert into c_b1_t7 values(now+1s, 75)
|
||||
sql insert into c_b1_t7 values(now+2s, 74)
|
||||
sql insert into c_b1_t7 values(now+3s, 73)
|
||||
sql insert into c_b1_t7 values(now+4s, 72)
|
||||
sql insert into c_b1_t7 values(now+5s, 71)
|
||||
|
||||
sql create database c_b1_d8 tables 4
|
||||
sql use c_b1_d8
|
||||
sql create table c_b1_t8 (t timestamp, i int)
|
||||
sql insert into c_b1_t8 values(now+1s, 85)
|
||||
sql insert into c_b1_t8 values(now+2s, 84)
|
||||
sql insert into c_b1_t8 values(now+3s, 83)
|
||||
sql insert into c_b1_t8 values(now+4s, 82)
|
||||
sql insert into c_b1_t8 values(now+5s, 81)
|
||||
|
||||
|
||||
print ========== add dnode5
|
||||
sql create dnode $hostname5
|
||||
print sql create dnode $hostname5 over
|
||||
system sh/exec_up.sh -n dnode5 -s start
|
||||
print sleep 12000
|
||||
sleep 12000
|
||||
print sleep 12000 over
|
||||
|
||||
$x = 0
|
||||
show15:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show15
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
$dnode5Vnodes = $data2_5
|
||||
print dnode5 $dnode5Vnodes
|
||||
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show15
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
goto show15
|
||||
endi
|
||||
if $dnode4Vnodes != 2 then
|
||||
goto show15
|
||||
endi
|
||||
if $dnode5Vnodes != 2 then
|
||||
goto show15
|
||||
endi
|
||||
|
||||
print ============================== step16
|
||||
print ========= drop dnode5, create db9
|
||||
|
||||
sql drop dnode $hostname5
|
||||
sleep 10000
|
||||
sql create database c_b1_d9 tables 4
|
||||
sql use c_b1_d9
|
||||
sql create table c_b1_t9 (t timestamp, i int)
|
||||
sql insert into c_b1_t9 values(now+1s, 95)
|
||||
sql insert into c_b1_t9 values(now+2s, 94)
|
||||
sql insert into c_b1_t9 values(now+3s, 93)
|
||||
sql insert into c_b1_t9 values(now+4s, 92)
|
||||
sql insert into c_b1_t9 values(now+5s, 91)
|
||||
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
|
||||
$x = 0
|
||||
show16:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 50 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show16
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode2Vnodes != 1 then
|
||||
goto show16
|
||||
endi
|
||||
if $dnode3Vnodes != 1 then
|
||||
goto show16
|
||||
endi
|
||||
if $dnode4Vnodes != 1 then
|
||||
goto show16
|
||||
endi
|
||||
|
||||
print ============================== step17
|
||||
print ========= check data
|
||||
|
||||
sql use c_b1_d1
|
||||
sql select * from c_b1_t1
|
||||
if $rows != 0 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b1_d2
|
||||
sql select * from c_b1_t2
|
||||
if $rows != 6 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b1_d3
|
||||
sql select * from c_b1_t3 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
if $data01 != 35 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b1_d4
|
||||
sql select * from c_b1_t4 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 41 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 42 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 43 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 44 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 45 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b1_d5
|
||||
sql select * from c_b1_t5 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 51 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 52 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 53 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 54 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 55 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b1_d6
|
||||
sql select * from c_b1_t6 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 61 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 62 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 63 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 64 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 65 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b1_d7
|
||||
sql select * from c_b1_t7 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 71 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 72 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 73 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 74 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 75 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b1_d8
|
||||
sql select * from c_b1_t8 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 81 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 82 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 83 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 84 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 85 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b1_d9
|
||||
sql select * from c_b1_t9 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 91 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 92 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 93 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 94 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 95 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
|
||||
print ============================================ over
|
||||
#system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
#system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
#system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
#system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
|
||||
|
||||
|
|
@ -128,13 +128,13 @@ print dnode2 $dnode2Vnodes
|
|||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
if $dnode1Vnodes != 3 then
|
||||
goto show2
|
||||
endi
|
||||
if $dnode2Vnodes != null then
|
||||
goto show2
|
||||
endi
|
||||
if $dnode3Vnodes != 1 then
|
||||
if $dnode3Vnodes != 3 then
|
||||
goto show2
|
||||
endi
|
||||
|
||||
|
@ -151,18 +151,9 @@ print dnode4 ==> $dnode4Role
|
|||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
|
||||
print ============================== step3
|
||||
print ========= start dnode2
|
||||
sql create dnode $hostname2
|
||||
|
||||
sleep 3000
|
||||
system sh/deploy.sh -n dnode2 -i 2
|
||||
system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode2 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0
|
||||
sleep 3000
|
||||
|
||||
system sh/exec_up.sh -n dnode2 -s start
|
||||
print ========= start dnode4
|
||||
sql create dnode $hostname4
|
||||
system sh/exec_up.sh -n dnode4 -s start
|
||||
sleep 10000
|
||||
|
||||
$x = 0
|
||||
|
@ -175,15 +166,15 @@ show3:
|
|||
sql show dnodes -x show3
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show3
|
||||
endi
|
||||
if $dnode2Vnodes != 2 then
|
||||
if $dnode4Vnodes != 2 then
|
||||
goto show3
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
|
@ -200,6 +191,20 @@ print dnode2 ==> $dnode2Role
|
|||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
if $dnode1Role != master then
|
||||
return -1
|
||||
endi
|
||||
if $dnode2Role != null then
|
||||
return -1
|
||||
endi
|
||||
if $dnode3Role != slave then
|
||||
return -1
|
||||
endi
|
||||
|
||||
if $dnode4Role != slave then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print ============================== step4
|
||||
print ========= drop dnode3
|
||||
sql drop dnode $hostname3
|
||||
|
@ -215,15 +220,15 @@ show4:
|
|||
sql show dnodes -x show4
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
if $dnode1Vnodes != 3 then
|
||||
goto show4
|
||||
endi
|
||||
if $dnode2Vnodes != 1 then
|
||||
if $dnode4Vnodes != 3 then
|
||||
goto show4
|
||||
endi
|
||||
if $dnode3Vnodes != null then
|
||||
|
@ -240,21 +245,26 @@ print dnode2 ==> $dnode2Role
|
|||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
if $dnode1Role != master then
|
||||
return -1
|
||||
endi
|
||||
if $dnode2Role != null then
|
||||
return -1
|
||||
endi
|
||||
if $dnode3Role != null then
|
||||
return -1
|
||||
endi
|
||||
|
||||
if $dnode4Role != slave then
|
||||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
|
||||
print ============================== step5
|
||||
print ========= start dnode3
|
||||
sql create dnode $hostname3
|
||||
|
||||
sleep 3000
|
||||
system sh/deploy.sh -n dnode3 -i 3
|
||||
system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode3 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0
|
||||
sleep 3000
|
||||
|
||||
system sh/exec_up.sh -n dnode3 -s start
|
||||
sql create dnode $hostname5
|
||||
system sh/exec_up.sh -n dnode5 -s start
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
|
@ -267,33 +277,30 @@ show5:
|
|||
sql show dnodes -x show5
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
$dnode5Vnodes = $data2_5
|
||||
print dnode5 $dnode5Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show5
|
||||
endi
|
||||
if $dnode2Vnodes != 2 then
|
||||
if $dnode4Vnodes != 2 then
|
||||
goto show5
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
if $dnode5Vnodes != 2 then
|
||||
goto show5
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
$dnode5Role = $data2_5
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
print dnode5 ==> $dnode5Role
|
||||
|
||||
print ============================== step6
|
||||
print ========= drop dnode1
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
print stop dnode1 and sleep 10000
|
||||
sleep 10000
|
||||
|
@ -302,6 +309,21 @@ sql drop dnode $hostname1
|
|||
print drop dnode1 and sleep 9000
|
||||
sleep 9000
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode4Role = $data2_4
|
||||
$dnode5Role = $data2_5
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
print dnode5 ==> $dnode5Role
|
||||
|
||||
if $dnode1Role != offline then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print ============================== step6.1
|
||||
system sh/exec_up.sh -n dnode1 -s start
|
||||
|
||||
$x = 0
|
||||
show6:
|
||||
$x = $x + 1
|
||||
|
@ -312,337 +334,38 @@ show6:
|
|||
sql show dnodes -x show6
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
$dnode5Vnodes = $data2_5
|
||||
print dnode5 $dnode5Vnodes
|
||||
|
||||
if $dnode1Vnodes != null then
|
||||
goto show6
|
||||
endi
|
||||
if $dnode2Vnodes != 1 then
|
||||
if $dnode4Vnodes != 3 then
|
||||
goto show6
|
||||
endi
|
||||
if $dnode3Vnodes != 1 then
|
||||
if $dnode5Vnodes != 3 then
|
||||
goto show6
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
$dnode5Role = $data2_5
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
print dnode5 ==> $dnode5Role
|
||||
|
||||
print ============================== step7
|
||||
print ========= start dnode1
|
||||
sql create dnode $hostname1
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
sleep 3000
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode1 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0
|
||||
sleep 3000
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s start
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
|
||||
show7:
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show7
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show7
|
||||
endi
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show7
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
goto show7
|
||||
endi
|
||||
|
||||
print ============================== step8
|
||||
print ========= add db4
|
||||
|
||||
sql create database c_b2_d4 replica 2 tables 4
|
||||
sql use c_b2_d4
|
||||
sql create table c_b2_t4 (t timestamp, i int)
|
||||
sql insert into c_b2_t4 values(1520000020045, 45)
|
||||
sql insert into c_b2_t4 values(1520000021044, 44)
|
||||
sql insert into c_b2_t4 values(1520000022043, 43)
|
||||
sql insert into c_b2_t4 values(1520000023042, 42)
|
||||
sql insert into c_b2_t4 values(1520000024041, 41)
|
||||
|
||||
sql create dnode $hostname4
|
||||
system sh/exec_up.sh -n dnode4 -s start
|
||||
sleep 9000
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
$x = 0
|
||||
show8:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show8
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show8
|
||||
endi
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show8
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
goto show8
|
||||
endi
|
||||
if $dnode4Vnodes != 2 then
|
||||
goto show8
|
||||
endi
|
||||
|
||||
print ============================== step9
|
||||
print ========= drop dnode1.4
|
||||
sql drop dnode $hostname1
|
||||
sql drop dnode $hostname4
|
||||
sleep 10000
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
$x = 0
|
||||
show9:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show9
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode1Vnodes != null then
|
||||
goto show9
|
||||
endi
|
||||
if $dnode2Vnodes != 0 then
|
||||
goto show9
|
||||
endi
|
||||
if $dnode3Vnodes != 0 then
|
||||
goto show9
|
||||
endi
|
||||
if $dnode4Vnodes != null then
|
||||
goto show9
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
|
||||
print ============================== step10
|
||||
print ========= start dnode1.4
|
||||
sql create dnode $hostname1
|
||||
sql create dnode $hostname4
|
||||
|
||||
sleep 3000
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
ssystem sh/cfg.sh -n dnode1 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode1 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0
|
||||
sleep 3000
|
||||
|
||||
sleep 3000
|
||||
system sh/deploy.sh -n dnode4 -i 4
|
||||
system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode4 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0
|
||||
sleep 3000
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s start
|
||||
system sh/exec_up.sh -n dnode4 -s start
|
||||
sleep 10000
|
||||
|
||||
$x = 0
|
||||
show10:
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show10
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show10
|
||||
endi
|
||||
if $dnode2Vnodes != 2 then
|
||||
goto show10
|
||||
endi
|
||||
if $dnode3Vnodes != 2 then
|
||||
goto show10
|
||||
endi
|
||||
if $dnode4Vnodes != 2 then
|
||||
goto show10
|
||||
endi
|
||||
|
||||
print ============================== step11
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
|
||||
sql create database c_b2_d5 replica 2 tables 4
|
||||
sql use c_b2_d5;
|
||||
sql create table c_b2_t5 (t timestamp, i int)
|
||||
sql insert into c_b2_t5 values(1520000020055, 55)
|
||||
sql insert into c_b2_t5 values(1520000021054, 54)
|
||||
sql insert into c_b2_t5 values(1520000022053, 53)
|
||||
sql insert into c_b2_t5 values(1520000023052, 52)
|
||||
sql insert into c_b2_t5 values(1520000024051, 51)
|
||||
|
||||
sql create database c_b2_d6 replica 2 tables 4
|
||||
sql use c_b2_d6
|
||||
sql create table c_b2_t6 (t timestamp, i int)
|
||||
sql insert into c_b2_t6 values(1520000020065, 65)
|
||||
sql insert into c_b2_t6 values(1520000021064, 64)
|
||||
sql insert into c_b2_t6 values(1520000022063, 63)
|
||||
sql insert into c_b2_t6 values(1520000023062, 62)
|
||||
sql insert into c_b2_t6 values(1520000024061, 61)
|
||||
|
||||
$x = 0
|
||||
show11:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show11
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
goto show11
|
||||
endi
|
||||
if $dnode2Vnodes != 1 then
|
||||
goto show11
|
||||
endi
|
||||
if $dnode3Vnodes != 1 then
|
||||
goto show11
|
||||
endi
|
||||
if $dnode4Vnodes != 1 then
|
||||
goto show11
|
||||
endi
|
||||
|
||||
sql show mnodes
|
||||
$dnode1Role = $data2_1
|
||||
$dnode2Role = $data2_2
|
||||
$dnode3Role = $data2_3
|
||||
$dnode4Role = $data2_4
|
||||
print dnode1 ==> $dnode1Role
|
||||
print dnode2 ==> $dnode2Role
|
||||
print dnode3 ==> $dnode3Role
|
||||
print dnode4 ==> $dnode4Role
|
||||
#system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
|
||||
print ============================== step12
|
||||
print ========= check data
|
||||
|
||||
sql use c_b2_d1
|
||||
sql select * from c_b2_t1 order by t desc
|
||||
sql reset query cache
|
||||
sleep 1000
|
||||
|
||||
sql select * from c_b2_d1.c_b2_t1 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 11 then
|
||||
return -1
|
||||
|
@ -660,28 +383,26 @@ if $data41 != 15 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b2_d2
|
||||
sql select * from c_b2_t2 order by t desc
|
||||
sql select * from c_b2_d2.c_b2_t2 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
|
||||
#if $data01 != 21 then
|
||||
# return -1
|
||||
#endi
|
||||
#if $data11 != 22 then
|
||||
# return -1
|
||||
#endi
|
||||
#if $data21 != 23 then
|
||||
# return -1
|
||||
#endi
|
||||
#if $data31 != 24 then
|
||||
# return -1
|
||||
#endi
|
||||
#if $data41 != 25 then
|
||||
# return -1
|
||||
#endi
|
||||
if $data01 != 21 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 22 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 23 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 24 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 25 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b2_d3
|
||||
sql select * from c_b2_t3 order by t desc
|
||||
sql select * from c_b2_d3.c_b2_t3 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 31 then
|
||||
return -1
|
||||
|
@ -699,64 +420,6 @@ if $data41 != 35 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b2_d4
|
||||
sql select * from c_b2_t4 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 41 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 42 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 43 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 44 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 45 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b2_d5
|
||||
sql select * from c_b2_t5 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 51 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 52 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 53 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 54 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 55 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b2_d6
|
||||
sql select * from c_b2_t6 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 61 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 62 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 63 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 64 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 65 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
|
||||
print ============================================ over
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
|
@ -766,5 +429,3 @@ system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
|||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
||||
|
||||
|
||||
|
|
|
@ -1,14 +1,5 @@
|
|||
system sh/stop_dnodes.sh
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
system sh/deploy.sh -n dnode2 -i 2
|
||||
system sh/deploy.sh -n dnode3 -i 3
|
||||
|
@ -97,7 +88,7 @@ $x = 0
|
|||
show1:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show1
|
||||
|
@ -110,13 +101,13 @@ print dnode3 $dnode3Vnodes
|
|||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
if $dnode1Vnodes != 3 then
|
||||
goto show1
|
||||
endi
|
||||
if $dnode2Vnodes != 1 then
|
||||
if $dnode2Vnodes != 3 then
|
||||
goto show1
|
||||
endi
|
||||
if $dnode3Vnodes != 1 then
|
||||
if $dnode3Vnodes != 3 then
|
||||
goto show1
|
||||
endi
|
||||
if $dnode4Vnodes != null then
|
||||
|
@ -133,7 +124,7 @@ $x = 0
|
|||
show2:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show2
|
||||
|
@ -159,7 +150,7 @@ $x = 0
|
|||
show3:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show3
|
||||
|
@ -172,52 +163,44 @@ print dnode3 $dnode3Vnodes
|
|||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
if $dnode1Vnodes != 3 then
|
||||
goto show3
|
||||
endi
|
||||
if $dnode2Vnodes != null then
|
||||
goto show3
|
||||
endi
|
||||
if $dnode3Vnodes != 1 then
|
||||
if $dnode3Vnodes != 3 then
|
||||
goto show3
|
||||
endi
|
||||
if $dnode4Vnodes != 1 then
|
||||
if $dnode4Vnodes != 3 then
|
||||
goto show3
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
|
||||
print ============================== step4
|
||||
print ========= start dnode2
|
||||
sleep 3000
|
||||
system sh/deploy.sh -n dnode2 -i 2
|
||||
system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode2 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0
|
||||
sleep 3000
|
||||
sql create dnode $hostname2
|
||||
system sh/exec_up.sh -n dnode2 -s start
|
||||
sql create dnode $hostname5
|
||||
system sh/exec_up.sh -n dnode5 -s start
|
||||
sleep 10000
|
||||
|
||||
$x = 0
|
||||
show4:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show4
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode5Vnodes = $data2_5
|
||||
print dnode5 $dnode5Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode2Vnodes != 2 then
|
||||
if $dnode5Vnodes != 2 then
|
||||
goto show4
|
||||
endi
|
||||
|
||||
|
@ -230,66 +213,57 @@ $x = 0
|
|||
show5:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show5
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode5Vnodes = $data2_5
|
||||
print dnode5 $dnode5Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
if $dnode1Vnodes != 3 then
|
||||
goto show5
|
||||
endi
|
||||
if $dnode2Vnodes != 1 then
|
||||
if $dnode5Vnodes != 3 then
|
||||
goto show5
|
||||
endi
|
||||
if $dnode3Vnodes != null then
|
||||
goto show5
|
||||
endi
|
||||
if $dnode4Vnodes != 1 then
|
||||
if $dnode4Vnodes != 3 then
|
||||
goto show5
|
||||
endi
|
||||
|
||||
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
|
||||
print ============================== step6
|
||||
print ========= start dnode3
|
||||
sleep 3000
|
||||
system sh/deploy.sh -n dnode3 -i 3
|
||||
system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode3 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0
|
||||
sleep 3000
|
||||
sql create dnode $hostname3
|
||||
system sh/exec_up.sh -n dnode3 -s start
|
||||
sql create dnode $hostname6
|
||||
system sh/exec_up.sh -n dnode6 -s start
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show6:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show6
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
$dnode5Vnodes = $data2_5
|
||||
print dnode5 $dnode5Vnodes
|
||||
$dnode6Vnodes = $data2_6
|
||||
print dnode6 $dnode6Vnodes
|
||||
|
||||
if $dnode3Vnodes != 2 then
|
||||
if $dnode6Vnodes != 2 then
|
||||
goto show6
|
||||
endi
|
||||
|
||||
|
@ -302,26 +276,26 @@ $x = 0
|
|||
show7:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show7
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
$dnode5Vnodes = $data2_5
|
||||
print dnode5 $dnode5Vnodes
|
||||
$dnode6Vnodes = $data2_6
|
||||
print dnode6 $dnode6Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
if $dnode1Vnodes != 3 then
|
||||
goto show7
|
||||
endi
|
||||
if $dnode2Vnodes != 1 then
|
||||
if $dnode5Vnodes != 3 then
|
||||
goto show7
|
||||
endi
|
||||
if $dnode3Vnodes != 1 then
|
||||
if $dnode6Vnodes != 3 then
|
||||
goto show7
|
||||
endi
|
||||
if $dnode4Vnodes != null then
|
||||
|
@ -331,36 +305,28 @@ endi
|
|||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
|
||||
print ============================== step8
|
||||
print ========= start dnode4
|
||||
sleep 3000
|
||||
system sh/deploy.sh -n dnode4 -i 4
|
||||
system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode4 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0
|
||||
sleep 3000
|
||||
sql create dnode $hostname4
|
||||
system sh/exec_up.sh -n dnode4 -s start
|
||||
sql create dnode $hostname7
|
||||
system sh/exec_up.sh -n dnode7 -s start
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show8:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show8
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
$dnode5Vnodes = $data2_5
|
||||
print dnode5 $dnode5Vnodes
|
||||
$dnode6Vnodes = $data2_6
|
||||
print dnode6 $dnode6Vnodes
|
||||
$dnode7Vnodes = $data2_7
|
||||
print dnode7 $dnode7Vnodes
|
||||
|
||||
if $dnode4Vnodes != 2 then
|
||||
if $dnode7Vnodes != 2 then
|
||||
goto show8
|
||||
endi
|
||||
|
||||
|
@ -378,65 +344,26 @@ $x = 0
|
|||
show9:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show9
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
$dnode5Vnodes = $data2_5
|
||||
print dnode5 $dnode5Vnodes
|
||||
$dnode6Vnodes = $data2_6
|
||||
print dnode6 $dnode6Vnodes
|
||||
$dnode7Vnodes = $data2_7
|
||||
print dnode7 $dnode7Vnodes
|
||||
|
||||
if $dnode1Vnodes != null then
|
||||
if $dnode5Vnodes != 3 then
|
||||
goto show9
|
||||
endi
|
||||
if $dnode2Vnodes != 1 then
|
||||
if $dnode6Vnodes != 3 then
|
||||
goto show9
|
||||
endi
|
||||
if $dnode3Vnodes != 1 then
|
||||
if $dnode7Vnodes != 3 then
|
||||
goto show9
|
||||
endi
|
||||
if $dnode4Vnodes != 1 then
|
||||
goto show9
|
||||
endi
|
||||
|
||||
print ============================== step10
|
||||
print ========= start dnode1
|
||||
sleep 3000
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3
|
||||
system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
|
||||
system sh/cfg.sh -n dnode1 -c clog -v 1
|
||||
system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0
|
||||
sleep 3000
|
||||
sql create dnode $hostname1
|
||||
system sh/exec_up.sh -n dnode1 -s start
|
||||
sleep 9000
|
||||
|
||||
$x = 0
|
||||
show10:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show10
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode1Vnodes != 2 then
|
||||
goto show10
|
||||
endi
|
||||
|
||||
print ============================== step11
|
||||
print ========= add db4
|
||||
|
@ -447,7 +374,7 @@ $x = 0
|
|||
create4:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql create table c_b3_t4 (t timestamp, i int) -x create4
|
||||
|
@ -456,80 +383,42 @@ sql insert into c_b3_t4 values(1520000021044, 44)
|
|||
sql insert into c_b3_t4 values(1520000022043, 43)
|
||||
sql insert into c_b3_t4 values(1520000023042, 42)
|
||||
sql insert into c_b3_t4 values(1520000024041, 41)
|
||||
sleep 9000
|
||||
|
||||
sleep 3000
|
||||
|
||||
$x = 0
|
||||
show11:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
if $x == 20 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show11
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
$dnode5Vnodes = $data2_5
|
||||
print dnode5 $dnode5Vnodes
|
||||
$dnode6Vnodes = $data2_6
|
||||
print dnode6 $dnode6Vnodes
|
||||
$dnode7Vnodes = $data2_7
|
||||
print dnode7 $dnode7Vnodes
|
||||
|
||||
if $dnode1Vnodes != 1 then
|
||||
if $dnode5Vnodes != 4 then
|
||||
goto show11
|
||||
endi
|
||||
if $dnode2Vnodes != 1 then
|
||||
if $dnode6Vnodes != 4 then
|
||||
goto show11
|
||||
endi
|
||||
#if $dnode3Vnodes != 1 then
|
||||
# goto show11
|
||||
#endi
|
||||
#if $dnode4Vnodes != 1 then
|
||||
# goto show11
|
||||
#endi
|
||||
|
||||
print ============================== step12
|
||||
print ========= drop dnode1
|
||||
sql drop dnode $hostname1
|
||||
sleep 10000
|
||||
|
||||
$x = 0
|
||||
show12:
|
||||
$x = $x + 1
|
||||
sleep 2000
|
||||
if $x == 30 then
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes -x show12
|
||||
$dnode1Vnodes = $data2_1
|
||||
print dnode1 $dnode1Vnodes
|
||||
$dnode2Vnodes = $data2_2
|
||||
print dnode2 $dnode2Vnodes
|
||||
$dnode3Vnodes = $data2_3
|
||||
print dnode3 $dnode3Vnodes
|
||||
$dnode4Vnodes = $data2_4
|
||||
print dnode4 $dnode4Vnodes
|
||||
|
||||
if $dnode1Vnodes != null then
|
||||
goto show12
|
||||
endi
|
||||
if $dnode2Vnodes != 0 then
|
||||
goto show12
|
||||
endi
|
||||
if $dnode3Vnodes != 0 then
|
||||
goto show12
|
||||
endi
|
||||
if $dnode4Vnodes != 0 then
|
||||
goto show12
|
||||
if $dnode7Vnodes != 4 then
|
||||
goto show11
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
|
||||
print ============================== step13
|
||||
sql reset query cache
|
||||
sleep 1000
|
||||
|
||||
print ========= check data
|
||||
|
||||
sql use c_b3_d1
|
||||
sql select * from c_b3_t1 order by t desc
|
||||
sql select * from c_b3_d1.c_b3_t1 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 11 then
|
||||
return -1
|
||||
|
@ -547,8 +436,7 @@ if $data41 != 15 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b3_d2
|
||||
sql select * from c_b3_t2 order by t desc
|
||||
sql select * from c_b3_d2.c_b3_t2 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
|
||||
if $data01 != 21 then
|
||||
|
@ -567,8 +455,7 @@ if $data41 != 25 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b3_d3
|
||||
sql select * from c_b3_t3 order by t desc
|
||||
sql select * from c_b3_d3.c_b3_t3 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 31 then
|
||||
return -1
|
||||
|
@ -586,26 +473,6 @@ if $data41 != 35 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
sql use c_b3_d4
|
||||
sql select * from c_b3_t4 order by t desc
|
||||
print $data01 $data11 $data21 $data31 $data41
|
||||
if $data01 != 41 then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 42 then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 43 then
|
||||
return -1
|
||||
endi
|
||||
if $data31 != 44 then
|
||||
return -1
|
||||
endi
|
||||
if $data41 != 45 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
|
||||
print ============================================ over
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
|
@ -615,5 +482,3 @@ system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
|||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
run unique/cluster/balance1.sim
|
||||
run unique/cluster/balance2.sim
|
||||
run unique/cluster/balance3.sim
|
||||
run unique/cluster/balance1_bug.sim
|
||||
run unique/cluster/balance1_single.sim
|
|
@ -29,8 +29,11 @@ while $x < 1010
|
|||
$x = $x + 1
|
||||
endw
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop
|
||||
system sh/exec_up.sh -n dnode2 -s stop
|
||||
system sh/exec_up.sh -n dnode3 -s stop
|
||||
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -281,4 +281,13 @@ endi
|
|||
sql select * from d4.t4
|
||||
if $rows != 4 then
|
||||
return -1
|
||||
endi
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -258,4 +258,13 @@ endi
|
|||
sql select * from d4.t4
|
||||
if $rows != 6 then
|
||||
return -1
|
||||
endi
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -259,4 +259,13 @@ endi
|
|||
sql select * from d4.t4
|
||||
if $rows != 6 then
|
||||
return -1
|
||||
endi
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -145,3 +145,12 @@ sql select * from d1.t1
|
|||
sql select * from d2.t2
|
||||
sql select * from d3.t3
|
||||
sql select * from d4.t4
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -144,3 +144,12 @@ sql select * from d4.t4
|
|||
if $rows != 3 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -182,3 +182,12 @@ sql select * from d1.t1
|
|||
sql select * from d2.t2
|
||||
sql select * from d3.t3
|
||||
sql select * from d4.t4
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -155,3 +155,12 @@ print d3.t3 $rows
|
|||
|
||||
sql select * from d4.t4
|
||||
print d4.t4 $rows
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -327,3 +327,12 @@ endi
|
|||
if $data41 != 45 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -268,3 +268,12 @@ endi
|
|||
if $data41 != 35 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -298,3 +298,11 @@ if $data41 != 35 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -199,3 +199,11 @@ if $data41 != 35 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -67,3 +67,11 @@ if $data4_2 != null then
|
|||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -106,3 +106,11 @@ if $rows != 1 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -177,4 +177,13 @@ print =============== step8 - monitor dbs
|
|||
#print 24-> $system_content
|
||||
#if $system_content != @[{"status":"succ","head":["IP","created time","open vnodes","free vnodes","status","balance state"],"data":[["127.0.0.1","2018-09-04 #11:16:13.985",1,3,"ready","balanced"]],"rows":1},{"status":"succ","head":["IP","created time","status","role"],"data":[["127.0.0.1","2018-09-04 11:16:13.371","serving","master"]],"rows":1}]@ then
|
||||
# return -1
|
||||
# endi
|
||||
# endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -104,6 +104,11 @@ if $data3_3 != null then
|
|||
goto show7
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop
|
||||
system sh/exec_up.sh -n dnode2 -s stop
|
||||
system sh/exec_up.sh -n dnode3 -s stop
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -122,6 +122,11 @@ sql_error show mnodes
|
|||
print ============== step7
|
||||
sql_error drop dnode $hostname1
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop
|
||||
system sh/exec_up.sh -n dnode2 -s stop
|
||||
system sh/exec_up.sh -n dnode3 -s stop
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -73,6 +73,11 @@ if $data2_2 != slave then
|
|||
goto step5
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop
|
||||
system sh/exec_up.sh -n dnode2 -s stop
|
||||
system sh/exec_up.sh -n dnode3 -s stop
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -85,6 +85,11 @@ if $dnode3Role != slave then
|
|||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop
|
||||
system sh/exec_up.sh -n dnode2 -s stop
|
||||
system sh/exec_up.sh -n dnode3 -s stop
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -113,6 +113,11 @@ if $dnode3Role != slave then
|
|||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop
|
||||
system sh/exec_up.sh -n dnode2 -s stop
|
||||
system sh/exec_up.sh -n dnode3 -s stop
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -166,6 +166,11 @@ endi
|
|||
# return -1
|
||||
#endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop
|
||||
system sh/exec_up.sh -n dnode2 -s stop
|
||||
system sh/exec_up.sh -n dnode3 -s stop
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -220,7 +220,11 @@ endi
|
|||
# return -1
|
||||
#endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop
|
||||
system sh/exec_up.sh -n dnode2 -s stop
|
||||
system sh/exec_up.sh -n dnode3 -s stop
|
||||
system sh/exec_up.sh -n dnode4 -s stop
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -202,4 +202,13 @@ endi
|
|||
sql select * from d4.t4
|
||||
if $rows != 3 then
|
||||
return -1
|
||||
endi
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -149,8 +149,11 @@ if $rows != $expect then
|
|||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop
|
||||
system sh/exec_up.sh -n dnode2 -s stop
|
||||
system sh/exec_up.sh -n dnode3 -s stop
|
||||
|
||||
|
||||
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
|
||||
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
|
|
@ -1,5 +0,0 @@
|
|||
#################################
|
||||
|
||||
run unique/mnode/testSuite.sim
|
||||
|
||||
##################################
|
|
@ -676,6 +676,8 @@ bool simExecuteNativeSqlCommand(SScript *script, char *rest, bool isSlow) {
|
|||
while ((row = taos_fetch_row(result))) {
|
||||
if (numOfRows < MAX_QUERY_ROW_NUM) {
|
||||
TAOS_FIELD *fields = taos_fetch_fields(result);
|
||||
int* length = taos_fetch_lengths(result);
|
||||
|
||||
for (int i = 0; i < num_fields; i++) {
|
||||
char *value = NULL;
|
||||
if (i < MAX_QUERY_COL_NUM) {
|
||||
|
@ -734,8 +736,8 @@ bool simExecuteNativeSqlCommand(SScript *script, char *rest, bool isSlow) {
|
|||
case TSDB_DATA_TYPE_BINARY:
|
||||
case TSDB_DATA_TYPE_NCHAR:
|
||||
memset(value, 0, MAX_QUERY_VALUE_LEN);
|
||||
memcpy(value, row[i], fields[i].bytes);
|
||||
value[fields[i].bytes] = 0;
|
||||
memcpy(value, row[i], length[i]);
|
||||
value[length[i]] = 0;
|
||||
// snprintf(value, fields[i].bytes, "%s", (char *)row[i]);
|
||||
break;
|
||||
case TSDB_DATA_TYPE_TIMESTAMP:
|
||||
|
|
Loading…
Reference in New Issue