Merge remote-tracking branch 'origin/develop' into feature/wal
This commit is contained in:
commit
56a641fce8
|
@ -87,6 +87,7 @@ pipeline {
|
||||||
pre_test()
|
pre_test()
|
||||||
sh '''
|
sh '''
|
||||||
cd ${WKC}/tests
|
cd ${WKC}/tests
|
||||||
|
find pytest -name '*'sql|xargs rm -rf
|
||||||
./test-all.sh p1
|
./test-all.sh p1
|
||||||
date'''
|
date'''
|
||||||
}
|
}
|
||||||
|
@ -98,6 +99,7 @@ pipeline {
|
||||||
pre_test()
|
pre_test()
|
||||||
sh '''
|
sh '''
|
||||||
cd ${WKC}/tests
|
cd ${WKC}/tests
|
||||||
|
find pytest -name '*'sql|xargs rm -rf
|
||||||
./test-all.sh p2
|
./test-all.sh p2
|
||||||
date'''
|
date'''
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,18 +144,9 @@ function convertBinary(data, num_of_rows, nbytes = 0, offset = 0, micro=false) {
|
||||||
function convertNchar(data, num_of_rows, nbytes = 0, offset = 0, micro=false) {
|
function convertNchar(data, num_of_rows, nbytes = 0, offset = 0, micro=false) {
|
||||||
data = ref.reinterpret(data.deref(), nbytes * num_of_rows, offset);
|
data = ref.reinterpret(data.deref(), nbytes * num_of_rows, offset);
|
||||||
let res = [];
|
let res = [];
|
||||||
let currOffset = 0;
|
let dataEntry = data.slice(0, nbytes); //one entry in a row under a column;
|
||||||
// every 4 bytes, a character is encoded;
|
//TODO: should use the correct character encoding
|
||||||
while (currOffset < data.length) {
|
res.push(dataEntry.toString("utf-8"));
|
||||||
let dataEntry = data.slice(currOffset, currOffset + nbytes); //one entry in a row under a column;
|
|
||||||
if (dataEntry.readInt64LE(0) == FieldTypes.C_NCHAR_NULL) {
|
|
||||||
res.push(null);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
res.push(dataEntry.toString("utf16le").replace(/\u0000/g, ""));
|
|
||||||
}
|
|
||||||
currOffset += nbytes;
|
|
||||||
}
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -351,7 +342,8 @@ CTaosInterface.prototype.useResult = function useResult(result) {
|
||||||
CTaosInterface.prototype.fetchBlock = function fetchBlock(result, fields) {
|
CTaosInterface.prototype.fetchBlock = function fetchBlock(result, fields) {
|
||||||
//let pblock = ref.ref(ref.ref(ref.NULL)); // equal to our raw data
|
//let pblock = ref.ref(ref.ref(ref.NULL)); // equal to our raw data
|
||||||
let pblock = this.libtaos.taos_fetch_row(result);
|
let pblock = this.libtaos.taos_fetch_row(result);
|
||||||
if (pblock == null) {
|
let num_of_rows = 1;
|
||||||
|
if (ref.isNull(pblock) == true) {
|
||||||
return {block:null, num_of_rows:0};
|
return {block:null, num_of_rows:0};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,17 +355,16 @@ CTaosInterface.prototype.fetchBlock = function fetchBlock(result, fields) {
|
||||||
|
|
||||||
if (ref.isNull(fieldL) == false) {
|
if (ref.isNull(fieldL) == false) {
|
||||||
for (let i = 0; i < fields.length; i ++) {
|
for (let i = 0; i < fields.length; i ++) {
|
||||||
let plen = ref.reinterpret(fieldL, 4, i*4);
|
let plen = ref.reinterpret(fieldL, 4, i*4);
|
||||||
let len = plen.readInt32LE(0);
|
let len = plen.readInt32LE(0);
|
||||||
fieldlens.push(len);
|
fieldlens.push(len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let blocks = new Array(fields.length);
|
let blocks = new Array(fields.length);
|
||||||
blocks.fill(null);
|
blocks.fill(null);
|
||||||
num_of_rows = Math.abs(num_of_rows);
|
//num_of_rows = Math.abs(num_of_rows);
|
||||||
let offset = 0;
|
let offset = 0;
|
||||||
pblock = pblock.deref();
|
|
||||||
for (let i = 0; i < fields.length; i++) {
|
for (let i = 0; i < fields.length; i++) {
|
||||||
pdata = ref.reinterpret(pblock,8,i*8);
|
pdata = ref.reinterpret(pblock,8,i*8);
|
||||||
pdata = ref.ref(pdata.readPointer());
|
pdata = ref.ref(pdata.readPointer());
|
||||||
|
|
|
@ -25,6 +25,7 @@ function TaosResult(data, fields) {
|
||||||
* @function pretty
|
* @function pretty
|
||||||
* @since 1.0.6
|
* @since 1.0.6
|
||||||
*/
|
*/
|
||||||
|
|
||||||
TaosResult.prototype.pretty = function pretty() {
|
TaosResult.prototype.pretty = function pretty() {
|
||||||
let fieldsStr = "";
|
let fieldsStr = "";
|
||||||
let sizing = [];
|
let sizing = [];
|
||||||
|
@ -46,8 +47,7 @@ TaosResult.prototype.pretty = function pretty() {
|
||||||
row.data.forEach((entry, i) => {
|
row.data.forEach((entry, i) => {
|
||||||
if (this.fields[i]._field.type == 9) {
|
if (this.fields[i]._field.type == 9) {
|
||||||
entry = entry.toTaosString();
|
entry = entry.toTaosString();
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
entry = entry == null ? 'null' : entry.toString();
|
entry = entry == null ? 'null' : entry.toString();
|
||||||
}
|
}
|
||||||
rowStr += entry
|
rowStr += entry
|
||||||
|
|
|
@ -48,6 +48,7 @@ for (let i = 0; i < 10000; i++) {
|
||||||
// Select
|
// Select
|
||||||
console.log('select * from td_connector_test.all_types limit 3 offset 100;');
|
console.log('select * from td_connector_test.all_types limit 3 offset 100;');
|
||||||
c1.execute('select * from td_connector_test.all_types limit 2 offset 100;');
|
c1.execute('select * from td_connector_test.all_types limit 2 offset 100;');
|
||||||
|
|
||||||
var d = c1.fetchall();
|
var d = c1.fetchall();
|
||||||
console.log(c1.fields);
|
console.log(c1.fields);
|
||||||
console.log(d);
|
console.log(d);
|
||||||
|
@ -77,13 +78,24 @@ c1.query('select stddev(_double), stddev(_bigint), stddev(_float) from all_types
|
||||||
})
|
})
|
||||||
|
|
||||||
// Binding arguments, and then using promise
|
// Binding arguments, and then using promise
|
||||||
var q = c1.query('select * from td_connector_test.all_types where ts >= ? and _int > ? limit 100 offset 40;').bind(new Date(1231), 100)
|
var q = c1.query('select _nchar from td_connector_test.all_types where ts >= ? and _int > ? limit 100 offset 40;').bind(new Date(1231), 100)
|
||||||
console.log(q.query);
|
console.log(q.query);
|
||||||
q.execute().then(function(r) {
|
q.execute().then(function(r) {
|
||||||
r.pretty();
|
r.pretty();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var q = c1.query('select * from td_connector_test.weather');
|
||||||
|
console.log(q.query);
|
||||||
|
q.execute().then(function(r) {
|
||||||
|
//console.log(r);
|
||||||
|
r.pretty();
|
||||||
|
});
|
||||||
|
|
||||||
|
function sleep(sleepTime) {
|
||||||
|
for(var start = +new Date; +new Date - start <= sleepTime; ) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
sleep(10000);
|
||||||
|
|
||||||
// Raw Async Testing (Callbacks, not promises)
|
// Raw Async Testing (Callbacks, not promises)
|
||||||
function cb2(param, result, rowCount, rd) {
|
function cb2(param, result, rowCount, rd) {
|
||||||
|
@ -129,16 +141,21 @@ setTimeout(function(){
|
||||||
c1.fetchall_a(thisRes, cb4, param);
|
c1.fetchall_a(thisRes, cb4, param);
|
||||||
},100);
|
},100);
|
||||||
|
|
||||||
|
|
||||||
// Async through promises
|
// Async through promises
|
||||||
var aq = c1.query('select count(*) from td_connector_test.all_types;',false);
|
var aq = c1.query('select count(*) from td_connector_test.all_types;',false);
|
||||||
aq.execute_a().then(function(data) {
|
aq.execute_a().then(function(data) {
|
||||||
data.pretty();
|
data.pretty();
|
||||||
});
|
});
|
||||||
c1.query('describe td_connector_test.stabletest;').execute_a().then(r=> r.pretty());
|
|
||||||
|
c1.query('describe td_connector_test.stabletest').execute_a().then(function(r){
|
||||||
|
r.pretty()
|
||||||
|
});
|
||||||
|
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
c1.query('drop database td_connector_test;');
|
c1.query('drop database td_connector_test;');
|
||||||
},200);
|
},200);
|
||||||
|
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
conn.close();
|
conn.close();
|
||||||
},2000);
|
},2000);
|
||||||
|
|
||||||
|
|
|
@ -207,10 +207,10 @@ void *tsdbAllocBytes(STsdbRepo *pRepo, int bytes) {
|
||||||
int tsdbAsyncCommit(STsdbRepo *pRepo) {
|
int tsdbAsyncCommit(STsdbRepo *pRepo) {
|
||||||
if (pRepo->mem == NULL) return 0;
|
if (pRepo->mem == NULL) return 0;
|
||||||
|
|
||||||
ASSERT(pRepo->imem == NULL);
|
|
||||||
|
|
||||||
sem_wait(&(pRepo->readyToCommit));
|
sem_wait(&(pRepo->readyToCommit));
|
||||||
|
|
||||||
|
ASSERT(pRepo->imem == NULL);
|
||||||
|
|
||||||
if (pRepo->code != TSDB_CODE_SUCCESS) {
|
if (pRepo->code != TSDB_CODE_SUCCESS) {
|
||||||
tsdbWarn("vgId:%d try to commit when TSDB not in good state: %s", REPO_ID(pRepo), tstrerror(terrno));
|
tsdbWarn("vgId:%d try to commit when TSDB not in good state: %s", REPO_ID(pRepo), tstrerror(terrno));
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@ pipeline {
|
||||||
pre_test()
|
pre_test()
|
||||||
sh '''
|
sh '''
|
||||||
cd ${WKC}/tests
|
cd ${WKC}/tests
|
||||||
|
find pytest -name '*'sql|xargs rm -rf
|
||||||
./test-all.sh pytest
|
./test-all.sh pytest
|
||||||
date'''
|
date'''
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,6 +120,19 @@ class TDTestCase:
|
||||||
tdSql.checkData(2, 1, -1.5)
|
tdSql.checkData(2, 1, -1.5)
|
||||||
tdSql.checkData(3, 1, -2)
|
tdSql.checkData(3, 1, -2)
|
||||||
|
|
||||||
|
#TD-2533 twa+interval with large records
|
||||||
|
tdSql.execute("create table t4(ts timestamp, c int)")
|
||||||
|
sql = 'insert into t4 values '
|
||||||
|
for i in range(20000):
|
||||||
|
sql = sql + '(%d, %d)' % (self.ts + i * 500, i + 1)
|
||||||
|
if i % 2000 == 0:
|
||||||
|
tdSql.execute(sql)
|
||||||
|
sql = 'insert into t4 values '
|
||||||
|
tdSql.execute(sql)
|
||||||
|
tdSql.query('select twa(c) from t4 interval(10s)')
|
||||||
|
tdSql.checkData(0,1,10.999)
|
||||||
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
tdLog.success("%s successfully executed" % __file__)
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
|
@ -5,14 +5,24 @@ GREEN='\033[1;32m'
|
||||||
GREEN_DARK='\033[0;32m'
|
GREEN_DARK='\033[0;32m'
|
||||||
GREEN_UNDERLINE='\033[4;32m'
|
GREEN_UNDERLINE='\033[4;32m'
|
||||||
NC='\033[0m'
|
NC='\033[0m'
|
||||||
#nohup /var/lib/jenkins/workspace/TDinternal/debug/build/bin/taosd -c /var/lib/jenkins/workspace/TDinternal/community/sim/dnode1/cfg >/dev/null &
|
IN_TDINTERNAL="community"
|
||||||
nohup /root/TDinternal/debug/build/bin/taosd -c /root/TDinternal/community/sim/dnode1/cfg >/dev/null &
|
TDIR=`pwd`
|
||||||
|
if [[ "$tests_dir" == *"$IN_TDINTERNAL"* ]]; then
|
||||||
|
cd ../..
|
||||||
|
else
|
||||||
|
cd ../../..
|
||||||
|
fi
|
||||||
|
TOP_DIR=`pwd`
|
||||||
|
TAOSD_DIR=`find . -name "taosd"|grep -v community|head -n1`
|
||||||
|
nohup $TAOSD_DIR >/dev/null &
|
||||||
|
cd -
|
||||||
./crash_gen.sh --valgrind -p -t 10 -s 250 -b 4
|
./crash_gen.sh --valgrind -p -t 10 -s 250 -b 4
|
||||||
pidof taosd|xargs kill -9
|
pidof taosd|xargs kill -9
|
||||||
grep 'start to execute\|ERROR SUMMARY' valgrind.err|grep -v 'grep'|uniq|tee crash_gen_mem_err.log
|
grep 'start to execute\|ERROR SUMMARY' valgrind.err|grep -v 'grep'|uniq|tee crash_gen_mem_err.log
|
||||||
|
|
||||||
for memError in `grep 'ERROR SUMMARY' crash_gen_mem_err.log | awk '{print $4}'`
|
for memError in `grep 'ERROR SUMMARY' crash_gen_mem_err.log | awk '{print $4}'`
|
||||||
do
|
do
|
||||||
|
memError=(${memError//,/})
|
||||||
if [ -n "$memError" ]; then
|
if [ -n "$memError" ]; then
|
||||||
if [ "$memError" -gt 12 ]; then
|
if [ "$memError" -gt 12 ]; then
|
||||||
echo -e "${RED} ## Memory errors number valgrind reports is $memError.\
|
echo -e "${RED} ## Memory errors number valgrind reports is $memError.\
|
||||||
|
@ -24,7 +34,7 @@ done
|
||||||
grep 'start to execute\|definitely lost:' valgrind.err|grep -v 'grep'|uniq|tee crash_gen-definitely-lost-out.log
|
grep 'start to execute\|definitely lost:' valgrind.err|grep -v 'grep'|uniq|tee crash_gen-definitely-lost-out.log
|
||||||
for defiMemError in `grep 'definitely lost:' crash_gen-definitely-lost-out.log | awk '{print $7}'`
|
for defiMemError in `grep 'definitely lost:' crash_gen-definitely-lost-out.log | awk '{print $7}'`
|
||||||
do
|
do
|
||||||
|
defiMemError=(${defiMemError//,/})
|
||||||
if [ -n "$defiMemError" ]; then
|
if [ -n "$defiMemError" ]; then
|
||||||
if [ "$defiMemError" -gt 3 ]; then
|
if [ "$defiMemError" -gt 3 ]; then
|
||||||
echo -e "${RED} ## Memory errors number valgrind reports \
|
echo -e "${RED} ## Memory errors number valgrind reports \
|
||||||
|
|
|
@ -230,7 +230,7 @@ python3 test.py -f tools/lowaTest.py
|
||||||
python3 test.py -f tools/taosdemoTest2.py
|
python3 test.py -f tools/taosdemoTest2.py
|
||||||
|
|
||||||
# subscribe
|
# subscribe
|
||||||
#python3 test.py -f subscribe/singlemeter.py
|
python3 test.py -f subscribe/singlemeter.py
|
||||||
#python3 test.py -f subscribe/stability.py
|
#python3 test.py -f subscribe/stability.py
|
||||||
#python3 test.py -f subscribe/supertable.py
|
python3 test.py -f subscribe/supertable.py
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue