Merge pull request #29369 from taosdata/enh/TS-4994-more-test-case
enh: add more cases
This commit is contained in:
commit
0c2335d44b
|
@ -680,7 +680,7 @@ static int32_t fset_cmpr_fn(const struct STFileSet *pSet1, const struct STFileSe
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t edit_fs(STFileSystem *fs, const TFileOpArray *opArray) {
|
static int32_t edit_fs(STFileSystem *fs, const TFileOpArray *opArray, EFEditT etype) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
int32_t lino = 0;
|
int32_t lino = 0;
|
||||||
|
|
||||||
|
@ -690,6 +690,8 @@ static int32_t edit_fs(STFileSystem *fs, const TFileOpArray *opArray) {
|
||||||
TFileSetArray *fsetArray = fs->fSetArrTmp;
|
TFileSetArray *fsetArray = fs->fSetArrTmp;
|
||||||
STFileSet *fset = NULL;
|
STFileSet *fset = NULL;
|
||||||
const STFileOp *op;
|
const STFileOp *op;
|
||||||
|
int32_t fid = INT32_MIN;
|
||||||
|
TSKEY now = taosGetTimestampMs();
|
||||||
TARRAY2_FOREACH_PTR(opArray, op) {
|
TARRAY2_FOREACH_PTR(opArray, op) {
|
||||||
if (!fset || fset->fid != op->fid) {
|
if (!fset || fset->fid != op->fid) {
|
||||||
STFileSet tfset = {.fid = op->fid};
|
STFileSet tfset = {.fid = op->fid};
|
||||||
|
@ -708,6 +710,15 @@ static int32_t edit_fs(STFileSystem *fs, const TFileOpArray *opArray) {
|
||||||
|
|
||||||
code = tsdbTFileSetEdit(fs->tsdb, fset, op);
|
code = tsdbTFileSetEdit(fs->tsdb, fset, op);
|
||||||
TSDB_CHECK_CODE(code, lino, _exit);
|
TSDB_CHECK_CODE(code, lino, _exit);
|
||||||
|
|
||||||
|
if (fid != op->fid) {
|
||||||
|
fid = op->fid;
|
||||||
|
if (etype == TSDB_FEDIT_COMMIT) {
|
||||||
|
fset->lastCommit = now;
|
||||||
|
} else if (etype == TSDB_FEDIT_COMPACT) {
|
||||||
|
fset->lastCompact = now;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove empty empty stt level and empty file set
|
// remove empty empty stt level and empty file set
|
||||||
|
@ -864,7 +875,7 @@ int32_t tsdbFSEditBegin(STFileSystem *fs, const TFileOpArray *opArray, EFEditT e
|
||||||
fs->etype = etype;
|
fs->etype = etype;
|
||||||
|
|
||||||
// edit
|
// edit
|
||||||
code = edit_fs(fs, opArray);
|
code = edit_fs(fs, opArray, etype);
|
||||||
TSDB_CHECK_CODE(code, lino, _exit);
|
TSDB_CHECK_CODE(code, lino, _exit);
|
||||||
|
|
||||||
// save fs
|
// save fs
|
||||||
|
@ -1288,6 +1299,12 @@ int32_t tsdbFileSetReaderOpen(void *pVnode, struct SFileSetReader **ppReader) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern bool tsdbShouldCompact(const STFileSet *pFileSet);
|
||||||
|
|
||||||
|
#ifndef TD_ENTERPRISE
|
||||||
|
bool tsdbShouldCompact(const STFileSet *pFileSet) { return false; }
|
||||||
|
#endif
|
||||||
|
|
||||||
static int32_t tsdbFileSetReaderNextNoLock(struct SFileSetReader *pReader) {
|
static int32_t tsdbFileSetReaderNextNoLock(struct SFileSetReader *pReader) {
|
||||||
STsdb *pTsdb = pReader->pTsdb;
|
STsdb *pTsdb = pReader->pTsdb;
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
|
@ -1311,7 +1328,7 @@ static int32_t tsdbFileSetReaderNextNoLock(struct SFileSetReader *pReader) {
|
||||||
// get file set details
|
// get file set details
|
||||||
pReader->fid = pReader->pFileSet->fid;
|
pReader->fid = pReader->pFileSet->fid;
|
||||||
tsdbFidKeyRange(pReader->fid, pTsdb->keepCfg.days, pTsdb->keepCfg.precision, &pReader->startTime, &pReader->endTime);
|
tsdbFidKeyRange(pReader->fid, pTsdb->keepCfg.days, pTsdb->keepCfg.precision, &pReader->startTime, &pReader->endTime);
|
||||||
pReader->lastCompactTime = 0; // TODO
|
pReader->lastCompactTime = pReader->pFileSet->lastCompact;
|
||||||
pReader->totalSize = 0;
|
pReader->totalSize = 0;
|
||||||
for (int32_t i = 0; i < TSDB_FTYPE_MAX; i++) {
|
for (int32_t i = 0; i < TSDB_FTYPE_MAX; i++) {
|
||||||
STFileObj *fobj = pReader->pFileSet->farr[i];
|
STFileObj *fobj = pReader->pFileSet->farr[i];
|
||||||
|
@ -1375,7 +1392,7 @@ int32_t tsdbFileSetGetEntryField(struct SFileSetReader *pReader, const char *fie
|
||||||
|
|
||||||
fieldName = "should_compact";
|
fieldName = "should_compact";
|
||||||
if (strncmp(field, fieldName, strlen(fieldName) + 1) == 0) {
|
if (strncmp(field, fieldName, strlen(fieldName) + 1) == 0) {
|
||||||
*(char *)value = 0; // TODO
|
*(char *)value = tsdbShouldCompact(pReader->pFileSet);
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -273,6 +273,15 @@ int32_t tsdbTFileSetToJson(const STFileSet *fset, cJSON *json) {
|
||||||
if (code) return code;
|
if (code) return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// about compact and commit
|
||||||
|
if (cJSON_AddNumberToObject(json, "last compact", fset->lastCompact) == NULL) {
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cJSON_AddNumberToObject(json, "last commit", fset->lastCommit) == NULL) {
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -324,6 +333,20 @@ int32_t tsdbJsonToTFileSet(STsdb *pTsdb, const cJSON *json, STFileSet **fset) {
|
||||||
} else {
|
} else {
|
||||||
return TSDB_CODE_FILE_CORRUPTED;
|
return TSDB_CODE_FILE_CORRUPTED;
|
||||||
}
|
}
|
||||||
|
// about compact and commit
|
||||||
|
item1 = cJSON_GetObjectItem(json, "last compact");
|
||||||
|
if (cJSON_IsNumber(item1)) {
|
||||||
|
(*fset)->lastCompact = item1->valuedouble;
|
||||||
|
} else {
|
||||||
|
(*fset)->lastCompact = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
item1 = cJSON_GetObjectItem(json, "last commit");
|
||||||
|
if (cJSON_IsNumber(item1)) {
|
||||||
|
(*fset)->lastCommit = item1->valuedouble;
|
||||||
|
} else {
|
||||||
|
(*fset)->lastCommit = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -467,6 +490,9 @@ int32_t tsdbTFileSetApplyEdit(STsdb *pTsdb, const STFileSet *fset1, STFileSet *f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fset2->lastCompact = fset1->lastCompact;
|
||||||
|
fset2->lastCommit = fset1->lastCommit;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -522,6 +548,9 @@ int32_t tsdbTFileSetInitCopy(STsdb *pTsdb, const STFileSet *fset1, STFileSet **f
|
||||||
if (code) return code;
|
if (code) return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(*fset)->lastCompact = fset1->lastCompact;
|
||||||
|
(*fset)->lastCommit = fset1->lastCommit;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -617,6 +646,9 @@ int32_t tsdbTFileSetInitRef(STsdb *pTsdb, const STFileSet *fset1, STFileSet **fs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(*fset)->lastCompact = fset1->lastCompact;
|
||||||
|
(*fset)->lastCommit = fset1->lastCommit;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,8 @@ struct STFileSet {
|
||||||
int64_t maxVerValid;
|
int64_t maxVerValid;
|
||||||
STFileObj *farr[TSDB_FTYPE_MAX]; // file array
|
STFileObj *farr[TSDB_FTYPE_MAX]; // file array
|
||||||
TSttLvlArray lvlArr[1]; // level array
|
TSttLvlArray lvlArr[1]; // level array
|
||||||
|
TSKEY lastCompact;
|
||||||
|
TSKEY lastCommit;
|
||||||
|
|
||||||
bool mergeScheduled;
|
bool mergeScheduled;
|
||||||
SVATaskID mergeTask;
|
SVATaskID mergeTask;
|
||||||
|
|
|
@ -2269,6 +2269,8 @@ static SSDataBlock* sysTableBuildUserFileSets(SOperatorInfo* pOperator) {
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (ret == TSDB_CODE_NOT_FOUND) {
|
if (ret == TSDB_CODE_NOT_FOUND) {
|
||||||
// no more scan entry
|
// no more scan entry
|
||||||
|
setOperatorCompleted(pOperator);
|
||||||
|
pAPI->tsdReader.fileSetReaderClose(&pInfo->pFileSetReader);
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
code = ret;
|
code = ret;
|
||||||
|
|
|
@ -484,6 +484,7 @@
|
||||||
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/show.py
|
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/show.py
|
||||||
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/show_tag_index.py
|
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/show_tag_index.py
|
||||||
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/information_schema.py
|
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/information_schema.py
|
||||||
|
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/ins_filesets.py
|
||||||
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/grant.py
|
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/grant.py
|
||||||
,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py
|
,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py
|
||||||
,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py -R
|
,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py -R
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
###################################################################
|
||||||
|
# Copyright (c) 2016 by TAOS Technologies, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This file is proprietary and confidential to TAOS Technologies.
|
||||||
|
# No part of this file may be reproduced, stored, transmitted,
|
||||||
|
# disclosed or used in any form or by any means other than as
|
||||||
|
# expressly provided by the written permission from Jianhui Tao
|
||||||
|
#
|
||||||
|
###################################################################
|
||||||
|
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import re
|
||||||
|
from util.log import *
|
||||||
|
from util.cases import *
|
||||||
|
from util.sql import *
|
||||||
|
from util.common import *
|
||||||
|
from util.sqlset import *
|
||||||
|
|
||||||
|
class TDTestCase:
|
||||||
|
def init(self, conn, logSql, replicaVar=1):
|
||||||
|
self.replicaVar = int(replicaVar)
|
||||||
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
|
tdSql.init(conn.cursor())
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
tdSql.execute('create database db vgroups 1')
|
||||||
|
tdSql.execute('use db')
|
||||||
|
tdSql.execute('create table t1 (ts timestamp, a int, b int)')
|
||||||
|
tdSql.execute('insert into t1 values(\'2024-12-27 14:00:00\', 1, 2)')
|
||||||
|
tdSql.execute('flush database db')
|
||||||
|
|
||||||
|
tdLog.sleep(5)
|
||||||
|
|
||||||
|
rows = tdSql.query('select * from information_schema.ins_filesets')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkEqual(tdSql.getData(0, 0), 'db')
|
||||||
|
tdSql.checkEqual(tdSql.getData(0, 1), 2)
|
||||||
|
tdSql.checkEqual(tdSql.getData(0, 2), 2008)
|
||||||
|
# tdSql.CheckEqual(str(tdSql.getData(0, 3)), '2024-12-23 08:00:00.000')
|
||||||
|
# tdSql.CheckEqual(str(tdSql.getData(0, 4)), '2025-01-02 07:59:59.999')
|
||||||
|
# tdSql.CheckEqual(tdSql.getData(0, 6), '1970-01-01 08:00:00.000')
|
||||||
|
# tdSql.CheckEqual(tdSql.getData(0, 7), False)
|
||||||
|
|
||||||
|
tdDnodes.stopAll()
|
||||||
|
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
tdSql.close()
|
||||||
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
||||||
|
tdCases.addWindows(__file__, TDTestCase())
|
||||||
|
tdCases.addLinux(__file__, TDTestCase())
|
Loading…
Reference in New Issue