Merge remote-tracking branch 'origin/3.0' into feature/dnode
This commit is contained in:
commit
47b084f156
|
@ -89,7 +89,7 @@ extern char *qtypeStr[];
|
||||||
|
|
||||||
#define TSDB_PORT_HTTP 11
|
#define TSDB_PORT_HTTP 11
|
||||||
|
|
||||||
#define TD_DEBUG_PRINT_ROW
|
#undef TD_DEBUG_PRINT_ROW
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -493,7 +493,7 @@ SSDataBlock* blockDataExtractBlock(SSDataBlock* pBlock, int32_t startIndex, int3
|
||||||
for (int32_t j = startIndex; j < (startIndex + rowCount); ++j) {
|
for (int32_t j = startIndex; j < (startIndex + rowCount); ++j) {
|
||||||
bool isNull = false;
|
bool isNull = false;
|
||||||
if (pBlock->pBlockAgg == NULL) {
|
if (pBlock->pBlockAgg == NULL) {
|
||||||
isNull = colDataIsNull_s(pColData, pBlock->info.rows);
|
isNull = colDataIsNull_s(pColData, j);
|
||||||
} else {
|
} else {
|
||||||
isNull = colDataIsNull(pColData, pBlock->info.rows, j, pBlock->pBlockAgg[i]);
|
isNull = colDataIsNull(pColData, pBlock->info.rows, j, pBlock->pBlockAgg[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,11 +248,13 @@ int tsdbLoadDataFromCache(STable *pTable, SSkipListIterator *pIter, TSKEY maxKey
|
||||||
pMergeInfo->nOperations++;
|
pMergeInfo->nOperations++;
|
||||||
pMergeInfo->keyFirst = TMIN(pMergeInfo->keyFirst, rowKey);
|
pMergeInfo->keyFirst = TMIN(pMergeInfo->keyFirst, rowKey);
|
||||||
pMergeInfo->keyLast = TMAX(pMergeInfo->keyLast, rowKey);
|
pMergeInfo->keyLast = TMAX(pMergeInfo->keyLast, rowKey);
|
||||||
lastKey = rowKey;
|
|
||||||
if (pCols) {
|
if (pCols) {
|
||||||
++pCols->numOfRows;
|
if (lastKey != TSKEY_INITIAL_VAL) {
|
||||||
|
++pCols->numOfRows;
|
||||||
|
}
|
||||||
tsdbAppendTableRowToCols(pTable, pCols, &pSchema, row, false);
|
tsdbAppendTableRowToCols(pTable, pCols, &pSchema, row, false);
|
||||||
}
|
}
|
||||||
|
lastKey = rowKey;
|
||||||
} else {
|
} else {
|
||||||
tsdbAppendTableRowToCols(pTable, pCols, &pSchema, row, true);
|
tsdbAppendTableRowToCols(pTable, pCols, &pSchema, row, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -351,35 +351,26 @@ static void setQueryTimewindow(STsdbReadHandle* pTsdbReadHandle, SQueryTableData
|
||||||
pTsdbReadHandle->window.ekey, pTsdbReadHandle->idStr);
|
pTsdbReadHandle->window.ekey, pTsdbReadHandle->idStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if 1
|
|
||||||
int nQUERY = 0;
|
|
||||||
#endif
|
|
||||||
static STsdb* getTsdbByRetentions(SVnode* pVnode, STsdbReadHandle* pReadHandle, TSKEY winSKey, SRetention* retentions) {
|
static STsdb* getTsdbByRetentions(SVnode* pVnode, STsdbReadHandle* pReadHandle, TSKEY winSKey, SRetention* retentions) {
|
||||||
if (vnodeIsRollup(pVnode)) {
|
if (vnodeIsRollup(pVnode)) {
|
||||||
int level = 0;
|
int level = 0;
|
||||||
#if 0
|
|
||||||
int64_t now = taosGetTimestamp(pVnode->config.tsdbCfg.precision);
|
int64_t now = taosGetTimestamp(pVnode->config.tsdbCfg.precision);
|
||||||
|
|
||||||
for (int i = 0; i < TSDB_RETENTION_MAX; ++i) {
|
for (int i = 0; i < TSDB_RETENTION_MAX; ++i) {
|
||||||
SRetention* pRetention = retentions + i;
|
SRetention* pRetention = retentions + level;
|
||||||
if (pRetention->keep <= 0 || (now - pRetention->keep) >= winSKey) {
|
if (pRetention->keep <= 0) {
|
||||||
|
if (level > 0) {
|
||||||
|
--level;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((now - pRetention->keep) <= winSKey) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
++level;
|
++level;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
#if 1
|
|
||||||
switch ((nQUERY++) % 3) {
|
|
||||||
case 0:
|
|
||||||
level = 0;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
level = 1;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
level = 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (level == TSDB_RETENTION_L0) {
|
if (level == TSDB_RETENTION_L0) {
|
||||||
tsdbDebug("%p rsma level %d is selected to query\n", pReadHandle, level);
|
tsdbDebug("%p rsma level %d is selected to query\n", pReadHandle, level);
|
||||||
return VND_RSMA0(pVnode);
|
return VND_RSMA0(pVnode);
|
||||||
|
@ -391,7 +382,7 @@ static STsdb* getTsdbByRetentions(SVnode* pVnode, STsdbReadHandle* pReadHandle,
|
||||||
return VND_RSMA2(pVnode);
|
return VND_RSMA2(pVnode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pVnode->pTsdb;
|
return VND_TSDB(pVnode);
|
||||||
}
|
}
|
||||||
|
|
||||||
static STsdbReadHandle* tsdbQueryTablesImpl(SVnode* pVnode, SQueryTableDataCond* pCond, uint64_t qId, uint64_t taskId) {
|
static STsdbReadHandle* tsdbQueryTablesImpl(SVnode* pVnode, SQueryTableDataCond* pCond, uint64_t qId, uint64_t taskId) {
|
||||||
|
|
|
@ -409,7 +409,7 @@ void udfdPipeCloseCb(uv_handle_t *pipe) {
|
||||||
void udfdUvHandleError(SUdfdUvConn *conn) { uv_close((uv_handle_t *)conn->client, udfdPipeCloseCb); }
|
void udfdUvHandleError(SUdfdUvConn *conn) { uv_close((uv_handle_t *)conn->client, udfdPipeCloseCb); }
|
||||||
|
|
||||||
void udfdPipeRead(uv_stream_t *client, ssize_t nread, const uv_buf_t *buf) {
|
void udfdPipeRead(uv_stream_t *client, ssize_t nread, const uv_buf_t *buf) {
|
||||||
fnDebug("udf read %zu bytes from client", nread);
|
fnDebug("udf read %zd bytes from client", nread);
|
||||||
if (nread == 0) return;
|
if (nread == 0) return;
|
||||||
|
|
||||||
SUdfdUvConn *conn = client->data;
|
SUdfdUvConn *conn = client->data;
|
||||||
|
|
|
@ -60,7 +60,7 @@ int32_t logStoreAppendEntry(SSyncLogStore* pLogStore, SSyncRaftEntry* pEntry) {
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
int32_t err = terrno;
|
int32_t err = terrno;
|
||||||
const char *errStr = tstrerror(err);
|
const char *errStr = tstrerror(err);
|
||||||
sError("walWriteWithSyncInfo error, err:%d, msg:%s", err, errStr);
|
sError("walWriteWithSyncInfo error, err:%d, msg:%s, linuxErr:%d, linuxErrMsg:%s", err, errStr, errno, strerror(errno));
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
}
|
}
|
||||||
//assert(code == 0);
|
//assert(code == 0);
|
||||||
|
@ -79,7 +79,7 @@ SSyncRaftEntry* logStoreGetEntry(SSyncLogStore* pLogStore, SyncIndex index) {
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
int32_t err = terrno;
|
int32_t err = terrno;
|
||||||
const char *errStr = tstrerror(err);
|
const char *errStr = tstrerror(err);
|
||||||
sError("walReadWithHandle error, err:%d, msg:%s", err, errStr);
|
sError("walReadWithHandle error, err:%d, msg:%s, linuxErr:%d, linuxErrMsg:%s", err, errStr, errno, strerror(errno));
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
}
|
}
|
||||||
//assert(walReadWithHandle(pWalHandle, index) == 0);
|
//assert(walReadWithHandle(pWalHandle, index) == 0);
|
||||||
|
@ -108,7 +108,14 @@ SSyncRaftEntry* logStoreGetEntry(SSyncLogStore* pLogStore, SyncIndex index) {
|
||||||
int32_t logStoreTruncate(SSyncLogStore* pLogStore, SyncIndex fromIndex) {
|
int32_t logStoreTruncate(SSyncLogStore* pLogStore, SyncIndex fromIndex) {
|
||||||
SSyncLogStoreData* pData = pLogStore->data;
|
SSyncLogStoreData* pData = pLogStore->data;
|
||||||
SWal* pWal = pData->pWal;
|
SWal* pWal = pData->pWal;
|
||||||
assert(walRollback(pWal, fromIndex) == 0);
|
//assert(walRollback(pWal, fromIndex) == 0);
|
||||||
|
int32_t code = walRollback(pWal, fromIndex);
|
||||||
|
if (code != 0) {
|
||||||
|
int32_t err = terrno;
|
||||||
|
const char *errStr = tstrerror(err);
|
||||||
|
sError("walRollback error, err:%d, msg:%s, linuxErr:%d, linuxErrMsg:%s", err, errStr, errno, strerror(errno));
|
||||||
|
ASSERT(0);
|
||||||
|
}
|
||||||
return 0; // to avoid compiler error
|
return 0; // to avoid compiler error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,7 +139,14 @@ SyncTerm logStoreLastTerm(SSyncLogStore* pLogStore) {
|
||||||
int32_t logStoreUpdateCommitIndex(SSyncLogStore* pLogStore, SyncIndex index) {
|
int32_t logStoreUpdateCommitIndex(SSyncLogStore* pLogStore, SyncIndex index) {
|
||||||
SSyncLogStoreData* pData = pLogStore->data;
|
SSyncLogStoreData* pData = pLogStore->data;
|
||||||
SWal* pWal = pData->pWal;
|
SWal* pWal = pData->pWal;
|
||||||
assert(walCommit(pWal, index) == 0);
|
//assert(walCommit(pWal, index) == 0);
|
||||||
|
int32_t code = walCommit(pWal, index);
|
||||||
|
if (code != 0) {
|
||||||
|
int32_t err = terrno;
|
||||||
|
const char *errStr = tstrerror(err);
|
||||||
|
sError("walCommit error, err:%d, msg:%s, linuxErr:%d, linuxErrMsg:%s", err, errStr, errno, strerror(errno));
|
||||||
|
ASSERT(0);
|
||||||
|
}
|
||||||
return 0; // to avoid compiler error
|
return 0; // to avoid compiler error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ if $data00 != 1.414213562 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
#sql insert into t2 values(now+2s, 1, null)(now+3s, null, 2);
|
sql insert into t2 values(now+2s, 1, null)(now+3s, null, 2);
|
||||||
#sql select udf1(f1, f2) from t2;
|
#sql select udf1(f1, f2) from t2;
|
||||||
#print $rows , $data00 , $data10 , $data20 , $data30
|
#print $rows , $data00 , $data10 , $data20 , $data30
|
||||||
#if $rows != 4 then
|
#if $rows != 4 then
|
||||||
|
@ -84,15 +84,15 @@ endi
|
||||||
#if $data30 != NULL then
|
#if $data30 != NULL then
|
||||||
# return -1
|
# return -1
|
||||||
#endi
|
#endi
|
||||||
#
|
|
||||||
#sql select udf2(f1, f2) from t2;
|
sql select udf2(f1, f2) from t2;
|
||||||
#print $rows, $data00
|
print $rows, $data00
|
||||||
#if $rows != 1 then
|
if $rows != 1 then
|
||||||
# return -1
|
return -1
|
||||||
#endi
|
endi
|
||||||
#if $data00 != 2.645751311 then
|
if $data00 != 2.645751311 then
|
||||||
# return -1
|
return -1
|
||||||
#endi
|
endi
|
||||||
sql drop function udf1;
|
sql drop function udf1;
|
||||||
sql show functions;
|
sql show functions;
|
||||||
if $rows != 1 then
|
if $rows != 1 then
|
||||||
|
|
|
@ -1242,11 +1242,11 @@ class TDTestCase:
|
||||||
# and or
|
# and or
|
||||||
query_sql = f'select {select_elm} from {tb_name} where c7 > "binary" and c7 >= "binary8" or c7 < "binary9" and c7 <= "binary" and c7 != 2 and c7 <> 2 and c7 = 4 or c7 is not null and c7 between 2 and 4 and c7 not between 1 and 2 and c7 in (2,4) and c7 not in (1,2) or c7 match "binary[28]" or c7 nmatch "binary"'
|
query_sql = f'select {select_elm} from {tb_name} where c7 > "binary" and c7 >= "binary8" or c7 < "binary9" and c7 <= "binary" and c7 != 2 and c7 <> 2 and c7 = 4 or c7 is not null and c7 between 2 and 4 and c7 not between 1 and 2 and c7 in (2,4) and c7 not in (1,2) or c7 match "binary[28]" or c7 nmatch "binary"'
|
||||||
tdSql.query(query_sql)
|
tdSql.query(query_sql)
|
||||||
tdSql.checkRows(11)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkEqual(self.queryLastC10(query_sql), 11) if select_elm == "*" else False
|
tdSql.checkEqual(self.queryLastC10(query_sql), 8) if select_elm == "*" else False
|
||||||
query_sql = f'select c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 from {tb_name} where c7 > "binary" and c7 >= "binary8" or c7 < "binary9" and c7 <= "binary" and c7 != 2 and c7 <> 2 and c7 = 4 or c7 is not null and c7 between 2 and 4 and c7 not between 1 and 2 and c7 in (2,4) and c7 not in (1,2) or c7 match "binary[28]" or c7 nmatch "binary"'
|
query_sql = f'select c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 from {tb_name} where c7 > "binary" and c7 >= "binary8" or c7 < "binary9" and c7 <= "binary" and c7 != 2 and c7 <> 2 and c7 = 4 or c7 is not null and c7 between 2 and 4 and c7 not between 1 and 2 and c7 in (2,4) and c7 not in (1,2) or c7 match "binary[28]" or c7 nmatch "binary"'
|
||||||
tdSql.query(query_sql)
|
tdSql.query(query_sql)
|
||||||
tdSql.checkRows(11)
|
tdSql.checkRows(1)
|
||||||
|
|
||||||
def queryNcharCol(self, tb_name, check_elm=None):
|
def queryNcharCol(self, tb_name, check_elm=None):
|
||||||
select_elm = "*" if check_elm is None else check_elm
|
select_elm = "*" if check_elm is None else check_elm
|
||||||
|
|
|
@ -49,4 +49,4 @@ python3 ./test.py -f 2-query/tan.py
|
||||||
python3 ./test.py -f 2-query/arcsin.py
|
python3 ./test.py -f 2-query/arcsin.py
|
||||||
python3 ./test.py -f 2-query/arccos.py
|
python3 ./test.py -f 2-query/arccos.py
|
||||||
python3 ./test.py -f 2-query/arctan.py
|
python3 ./test.py -f 2-query/arctan.py
|
||||||
python3 ./test.py -f 2-query/query_cols_tags_and_or.py
|
# python3 ./test.py -f 2-query/query_cols_tags_and_or.py
|
||||||
|
|
Loading…
Reference in New Issue