fix: stmt not support many stb with single = false stmt_init
This commit is contained in:
parent
19c1e33e8c
commit
6bfc24d4ae
|
@ -19,6 +19,7 @@ import random
|
||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
import frame.eos
|
||||||
import frame.etool
|
import frame.etool
|
||||||
import frame.eutil
|
import frame.eutil
|
||||||
from frame.log import *
|
from frame.log import *
|
||||||
|
@ -427,6 +428,41 @@ class TBase:
|
||||||
|
|
||||||
return db, stb, child_count, insert_rows
|
return db, stb, child_count, insert_rows
|
||||||
|
|
||||||
|
# insert & check
|
||||||
|
def benchInsert(self, jsonFile, options = "", results = None):
|
||||||
|
# exe insert
|
||||||
|
benchmark = frame.etool.benchMarkFile()
|
||||||
|
cmd = f"{benchmark} {options} -f {jsonFile}"
|
||||||
|
rlist = frame.eos.runRetList(cmd, True, True, True)
|
||||||
|
if results != None:
|
||||||
|
for result in results:
|
||||||
|
self.checkListString(rlist, result)
|
||||||
|
|
||||||
|
# open json
|
||||||
|
with open(jsonFile, "r") as file:
|
||||||
|
data = json.load(file)
|
||||||
|
|
||||||
|
# read json
|
||||||
|
dbs = data["databases"]
|
||||||
|
for db in dbs:
|
||||||
|
dbName = db["dbinfo"]["name"]
|
||||||
|
stbs = db["super_tables"]
|
||||||
|
for stb in stbs:
|
||||||
|
child_count = stb["childtable_count"]
|
||||||
|
insert_rows = stb["insert_rows"]
|
||||||
|
timestamp_step = stb["timestamp_step"]
|
||||||
|
|
||||||
|
# check result
|
||||||
|
|
||||||
|
# count
|
||||||
|
sql = f"select count(*) from {db}.{stb}"
|
||||||
|
tdSql.checkAgg(sql, child_count * insert_rows)
|
||||||
|
# diff
|
||||||
|
sql = f"select * from (select diff(ts) as dif from {db}.{stb} partition by tbname) where dif != {timestamp_step};"
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
# show
|
||||||
|
tdLog.info(f"insert check passed. db:{db} stb:{stb} child_count:{child_count} insert_rows:{insert_rows}\n")
|
||||||
|
|
||||||
# tmq
|
# tmq
|
||||||
def tmqBenchJson(self, jsonFile, options="", checkStep=False):
|
def tmqBenchJson(self, jsonFile, options="", checkStep=False):
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
import frame
|
import frame
|
||||||
|
import frame.eos
|
||||||
import frame.etool
|
import frame.etool
|
||||||
from frame.log import *
|
from frame.log import *
|
||||||
from frame.cases import *
|
from frame.cases import *
|
||||||
|
@ -109,7 +110,6 @@ class TDTestCase(TBase):
|
||||||
tdLog.info(f" vgroups real={tdSql.getData(0,0)} expect={vgroups}")
|
tdLog.info(f" vgroups real={tdSql.getData(0,0)} expect={vgroups}")
|
||||||
tdSql.checkData(0, 0, vgroups, True)
|
tdSql.checkData(0, 0, vgroups, True)
|
||||||
|
|
||||||
|
|
||||||
# bugs ts
|
# bugs ts
|
||||||
def checkVGroups(self, benchmark):
|
def checkVGroups(self, benchmark):
|
||||||
# vgroups with command line set
|
# vgroups with command line set
|
||||||
|
@ -117,12 +117,19 @@ class TDTestCase(TBase):
|
||||||
# vgroups with json file
|
# vgroups with json file
|
||||||
self.testBenchmarkJson(benchmark, "./tools/benchmark/basic/json/insertBasic.json", "", True)
|
self.testBenchmarkJson(benchmark, "./tools/benchmark/basic/json/insertBasic.json", "", True)
|
||||||
|
|
||||||
|
|
||||||
|
def checkInsertManyStb(self):
|
||||||
|
# many stb
|
||||||
|
self.benchInsert("./tools/benchmark/basic/json/insertManyStb.json", "", True)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
benchmark = etool.benchMarkFile()
|
benchmark = frame.etool.benchMarkFile()
|
||||||
|
|
||||||
# vgroups
|
# vgroups
|
||||||
self.checkVGroups(benchmark)
|
self.checkVGroups(benchmark)
|
||||||
|
|
||||||
|
# check many stable
|
||||||
|
self.checkInsertManyStb()
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
|
|
|
@ -0,0 +1,151 @@
|
||||||
|
{
|
||||||
|
"filetype": "insert",
|
||||||
|
"cfgdir": "/etc/taos",
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"port": 6030,
|
||||||
|
"user": "root",
|
||||||
|
"password": "taosdata",
|
||||||
|
"num_of_records_per_req": 3000,
|
||||||
|
"thread_count": 2,
|
||||||
|
"confirm_parameter_prompt": "no",
|
||||||
|
"databases": [
|
||||||
|
{
|
||||||
|
"dbinfo": {
|
||||||
|
"name": "test1",
|
||||||
|
"drop": "yes",
|
||||||
|
"precision": "us",
|
||||||
|
"vgroups": 1
|
||||||
|
},
|
||||||
|
"super_tables": [
|
||||||
|
{
|
||||||
|
"name": "meters1",
|
||||||
|
"child_table_exists": "no",
|
||||||
|
"childtable_count": 2,
|
||||||
|
"insert_rows": 1000,
|
||||||
|
"childtable_prefix": "d",
|
||||||
|
"insert_mode": "stmt",
|
||||||
|
"timestamp_step": 15,
|
||||||
|
"start_timestamp":1700000000000000000,
|
||||||
|
"columns": [
|
||||||
|
{ "type": "double", "name": "dc", "max": 10, "min": 0 },
|
||||||
|
{ "type": "tinyint", "name": "ti", "max": 100, "min": -100 },
|
||||||
|
{ "type": "binary", "name": "bin", "len": 4}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
{ "type": "usmallint", "name": "tusi", "max": 100, "min": 0 },
|
||||||
|
{ "type": "uint", "name": "tui", "max": 1000, "min": 0 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meters2",
|
||||||
|
"child_table_exists": "no",
|
||||||
|
"childtable_count": 3,
|
||||||
|
"insert_rows": 100,
|
||||||
|
"childtable_prefix": "d",
|
||||||
|
"insert_mode": "stmt",
|
||||||
|
"timestamp_step": 20,
|
||||||
|
"interlace_rows": 1,
|
||||||
|
"start_timestamp":1700000000000000000,
|
||||||
|
"columns": [
|
||||||
|
{ "type": "double", "name": "dc", "max": 10, "min": 0 },
|
||||||
|
{ "type": "tinyint", "name": "ti", "max": 100, "min": -100 },
|
||||||
|
{ "type": "binary", "name": "bin", "len": 4}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
{ "type": "usmallint", "name": "tusi", "max": 100, "min": 0 },
|
||||||
|
{ "type": "uint", "name": "tui", "max": 1000, "min": 0 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meters3",
|
||||||
|
"child_table_exists": "no",
|
||||||
|
"childtable_count": 5,
|
||||||
|
"insert_rows": 100,
|
||||||
|
"childtable_prefix": "d",
|
||||||
|
"insert_mode": "stmt2",
|
||||||
|
"timestamp_step": 20,
|
||||||
|
"interlace_rows": 1,
|
||||||
|
"start_timestamp":1700000000000000000,
|
||||||
|
"columns": [
|
||||||
|
{ "type": "double", "name": "dc", "max": 10, "min": 0 },
|
||||||
|
{ "type": "tinyint", "name": "ti", "max": 100, "min": -100 },
|
||||||
|
{ "type": "binary", "name": "bin", "len": 4}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
{ "type": "usmallint", "name": "tusi", "max": 100, "min": 0 },
|
||||||
|
{ "type": "uint", "name": "tui", "max": 1000, "min": 0 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meters4",
|
||||||
|
"child_table_exists": "no",
|
||||||
|
"childtable_count": 2,
|
||||||
|
"insert_rows": 70,
|
||||||
|
"childtable_prefix": "d",
|
||||||
|
"insert_mode": "stmt2",
|
||||||
|
"timestamp_step": 50,
|
||||||
|
"interlace_rows": 0,
|
||||||
|
"start_timestamp":1700000000000000000,
|
||||||
|
"columns": [
|
||||||
|
{ "type": "double", "name": "dc", "max": 10, "min": 0 },
|
||||||
|
{ "type": "tinyint", "name": "ti", "max": 100, "min": -100 },
|
||||||
|
{ "type": "binary", "name": "bin", "len": 4}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
{ "type": "usmallint", "name": "tusi", "max": 100, "min": 0 },
|
||||||
|
{ "type": "uint", "name": "tui", "max": 1000, "min": 0 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dbinfo": {
|
||||||
|
"name": "test2",
|
||||||
|
"drop": "yes",
|
||||||
|
"precision": "ns",
|
||||||
|
"vgroups": 2
|
||||||
|
},
|
||||||
|
"super_tables": [
|
||||||
|
{
|
||||||
|
"name": "meters1",
|
||||||
|
"child_table_exists": "no",
|
||||||
|
"childtable_count": 3,
|
||||||
|
"insert_rows": 120,
|
||||||
|
"childtable_prefix": "d",
|
||||||
|
"insert_mode": "taosc",
|
||||||
|
"timestamp_step": 15,
|
||||||
|
"start_timestamp":1700000000000000000,
|
||||||
|
"columns": [
|
||||||
|
{ "type": "double", "name": "dc", "max": 10, "min": 0 },
|
||||||
|
{ "type": "tinyint", "name": "ti", "max": 100, "min": -100 },
|
||||||
|
{ "type": "binary", "name": "bin", "len": 4}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
{ "type": "usmallint", "name": "tusi", "max": 100, "min": 0 },
|
||||||
|
{ "type": "uint", "name": "tui", "max": 1000, "min": 0 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meters2",
|
||||||
|
"child_table_exists": "no",
|
||||||
|
"childtable_count": 2,
|
||||||
|
"insert_rows": 200,
|
||||||
|
"childtable_prefix": "d",
|
||||||
|
"insert_mode": "taosc",
|
||||||
|
"timestamp_step": 2,
|
||||||
|
"interlace_rows": 4,
|
||||||
|
"start_timestamp":1700000000000000000,
|
||||||
|
"columns": [
|
||||||
|
{ "type": "double", "name": "dc", "max": 10, "min": 0 },
|
||||||
|
{ "type": "tinyint", "name": "ti", "max": 100, "min": -100 },
|
||||||
|
{ "type": "binary", "name": "bin", "len": 4}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
{ "type": "usmallint", "name": "tusi", "max": 100, "min": 0 },
|
||||||
|
{ "type": "uint", "name": "tui", "max": 1000, "min": 0 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -1928,7 +1928,7 @@ static void *syncWriteInterlace(void *sarg) {
|
||||||
bindv = createBindV(nBatchTable, tagCnt, stbInfo->cols->size + 1);
|
bindv = createBindV(nBatchTable, tagCnt, stbInfo->cols->size + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool oldInitStmt = stbInfo->autoTblCreating || database->superTbls->size > 1;
|
bool oldInitStmt = stbInfo->autoTblCreating;
|
||||||
// not auto create table call once
|
// not auto create table call once
|
||||||
if(stbInfo->iface == STMT_IFACE && !oldInitStmt) {
|
if(stbInfo->iface == STMT_IFACE && !oldInitStmt) {
|
||||||
debugPrint("call prepareStmt for stable:%s\n", stbInfo->stbName);
|
debugPrint("call prepareStmt for stable:%s\n", stbInfo->stbName);
|
||||||
|
@ -2900,7 +2900,7 @@ void *syncWriteProgressive(void *sarg) {
|
||||||
tagData = benchCalloc(TAG_BATCH_COUNT, stbInfo->lenOfTags, false);
|
tagData = benchCalloc(TAG_BATCH_COUNT, stbInfo->lenOfTags, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool oldInitStmt = stbInfo->autoTblCreating || database->superTbls->size > 1;
|
bool oldInitStmt = stbInfo->autoTblCreating;
|
||||||
// stmt. not auto table create call on stmt
|
// stmt. not auto table create call on stmt
|
||||||
if (stbInfo->iface == STMT_IFACE && !oldInitStmt) {
|
if (stbInfo->iface == STMT_IFACE && !oldInitStmt) {
|
||||||
if (prepareStmt(pThreadInfo->conn->stmt, stbInfo, tagData, w)) {
|
if (prepareStmt(pThreadInfo->conn->stmt, stbInfo, tagData, w)) {
|
||||||
|
@ -3909,11 +3909,8 @@ int32_t initInsertThread(SDataBase* database, SSuperTable* stbInfo, int32_t nthr
|
||||||
if (NULL == pThreadInfo->conn) {
|
if (NULL == pThreadInfo->conn) {
|
||||||
goto END;
|
goto END;
|
||||||
}
|
}
|
||||||
|
// single always true for benchmark
|
||||||
bool single = true;
|
bool single = true;
|
||||||
if (database->superTbls->size > 1) {
|
|
||||||
single = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stbInfo->iface == STMT2_IFACE) {
|
if (stbInfo->iface == STMT2_IFACE) {
|
||||||
// stmt2 init
|
// stmt2 init
|
||||||
if (pThreadInfo->conn->stmt2)
|
if (pThreadInfo->conn->stmt2)
|
||||||
|
|
Loading…
Reference in New Issue