feat: autoshell add news keyword
This commit is contained in:
parent
20cd0d08bb
commit
97f56686c0
|
@ -373,6 +373,7 @@ static int32_t collectUseTable(const SName* pName, SHashObj* pTable) {
|
||||||
return taosHashPut(pTable, fullName, strlen(fullName), pName, sizeof(SName));
|
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) {
|
static int32_t getViewMetaImpl(SParseContext* pParCxt, SParseMetaCache* pMetaCache, const SName* pName, STableMeta** pMeta) {
|
||||||
#ifndef TD_ENTERPRISE
|
#ifndef TD_ENTERPRISE
|
||||||
return TSDB_CODE_PAR_TABLE_NOT_EXIST;
|
return TSDB_CODE_PAR_TABLE_NOT_EXIST;
|
||||||
|
@ -396,6 +397,7 @@ static int32_t getViewMetaImpl(SParseContext* pParCxt, SParseMetaCache* pMetaCac
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int32_t getTargetMetaImpl(SParseContext* pParCxt, SParseMetaCache* pMetaCache, const SName* pName, STableMeta** pMeta, bool couldBeView) {
|
int32_t getTargetMetaImpl(SParseContext* pParCxt, SParseMetaCache* pMetaCache, const SName* pName, STableMeta** pMeta, bool couldBeView) {
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
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));
|
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsAggFunc(((SFunctionNode*)pNode)->funcId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef BUILD_NO_CALL
|
||||||
static bool isSelectFunc(const SNode* pNode) {
|
static bool isSelectFunc(const SNode* pNode) {
|
||||||
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsSelectFunc(((SFunctionNode*)pNode)->funcId));
|
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsSelectFunc(((SFunctionNode*)pNode)->funcId));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool isWindowPseudoColumnFunc(const SNode* pNode) {
|
static bool isWindowPseudoColumnFunc(const SNode* pNode) {
|
||||||
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsWindowPseudoColumnFunc(((SFunctionNode*)pNode)->funcId));
|
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));
|
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsInterpPseudoColumnFunc(((SFunctionNode*)pNode)->funcId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef BUILD_NO_CALL
|
||||||
static bool isTimelineFunc(const SNode* pNode) {
|
static bool isTimelineFunc(const SNode* pNode) {
|
||||||
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsTimelineFunc(((SFunctionNode*)pNode)->funcId));
|
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsTimelineFunc(((SFunctionNode*)pNode)->funcId));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool isImplicitTsFunc(const SNode* pNode) {
|
static bool isImplicitTsFunc(const SNode* pNode) {
|
||||||
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsImplicitTsFunc(((SFunctionNode*)pNode)->funcId));
|
return (QUERY_NODE_FUNCTION == nodeType(pNode) && fmIsImplicitTsFunc(((SFunctionNode*)pNode)->funcId));
|
||||||
|
@ -7738,9 +7744,11 @@ static int32_t addSubtableInfoToCreateStreamQuery(STranslateContext* pCxt, STabl
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef BUILD_NO_CALL
|
||||||
static bool isEventWindowQuery(SSelectStmt* pSelect) {
|
static bool isEventWindowQuery(SSelectStmt* pSelect) {
|
||||||
return NULL != pSelect->pWindow && QUERY_NODE_EVENT_WINDOW == nodeType(pSelect->pWindow);
|
return NULL != pSelect->pWindow && QUERY_NODE_EVENT_WINDOW == nodeType(pSelect->pWindow);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool hasJsonTypeProjection(SSelectStmt* pSelect) {
|
static bool hasJsonTypeProjection(SSelectStmt* pSelect) {
|
||||||
SNode* pProj = NULL;
|
SNode* pProj = NULL;
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
###################################################################
|
||||||
|
# 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)
|
||||||
|
|
||||||
|
# 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())
|
|
@ -14,15 +14,18 @@ import time
|
||||||
# Auto Gen class
|
# Auto Gen class
|
||||||
#
|
#
|
||||||
class AutoGen:
|
class AutoGen:
|
||||||
def __init__(self, fillOne=False):
|
def __init__(self, startTs = 1600000000000, step = 1000, batch = 100, fillOne=False):
|
||||||
self.ts = 1600000000000
|
self.startTs = startTs
|
||||||
self.batch_size = 100
|
self.ts = startTs
|
||||||
|
self.step = step
|
||||||
|
self.batch_size = batch
|
||||||
|
self.fillOne = fillOne
|
||||||
seed = time.time() % 10000
|
seed = time.time() % 10000
|
||||||
random.seed(seed)
|
random.seed(seed)
|
||||||
self.fillOne = fillOne
|
|
||||||
|
|
||||||
# set start ts
|
# set start ts
|
||||||
def set_start_ts(self, ts):
|
def set_start_ts(self, ts):
|
||||||
|
self.startTs = ts
|
||||||
self.ts = ts
|
self.ts = ts
|
||||||
|
|
||||||
# set batch size
|
# set batch size
|
||||||
|
@ -111,9 +114,9 @@ class AutoGen:
|
||||||
return ''.join(random.choice(letters) for i in range(count))
|
return ''.join(random.choice(letters) for i in range(count))
|
||||||
|
|
||||||
# create db
|
# create db
|
||||||
def create_db(self, dbname, vgroups = 2, replica = 1):
|
def create_db(self, dbname, vgroups = 2, replica = 1, others=""):
|
||||||
self.dbname = dbname
|
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
|
# create table or stable
|
||||||
def create_stable(self, stbname, tag_cnt, column_cnt, binary_len, nchar_len):
|
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):
|
def insert_data(self, cnt, bContinue=False):
|
||||||
if not bContinue:
|
if not bContinue:
|
||||||
self.ts = 1600000000000
|
self.ts = self.startTs
|
||||||
|
|
||||||
currTs = 1600000000000
|
currTs = self.startTs
|
||||||
for i in range(self.child_cnt):
|
for i in range(self.child_cnt):
|
||||||
name = f"{self.child_name}{i}"
|
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
|
self.ts = currTs
|
||||||
tdLog.info(f" insert data ok, child table={self.child_cnt} insert rows={cnt}")
|
tdLog.info(f" insert data ok, child table={self.child_cnt} insert rows={cnt}")
|
||||||
|
|
|
@ -105,7 +105,8 @@ SWords shellCommands[] = {
|
||||||
{"create or replace aggregate function <anyword> as <anyword> outputtype <data_types> bufsize <anyword> language <udf_language>", 0, 0, NULL},
|
{"create or replace aggregate function <anyword> as <anyword> outputtype <data_types> bufsize <anyword> language <udf_language>", 0, 0, NULL},
|
||||||
{"create user <anyword> pass <anyword> sysinfo 0;", 0, 0, NULL},
|
{"create user <anyword> pass <anyword> sysinfo 0;", 0, 0, NULL},
|
||||||
{"create user <anyword> pass <anyword> sysinfo 1;", 0, 0, NULL},
|
{"create user <anyword> pass <anyword> sysinfo 1;", 0, 0, NULL},
|
||||||
#ifdef TD_ENTERPRISE
|
#ifdef TD_ENTERPRISE
|
||||||
|
{"create view <anyword> as select", 0, 0, NULL},
|
||||||
{"compact database <db_name>", 0, 0, NULL},
|
{"compact database <db_name>", 0, 0, NULL},
|
||||||
#endif
|
#endif
|
||||||
{"describe <all_table>", 0, 0, NULL},
|
{"describe <all_table>", 0, 0, NULL},
|
||||||
|
@ -162,13 +163,19 @@ SWords shellCommands[] = {
|
||||||
{"show create database <db_name> \\G;", 0, 0, NULL},
|
{"show create database <db_name> \\G;", 0, 0, NULL},
|
||||||
{"show create stable <stb_name> \\G;", 0, 0, NULL},
|
{"show create stable <stb_name> \\G;", 0, 0, NULL},
|
||||||
{"show create table <tb_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 connections;", 0, 0, NULL},
|
||||||
|
{"show compact", 0, 0, NULL},
|
||||||
|
{"show compacts;", 0, 0, NULL},
|
||||||
{"show cluster;", 0, 0, NULL},
|
{"show cluster;", 0, 0, NULL},
|
||||||
{"show cluster alive;", 0, 0, NULL},
|
{"show cluster alive;", 0, 0, NULL},
|
||||||
{"show databases;", 0, 0, NULL},
|
{"show databases;", 0, 0, NULL},
|
||||||
{"show dnodes;", 0, 0, NULL},
|
{"show dnodes;", 0, 0, NULL},
|
||||||
{"show dnode <dnode_id> variables;", 0, 0, NULL},
|
{"show dnode <dnode_id> variables;", 0, 0, NULL},
|
||||||
{"show functions;", 0, 0, NULL},
|
{"show functions;", 0, 0, NULL},
|
||||||
|
{"show licences;", 0, 0, NULL},
|
||||||
{"show mnodes;", 0, 0, NULL},
|
{"show mnodes;", 0, 0, NULL},
|
||||||
{"show queries;", 0, 0, NULL},
|
{"show queries;", 0, 0, NULL},
|
||||||
// 80
|
// 80
|
||||||
|
@ -185,6 +192,7 @@ SWords shellCommands[] = {
|
||||||
{"show table distributed <all_table>", 0, 0, NULL},
|
{"show table distributed <all_table>", 0, 0, NULL},
|
||||||
{"show tags from <tb_name>", 0, 0, NULL},
|
{"show tags from <tb_name>", 0, 0, NULL},
|
||||||
{"show tags from <db_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 topics;", 0, 0, NULL},
|
||||||
{"show transactions;", 0, 0, NULL},
|
{"show transactions;", 0, 0, NULL},
|
||||||
{"show users;", 0, 0, NULL},
|
{"show users;", 0, 0, NULL},
|
||||||
|
@ -194,6 +202,8 @@ SWords shellCommands[] = {
|
||||||
{"show vgroups;", 0, 0, NULL},
|
{"show vgroups;", 0, 0, NULL},
|
||||||
{"show consumers;", 0, 0, NULL},
|
{"show consumers;", 0, 0, NULL},
|
||||||
{"show grants;", 0, 0, NULL},
|
{"show grants;", 0, 0, NULL},
|
||||||
|
{"show grants full;", 0, 0, NULL},
|
||||||
|
{"show grants logs;", 0, 0, NULL},
|
||||||
#ifdef TD_ENTERPRISE
|
#ifdef TD_ENTERPRISE
|
||||||
{"split vgroup <vgroup_id>", 0, 0, NULL},
|
{"split vgroup <vgroup_id>", 0, 0, NULL},
|
||||||
#endif
|
#endif
|
||||||
|
@ -302,6 +312,20 @@ char* key_systable[] = {
|
||||||
|
|
||||||
char* udf_language[] = {"\'Python\'", "\'C\'"};
|
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 ---------
|
// ------- global variant define ---------
|
||||||
//
|
//
|
||||||
|
@ -341,8 +365,9 @@ bool waitAutoFill = false;
|
||||||
#define WT_VAR_KEYSELECT 20
|
#define WT_VAR_KEYSELECT 20
|
||||||
#define WT_VAR_SYSTABLE 21
|
#define WT_VAR_SYSTABLE 21
|
||||||
#define WT_VAR_LANGUAGE 22
|
#define WT_VAR_LANGUAGE 22
|
||||||
|
#define WT_VAR_GLOBALKEYS 23
|
||||||
|
|
||||||
#define WT_VAR_CNT 23
|
#define WT_VAR_CNT 24
|
||||||
|
|
||||||
|
|
||||||
#define WT_TEXT 0xFF
|
#define WT_TEXT 0xFF
|
||||||
|
@ -498,6 +523,7 @@ void showHelp() {
|
||||||
show dnodes;\n\
|
show dnodes;\n\
|
||||||
show dnode <dnode_id> variables;\n\
|
show dnode <dnode_id> variables;\n\
|
||||||
show functions;\n\
|
show functions;\n\
|
||||||
|
show licences;\n\
|
||||||
show mnodes;\n\
|
show mnodes;\n\
|
||||||
show queries;\n\
|
show queries;\n\
|
||||||
show query <query_id> ;\n\
|
show query <query_id> ;\n\
|
||||||
|
@ -513,6 +539,7 @@ void showHelp() {
|
||||||
show table distributed <all_table>;\n\
|
show table distributed <all_table>;\n\
|
||||||
show tags from <tb_name>\n\
|
show tags from <tb_name>\n\
|
||||||
show tags from <db_name>\n\
|
show tags from <db_name>\n\
|
||||||
|
show table tags from <all_table>\n\
|
||||||
show topics;\n\
|
show topics;\n\
|
||||||
show transactions;\n\
|
show transactions;\n\
|
||||||
show users;\n\
|
show users;\n\
|
||||||
|
@ -522,6 +549,8 @@ void showHelp() {
|
||||||
show vgroups;\n\
|
show vgroups;\n\
|
||||||
show consumers;\n\
|
show consumers;\n\
|
||||||
show grants;\n\
|
show grants;\n\
|
||||||
|
show grants full;\n\
|
||||||
|
show grants logs;\n\
|
||||||
----- T ----- \n\
|
----- T ----- \n\
|
||||||
trim database <db_name>;\n\
|
trim database <db_name>;\n\
|
||||||
----- U ----- \n\
|
----- U ----- \n\
|
||||||
|
@ -534,8 +563,12 @@ void showHelp() {
|
||||||
balance vgroup ;\n\
|
balance vgroup ;\n\
|
||||||
balance vgroup leader on <vgroup_id> \n\
|
balance vgroup leader on <vgroup_id> \n\
|
||||||
compact database <db_name>; \n\
|
compact database <db_name>; \n\
|
||||||
|
crate view <view_name> as select ...\n\
|
||||||
redistribute vgroup <vgroup_id> dnode <dnode_id> ;\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
|
#endif
|
||||||
|
|
||||||
printf("\n\n");
|
printf("\n\n");
|
||||||
|
@ -699,6 +732,7 @@ bool shellAutoInit() {
|
||||||
GenerateVarType(WT_VAR_KEYSELECT, key_select, sizeof(key_select) / sizeof(char*));
|
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_SYSTABLE, key_systable, sizeof(key_systable) / sizeof(char*));
|
||||||
GenerateVarType(WT_VAR_LANGUAGE, udf_language, sizeof(udf_language) / 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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1800,6 +1834,13 @@ bool matchEnd(TAOS* con, SShellCmd* cmd) {
|
||||||
goto _return;
|
goto _return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// global keys
|
||||||
|
if (fillWithType(con, cmd, last, WT_VAR_GLOBALKEYS)) {
|
||||||
|
ret = true;
|
||||||
|
goto _return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
_return:
|
_return:
|
||||||
taosMemoryFree(ps);
|
taosMemoryFree(ps);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue