Merge pull request #24865 from taosdata/cases/TD-28408-3.0
feat: autoshell add news keyword
This commit is contained in:
commit
7ba2e37384
|
@ -373,6 +373,7 @@ static int32_t collectUseTable(const SName* pName, SHashObj* pTable) {
|
|||
return taosHashPut(pTable, fullName, strlen(fullName), pName, sizeof(SName));
|
||||
}
|
||||
|
||||
#ifdef BUILD_NO_CALL
|
||||
static int32_t getViewMetaImpl(SParseContext* pParCxt, SParseMetaCache* pMetaCache, const SName* pName, STableMeta** pMeta) {
|
||||
#ifndef TD_ENTERPRISE
|
||||
return TSDB_CODE_PAR_TABLE_NOT_EXIST;
|
||||
|
@ -396,6 +397,7 @@ static int32_t getViewMetaImpl(SParseContext* pParCxt, SParseMetaCache* pMetaCac
|
|||
}
|
||||
return code;
|
||||
}
|
||||
#endif
|
||||
|
||||
int32_t getTargetMetaImpl(SParseContext* pParCxt, SParseMetaCache* pMetaCache, const SName* pName, STableMeta** pMeta, bool couldBeView) {
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
|
@ -774,9 +776,11 @@ static bool isAggFunc(const SNode* pNode) {
|
|||
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsAggFunc(((SFunctionNode*)pNode)->funcId));
|
||||
}
|
||||
|
||||
#ifdef BUILD_NO_CALL
|
||||
static bool isSelectFunc(const SNode* pNode) {
|
||||
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsSelectFunc(((SFunctionNode*)pNode)->funcId));
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool isWindowPseudoColumnFunc(const SNode* pNode) {
|
||||
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsWindowPseudoColumnFunc(((SFunctionNode*)pNode)->funcId));
|
||||
|
@ -790,9 +794,11 @@ static bool isInterpPseudoColumnFunc(const SNode* pNode) {
|
|||
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsInterpPseudoColumnFunc(((SFunctionNode*)pNode)->funcId));
|
||||
}
|
||||
|
||||
#ifdef BUILD_NO_CALL
|
||||
static bool isTimelineFunc(const SNode* pNode) {
|
||||
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsTimelineFunc(((SFunctionNode*)pNode)->funcId));
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool isImplicitTsFunc(const SNode* pNode) {
|
||||
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsImplicitTsFunc(((SFunctionNode*)pNode)->funcId));
|
||||
|
@ -7738,9 +7744,11 @@ static int32_t addSubtableInfoToCreateStreamQuery(STranslateContext* pCxt, STabl
|
|||
return code;
|
||||
}
|
||||
|
||||
#ifdef BUILD_NO_CALL
|
||||
static bool isEventWindowQuery(SSelectStmt* pSelect) {
|
||||
return NULL != pSelect->pWindow && QUERY_NODE_EVENT_WINDOW == nodeType(pSelect->pWindow);
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool hasJsonTypeProjection(SSelectStmt* pSelect) {
|
||||
SNode* pProj = NULL;
|
||||
|
|
|
@ -67,7 +67,6 @@ class TDTestCase(TBase):
|
|||
dirs = glob.glob(dnodesRootDir)
|
||||
for dir in dirs:
|
||||
if os.path.isdir(dir):
|
||||
tdLog.debug("delete dir: %s " % (dnodesRootDir))
|
||||
self.remove_directory(os.path.join(dir, "wal"))
|
||||
|
||||
sc.dnodeStart(1)
|
||||
|
@ -88,7 +87,7 @@ class TDTestCase(TBase):
|
|||
if bFinish:
|
||||
break
|
||||
|
||||
self.timestamp_step = 1
|
||||
self.timestamp_step = 1000
|
||||
self.insert_rows = 6000
|
||||
self.checkInsertCorrect()
|
||||
self.checkAggCorrect()
|
||||
|
|
|
@ -0,0 +1,152 @@
|
|||
###################################################################
|
||||
# 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 sys
|
||||
import time
|
||||
import random
|
||||
|
||||
import taos
|
||||
import frame
|
||||
import frame.etool
|
||||
|
||||
from frame.log import *
|
||||
from frame.cases import *
|
||||
from frame.sql import *
|
||||
from frame.caseBase import *
|
||||
from frame import *
|
||||
from frame.autogen import *
|
||||
|
||||
|
||||
class TDTestCase(TBase):
|
||||
updatecfgDict = {
|
||||
}
|
||||
|
||||
def insertData(self):
|
||||
tdLog.info(f"create table and insert data.")
|
||||
self.stb = "stb"
|
||||
self.db = "db"
|
||||
self.childtable_count = 10
|
||||
self.insert_rows = 10000
|
||||
|
||||
self.autoGen = AutoGen(startTs = 1600000000000*1000*1000, batch=500, fillOne=True)
|
||||
self.autoGen.create_db(self.db, 2, 3, "precision 'ns'")
|
||||
self.autoGen.create_stable(stbname = self.stb, tag_cnt = 5, column_cnt = 20, binary_len = 10, nchar_len = 5)
|
||||
self.autoGen.create_child(self.stb, "child", self.childtable_count)
|
||||
self.autoGen.insert_data(self.insert_rows, True)
|
||||
|
||||
tdLog.info("create view.")
|
||||
tdSql.execute(f"use {self.db}")
|
||||
sqls = [
|
||||
"create view viewc0c1 as select c0,c1 from stb ",
|
||||
"create view viewc0c1c2 as select c0,c1,c2 from stb ",
|
||||
"create view viewc0c3 as select c0,c3 from stb where c3=1",
|
||||
"create view viewc0c4c5 as select c4,c5 from stb ",
|
||||
"create view viewc0c6 as select c0,c1,c6 from stb ",
|
||||
"create view viewc0c7 as select c0,c1 from stb ",
|
||||
"create view viewc0c7c8 as select c0,c7,c8 from stb where c8>0",
|
||||
"create view viewc0c3c1 as select c0,c3,c1 from stb ",
|
||||
"create view viewc2c4 as select c2,c4 from stb ",
|
||||
"create view viewc2c5 as select c2,c5 from stb ",
|
||||
]
|
||||
tdSql.executes(sqls)
|
||||
|
||||
def checkView(self):
|
||||
tdLog.info(f"check view like.")
|
||||
|
||||
# like
|
||||
sql = f"show views like 'view%'"
|
||||
tdSql.query(sql)
|
||||
tdSql.checkRows(10)
|
||||
|
||||
sql = f"show views like 'vie_c0c1c2'"
|
||||
tdSql.query(sql)
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0,0,"viewc0c1c2")
|
||||
|
||||
sql = f"show views like '%c2c_'"
|
||||
tdSql.query(sql)
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0,0, "viewc2c4")
|
||||
tdSql.checkData(1,0, "viewc2c5")
|
||||
|
||||
sql = f"show views like '%' "
|
||||
tdSql.query(sql)
|
||||
tdSql.checkRows(10)
|
||||
|
||||
# zero
|
||||
sql = "show views like '_' "
|
||||
tdSql.query(sql)
|
||||
tdSql.checkRows(0)
|
||||
sql = "show views like 'a%' "
|
||||
tdSql.query(sql)
|
||||
tdSql.checkRows(0)
|
||||
|
||||
|
||||
def doQuery(self):
|
||||
tdLog.info(f"do query.")
|
||||
|
||||
# __group_key
|
||||
sql = f"select count(*) from {self.stb} "
|
||||
tdSql.query(sql)
|
||||
# column index 1 value same with 2
|
||||
allRows = self.insert_rows * self.childtable_count
|
||||
tdSql.checkFirstValue(sql, allRows)
|
||||
|
||||
def checkShow(self):
|
||||
# not support
|
||||
sql = "show accounts;"
|
||||
tdSql.error(sql)
|
||||
|
||||
# check result
|
||||
sql = "SHOW CLUSTER;"
|
||||
tdSql.query(sql)
|
||||
tdSql.checkRows(1)
|
||||
sql = "SHOW COMPACTS;"
|
||||
tdSql.query(sql)
|
||||
tdSql.checkRows(0)
|
||||
sql = "SHOW COMPACT 1;"
|
||||
tdSql.query(sql)
|
||||
tdSql.checkRows(0)
|
||||
sql = "SHOW CLUSTER MACHINES;"
|
||||
tdSql.query(sql)
|
||||
tdSql.checkRows(1)
|
||||
|
||||
# run to check crash
|
||||
sqls = [
|
||||
"show scores;",
|
||||
"SHOW CLUSTER VARIABLES",
|
||||
"SHOW BNODES;",
|
||||
]
|
||||
tdSql.executes(sqls)
|
||||
|
||||
|
||||
# run
|
||||
def run(self):
|
||||
tdLog.debug(f"start to excute {__file__}")
|
||||
|
||||
# insert data
|
||||
self.insertData()
|
||||
|
||||
# check view
|
||||
self.checkView()
|
||||
|
||||
# do action
|
||||
self.doQuery()
|
||||
|
||||
|
||||
tdLog.success(f"{__file__} successfully executed")
|
||||
|
||||
|
||||
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
|
@ -6,7 +6,7 @@
|
|||
"user": "root",
|
||||
"password": "taosdata",
|
||||
"connection_pool_size": 8,
|
||||
"num_of_records_per_req": 2000,
|
||||
"num_of_records_per_req": 4000,
|
||||
"prepared_rand": 1000,
|
||||
"thread_count": 2,
|
||||
"create_table_thread_count": 1,
|
||||
|
@ -18,26 +18,27 @@
|
|||
"drop": "yes",
|
||||
"vgroups": 2,
|
||||
"replica": 1,
|
||||
"duration":"1d",
|
||||
"keep": "3d,6d,30d"
|
||||
"duration":"15d",
|
||||
"flush_each_batch":"yes",
|
||||
"keep": "60d,100d,200d"
|
||||
},
|
||||
"super_tables": [
|
||||
{
|
||||
"name": "stb",
|
||||
"child_table_exists": "no",
|
||||
"childtable_count": 4,
|
||||
"insert_rows": 1000000,
|
||||
"childtable_count": 2,
|
||||
"insert_rows": 2000000,
|
||||
"childtable_prefix": "d",
|
||||
"insert_mode": "taosc",
|
||||
"timestamp_step": 1000,
|
||||
"start_timestamp":"now-13d",
|
||||
"start_timestamp":"now-90d",
|
||||
"columns": [
|
||||
{ "type": "bool", "name": "bc"},
|
||||
{ "type": "float", "name": "fc" },
|
||||
{ "type": "double", "name": "dc"},
|
||||
{ "type": "tinyint", "name": "ti", "values":["1"]},
|
||||
{ "type": "tinyint", "name": "ti"},
|
||||
{ "type": "smallint", "name": "si" },
|
||||
{ "type": "int", "name": "ic" },
|
||||
{ "type": "int", "name": "ic" ,"max": 1,"min": 1},
|
||||
{ "type": "bigint", "name": "bi" },
|
||||
{ "type": "utinyint", "name": "uti"},
|
||||
{ "type": "usmallint", "name": "usi"},
|
||||
|
|
|
@ -58,8 +58,8 @@ class TDTestCase(TBase):
|
|||
|
||||
tdSql.execute(f"use {self.db}")
|
||||
# come from s3_basic.json
|
||||
self.childtable_count = 4
|
||||
self.insert_rows = 1000000
|
||||
self.childtable_count = 2
|
||||
self.insert_rows = 2000000
|
||||
self.timestamp_step = 1000
|
||||
|
||||
def createStream(self, sname):
|
||||
|
|
|
@ -14,15 +14,18 @@ import time
|
|||
# Auto Gen class
|
||||
#
|
||||
class AutoGen:
|
||||
def __init__(self, fillOne=False):
|
||||
self.ts = 1600000000000
|
||||
self.batch_size = 100
|
||||
def __init__(self, startTs = 1600000000000, step = 1000, batch = 100, fillOne=False):
|
||||
self.startTs = startTs
|
||||
self.ts = startTs
|
||||
self.step = step
|
||||
self.batch_size = batch
|
||||
self.fillOne = fillOne
|
||||
seed = time.time() % 10000
|
||||
random.seed(seed)
|
||||
self.fillOne = fillOne
|
||||
|
||||
# set start ts
|
||||
def set_start_ts(self, ts):
|
||||
self.startTs = ts
|
||||
self.ts = ts
|
||||
|
||||
# set batch size
|
||||
|
@ -111,9 +114,9 @@ class AutoGen:
|
|||
return ''.join(random.choice(letters) for i in range(count))
|
||||
|
||||
# create db
|
||||
def create_db(self, dbname, vgroups = 2, replica = 1):
|
||||
def create_db(self, dbname, vgroups = 2, replica = 1, others=""):
|
||||
self.dbname = dbname
|
||||
tdSql.execute(f'create database {dbname} vgroups {vgroups} replica {replica}')
|
||||
tdSql.execute(f'create database {dbname} vgroups {vgroups} replica {replica} {others}')
|
||||
|
||||
# create table or stable
|
||||
def create_stable(self, stbname, tag_cnt, column_cnt, binary_len, nchar_len):
|
||||
|
@ -167,12 +170,12 @@ class AutoGen:
|
|||
|
||||
def insert_data(self, cnt, bContinue=False):
|
||||
if not bContinue:
|
||||
self.ts = 1600000000000
|
||||
self.ts = self.startTs
|
||||
|
||||
currTs = 1600000000000
|
||||
currTs = self.startTs
|
||||
for i in range(self.child_cnt):
|
||||
name = f"{self.child_name}{i}"
|
||||
currTs = self.insert_data_child(name, cnt, self.batch_size, 1)
|
||||
currTs = self.insert_data_child(name, cnt, self.batch_size, self.step)
|
||||
|
||||
self.ts = currTs
|
||||
tdLog.info(f" insert data ok, child table={self.child_cnt} insert rows={cnt}")
|
||||
|
|
|
@ -15,10 +15,11 @@
|
|||
,,y,army,./pytest.sh python3 ./test.py -f community/cluster/snapshot.py -N 3 -L 3 -D 2
|
||||
,,y,army,./pytest.sh python3 ./test.py -f community/query/function/test_func_elapsed.py
|
||||
,,y,army,./pytest.sh python3 ./test.py -f community/query/fill/fill_desc.py -N 3 -L 3 -D 2
|
||||
,,y,army,./pytest.sh python3 ./test.py -f community/cluster/incSnapshot.py -N 3 -L 3 -D 2
|
||||
,,y,army,./pytest.sh python3 ./test.py -f community/cluster/incSnapshot.py -N 3
|
||||
,,y,army,./pytest.sh python3 ./test.py -f community/query/query_basic.py -N 3
|
||||
,,y,army,./pytest.sh python3 ./test.py -f community/cluster/splitVgroupByLearner.py -N 3
|
||||
,,n,army,python3 ./test.py -f community/cmdline/fullopt.py
|
||||
,,n,army,python3 ./test.py -f community/query/show.py -N 3
|
||||
,,y,army,./pytest.sh python3 ./test.py -f community/storage/oneStageComp.py -N 3 -L 3 -D 1
|
||||
|
||||
#
|
||||
|
|
|
@ -106,6 +106,7 @@ SWords shellCommands[] = {
|
|||
{"create user <anyword> pass <anyword> sysinfo 0;", 0, 0, NULL},
|
||||
{"create user <anyword> pass <anyword> sysinfo 1;", 0, 0, NULL},
|
||||
#ifdef TD_ENTERPRISE
|
||||
{"create view <anyword> as select", 0, 0, NULL},
|
||||
{"compact database <db_name>", 0, 0, NULL},
|
||||
#endif
|
||||
{"describe <all_table>", 0, 0, NULL},
|
||||
|
@ -162,13 +163,20 @@ SWords shellCommands[] = {
|
|||
{"show create database <db_name> \\G;", 0, 0, NULL},
|
||||
{"show create stable <stb_name> \\G;", 0, 0, NULL},
|
||||
{"show create table <tb_name> \\G;", 0, 0, NULL},
|
||||
#ifdef TD_ENTERPRISE
|
||||
{"show create view <all_table> \\G;", 0, 0, NULL},
|
||||
#endif
|
||||
{"show connections;", 0, 0, NULL},
|
||||
{"show compact", 0, 0, NULL},
|
||||
{"show compacts;", 0, 0, NULL},
|
||||
{"show cluster;", 0, 0, NULL},
|
||||
{"show cluster alive;", 0, 0, NULL},
|
||||
{"show cluster machines;", 0, 0, NULL},
|
||||
{"show databases;", 0, 0, NULL},
|
||||
{"show dnodes;", 0, 0, NULL},
|
||||
{"show dnode <dnode_id> variables;", 0, 0, NULL},
|
||||
{"show functions;", 0, 0, NULL},
|
||||
{"show licences;", 0, 0, NULL},
|
||||
{"show mnodes;", 0, 0, NULL},
|
||||
{"show queries;", 0, 0, NULL},
|
||||
// 80
|
||||
|
@ -185,6 +193,7 @@ SWords shellCommands[] = {
|
|||
{"show table distributed <all_table>", 0, 0, NULL},
|
||||
{"show tags from <tb_name>", 0, 0, NULL},
|
||||
{"show tags from <db_name>", 0, 0, NULL},
|
||||
{"show table tags from <all_table>", 0, 0, NULL},
|
||||
{"show topics;", 0, 0, NULL},
|
||||
{"show transactions;", 0, 0, NULL},
|
||||
{"show users;", 0, 0, NULL},
|
||||
|
@ -194,6 +203,8 @@ SWords shellCommands[] = {
|
|||
{"show vgroups;", 0, 0, NULL},
|
||||
{"show consumers;", 0, 0, NULL},
|
||||
{"show grants;", 0, 0, NULL},
|
||||
{"show grants full;", 0, 0, NULL},
|
||||
{"show grants logs;", 0, 0, NULL},
|
||||
#ifdef TD_ENTERPRISE
|
||||
{"split vgroup <vgroup_id>", 0, 0, NULL},
|
||||
#endif
|
||||
|
@ -302,6 +313,20 @@ char* key_systable[] = {
|
|||
|
||||
char* udf_language[] = {"\'Python\'", "\'C\'"};
|
||||
|
||||
// global keys can tips on anywhere
|
||||
char* global_keys[] = {
|
||||
"tbname",
|
||||
"now",
|
||||
"_wstart",
|
||||
"_wend",
|
||||
"_wduration",
|
||||
"_qstart",
|
||||
"_qend",
|
||||
"_qduration",
|
||||
"_qtag",
|
||||
"_isfilled"
|
||||
};
|
||||
|
||||
//
|
||||
// ------- global variant define ---------
|
||||
//
|
||||
|
@ -341,8 +366,9 @@ bool waitAutoFill = false;
|
|||
#define WT_VAR_KEYSELECT 20
|
||||
#define WT_VAR_SYSTABLE 21
|
||||
#define WT_VAR_LANGUAGE 22
|
||||
#define WT_VAR_GLOBALKEYS 23
|
||||
|
||||
#define WT_VAR_CNT 23
|
||||
#define WT_VAR_CNT 24
|
||||
|
||||
|
||||
#define WT_TEXT 0xFF
|
||||
|
@ -494,10 +520,12 @@ void showHelp() {
|
|||
show connections;\n\
|
||||
show cluster;\n\
|
||||
show cluster alive;\n\
|
||||
show cluster machines;\n\
|
||||
show databases;\n\
|
||||
show dnodes;\n\
|
||||
show dnode <dnode_id> variables;\n\
|
||||
show functions;\n\
|
||||
show licences;\n\
|
||||
show mnodes;\n\
|
||||
show queries;\n\
|
||||
show query <query_id> ;\n\
|
||||
|
@ -513,6 +541,7 @@ void showHelp() {
|
|||
show table distributed <all_table>;\n\
|
||||
show tags from <tb_name>\n\
|
||||
show tags from <db_name>\n\
|
||||
show table tags from <all_table>\n\
|
||||
show topics;\n\
|
||||
show transactions;\n\
|
||||
show users;\n\
|
||||
|
@ -522,6 +551,8 @@ void showHelp() {
|
|||
show vgroups;\n\
|
||||
show consumers;\n\
|
||||
show grants;\n\
|
||||
show grants full;\n\
|
||||
show grants logs;\n\
|
||||
----- T ----- \n\
|
||||
trim database <db_name>;\n\
|
||||
----- U ----- \n\
|
||||
|
@ -534,8 +565,12 @@ void showHelp() {
|
|||
balance vgroup ;\n\
|
||||
balance vgroup leader on <vgroup_id> \n\
|
||||
compact database <db_name>; \n\
|
||||
crate view <view_name> as select ...\n\
|
||||
redistribute vgroup <vgroup_id> dnode <dnode_id> ;\n\
|
||||
split vgroup <vgroup_id>;");
|
||||
split vgroup <vgroup_id>;\n\
|
||||
show compacts;\n\
|
||||
show compact \n\
|
||||
show create view <all_table>;");
|
||||
#endif
|
||||
|
||||
printf("\n\n");
|
||||
|
@ -699,6 +734,7 @@ bool shellAutoInit() {
|
|||
GenerateVarType(WT_VAR_KEYSELECT, key_select, sizeof(key_select) / sizeof(char*));
|
||||
GenerateVarType(WT_VAR_SYSTABLE, key_systable, sizeof(key_systable) / sizeof(char*));
|
||||
GenerateVarType(WT_VAR_LANGUAGE, udf_language, sizeof(udf_language) / sizeof(char*));
|
||||
GenerateVarType(WT_VAR_GLOBALKEYS, global_keys, sizeof(global_keys) / sizeof(char*));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -1800,6 +1836,13 @@ bool matchEnd(TAOS* con, SShellCmd* cmd) {
|
|||
goto _return;
|
||||
}
|
||||
|
||||
// global keys
|
||||
if (fillWithType(con, cmd, last, WT_VAR_GLOBALKEYS)) {
|
||||
ret = true;
|
||||
goto _return;
|
||||
}
|
||||
|
||||
|
||||
_return:
|
||||
taosMemoryFree(ps);
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue