add tests
This commit is contained in:
parent
9625ce7cdf
commit
3c870acb16
|
@ -10707,7 +10707,7 @@ static int32_t buildCreateTSMAReq(STranslateContext* pCxt, SCreateTSMAStmt* pStm
|
||||||
tNameExtractFullName(useTbName, pReq->stb);
|
tNameExtractFullName(useTbName, pReq->stb);
|
||||||
pReq->igExists = pStmt->ignoreExists;
|
pReq->igExists = pStmt->ignoreExists;
|
||||||
pReq->interval = ((SValueNode*)pStmt->pOptions->pInterval)->datum.i;
|
pReq->interval = ((SValueNode*)pStmt->pOptions->pInterval)->datum.i;
|
||||||
pReq->intervalUnit = ((SValueNode*)pStmt->pOptions->pInterval)->unit;
|
pReq->intervalUnit = TIME_UNIT_MILLISECOND;
|
||||||
|
|
||||||
#define TSMA_MIN_INTERVAL_MS 1 // 1ms
|
#define TSMA_MIN_INTERVAL_MS 1 // 1ms
|
||||||
#define TSMA_MAX_INTERVAL_MS (60 * 60 * 1000) // 1h
|
#define TSMA_MAX_INTERVAL_MS (60 * 60 * 1000) // 1h
|
||||||
|
|
|
@ -6251,10 +6251,9 @@ static int32_t tsmaOptRewriteNodeList(SNodeList* pNodes, STSMAOptCtx* pCtx, cons
|
||||||
FOREACH(pNode, pNodes) {
|
FOREACH(pNode, pNodes) {
|
||||||
SNode* pOut = pNode;
|
SNode* pOut = pNode;
|
||||||
code = tsmaOptRewriteNode(&pOut, pCtx, pTsma, rewriteTbName, rewriteTag);
|
code = tsmaOptRewriteNode(&pOut, pCtx, pTsma, rewriteTbName, rewriteTag);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS != code) break;
|
||||||
REPLACE_NODE(pOut);
|
REPLACE_NODE(pOut);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -229,7 +229,7 @@ class TSMATester:
|
||||||
if actual_ctx.has_tsma():
|
if actual_ctx.has_tsma():
|
||||||
self.check_result(sql, expect.ignore_res_order_)
|
self.check_result(sql, expect.ignore_res_order_)
|
||||||
|
|
||||||
def check_sqls(self, sqls: list[str], expects: list[TSMAQueryContext]):
|
def check_sqls(self, sqls, expects):
|
||||||
for sql, query_ctx in zip(sqls, expects):
|
for sql, query_ctx in zip(sqls, expects):
|
||||||
self.check_sql(sql, query_ctx)
|
self.check_sql(sql, query_ctx)
|
||||||
|
|
||||||
|
@ -314,9 +314,9 @@ class TSMATestSQLGenerator:
|
||||||
|
|
||||||
def generate_select_list(self, user_select_list: str, partition_by_list: str):
|
def generate_select_list(self, user_select_list: str, partition_by_list: str):
|
||||||
res = user_select_list
|
res = user_select_list
|
||||||
if self.res_.has_interval:
|
if self.res_.has_interval and random.random() < 0.8:
|
||||||
res = res + ',_wstart, _wend'
|
res = res + ',_wstart, _wend'
|
||||||
if self.res_.partition_by or self.res_.group_by:
|
if self.res_.partition_by or self.res_.group_by and random.random() < 0.8:
|
||||||
res = res + f',{partition_by_list}'
|
res = res + f',{partition_by_list}'
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ class TSMATestSQLGenerator:
|
||||||
def generate_tag_list(self):
|
def generate_tag_list(self):
|
||||||
used_tag_num = random.randrange(1, self.opts_.tag_num)
|
used_tag_num = random.randrange(1, self.opts_.tag_num)
|
||||||
ret = ''
|
ret = ''
|
||||||
for i in range(used_tag_num):
|
for _ in range(used_tag_num):
|
||||||
tag_idx = random.randint(1,self.opts_.tag_num)
|
tag_idx = random.randint(1,self.opts_.tag_num)
|
||||||
ret = ret + self.opts_.tags_prefix + f'{tag_idx},'
|
ret = ret + self.opts_.tags_prefix + f'{tag_idx},'
|
||||||
return ret[:-1]
|
return ret[:-1]
|
||||||
|
@ -434,7 +434,7 @@ class TSMATestSQLGenerator:
|
||||||
return ret[:-1]
|
return ret[:-1]
|
||||||
|
|
||||||
|
|
||||||
def generate_partition_by(self) -> tuple[str, str]:
|
def generate_partition_by(self):
|
||||||
if not self.opts_.partition_by and not self.opts_.group_by:
|
if not self.opts_.partition_by and not self.opts_.group_by:
|
||||||
return ('','')
|
return ('','')
|
||||||
## no partition or group
|
## no partition or group
|
||||||
|
@ -649,6 +649,7 @@ class TDTestCase:
|
||||||
self.create_tsma('tsma2', 'test', 'meters', ['avg(c1)', 'avg(c2)'], '30m')
|
self.create_tsma('tsma2', 'test', 'meters', ['avg(c1)', 'avg(c2)'], '30m')
|
||||||
self.create_tsma('tsma5', 'test', 'norm_tb', ['avg(c1)', 'avg(c2)'], '10m')
|
self.create_tsma('tsma5', 'test', 'norm_tb', ['avg(c1)', 'avg(c2)'], '10m')
|
||||||
|
|
||||||
|
#time.sleep(99999999)
|
||||||
self.test_query_with_tsma_interval()
|
self.test_query_with_tsma_interval()
|
||||||
self.test_query_with_tsma_agg()
|
self.test_query_with_tsma_agg()
|
||||||
self.test_recursive_tsma()
|
self.test_recursive_tsma()
|
||||||
|
@ -718,7 +719,7 @@ class TDTestCase:
|
||||||
opts.partition_by = True
|
opts.partition_by = True
|
||||||
opts.interval = True
|
opts.interval = True
|
||||||
opts.where_ts_range = True
|
opts.where_ts_range = True
|
||||||
for i in range(1, 10000):
|
for _ in range(1, 1000):
|
||||||
sql_generator = TSMATestSQLGenerator(opts)
|
sql_generator = TSMATestSQLGenerator(opts)
|
||||||
sql = sql_generator.generate_one('avg(c1), avg(c2)', 'meters', '', interval_list)
|
sql = sql_generator.generate_one('avg(c1), avg(c2)', 'meters', '', interval_list)
|
||||||
ctxs.append(TSMAQCBuilder().with_sql(sql).ignore_query_table().ignore_res_order(sql_generator.can_ignore_res_order()).get_qc())
|
ctxs.append(TSMAQCBuilder().with_sql(sql).ignore_query_table().ignore_res_order(sql_generator.can_ignore_res_order()).get_qc())
|
||||||
|
@ -771,6 +772,12 @@ class TDTestCase:
|
||||||
.should_query_with_tsma('tsma2', '2018-09-17 09:30:00','2018-09-17 09:59:59.999') \
|
.should_query_with_tsma('tsma2', '2018-09-17 09:30:00','2018-09-17 09:59:59.999') \
|
||||||
.should_query_with_table('meters', '2018-09-17 10:00:00.000','2018-09-17 10:23:19.800').get_qc())
|
.should_query_with_table('meters', '2018-09-17 10:00:00.000','2018-09-17 10:23:19.800').get_qc())
|
||||||
|
|
||||||
|
sql = "select avg(c1) + 1, avg(c2) from meters where ts >= '2018-09-17 9:30:00.118' and ts < '2018-09-17 10:50:00'"
|
||||||
|
ctxs.append(TSMAQCBuilder().with_sql(sql) \
|
||||||
|
.should_query_with_table('meters', '2018-09-17 9:30:00.118', '2018-09-17 9:59:59.999') \
|
||||||
|
.should_query_with_tsma('tsma2', '2018-09-17 10:00:00', '2018-09-17 10:29:59.999') \
|
||||||
|
.should_query_with_tsma('tsma1', '2018-09-17 10:30:00.000', '2018-09-17 10:49:59.999').get_qc())
|
||||||
|
|
||||||
sql = 'select avg(c1) + avg(c2) from meters where tbname like "%t1%"'
|
sql = 'select avg(c1) + avg(c2) from meters where tbname like "%t1%"'
|
||||||
ctxs.append(TSMAQCBuilder().with_sql(sql).should_query_with_tsma('tsma2').get_qc())
|
ctxs.append(TSMAQCBuilder().with_sql(sql).should_query_with_tsma('tsma2').get_qc())
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue