Merge pull request #22048 from taosdata/feat/TD-25003
feat: add new syntax for show tags/index/table tags
This commit is contained in:
commit
424c3d39fb
|
@ -51,6 +51,11 @@ DESCRIBE [db_name.]stb_name;
|
|||
|
||||
### View tag information for all child tables in the supertable
|
||||
|
||||
```
|
||||
SHOW TABLE TAGS FROM table_name [FROM db_name];
|
||||
SHOW TABLE TAGS FROM [db_name.]table_name;
|
||||
```
|
||||
|
||||
```
|
||||
taos> SHOW TABLE TAGS FROM st1;
|
||||
tbname | id | loc |
|
||||
|
|
|
@ -101,6 +101,7 @@ Note: TDengine Enterprise Edition only.
|
|||
|
||||
```sql
|
||||
SHOW INDEXES FROM tbl_name [FROM db_name];
|
||||
SHOW INDEXES FROM [db_name.]tbl_name;
|
||||
```
|
||||
|
||||
Shows indices that have been created.
|
||||
|
@ -326,6 +327,7 @@ Note that only the information about the data blocks in the data file will be di
|
|||
|
||||
```sql
|
||||
SHOW TAGS FROM child_table_name [FROM db_name];
|
||||
SHOW TAGS FROM [db_name.]child_table_name;
|
||||
```
|
||||
|
||||
Shows all tag information in a subtable.
|
||||
|
|
|
@ -43,6 +43,7 @@ DROP INDEX index_name;
|
|||
````sql
|
||||
```sql
|
||||
SHOW INDEXES FROM tbl_name [FROM db_name];
|
||||
SHOW INDEXES FROM [db_name.]tbl_name ;
|
||||
````
|
||||
|
||||
Shows indices that have been created for the specified database or table.
|
||||
|
|
|
@ -51,6 +51,11 @@ DESCRIBE [db_name.]stb_name;
|
|||
|
||||
### 获取超级表中所有子表的标签信息
|
||||
|
||||
```
|
||||
SHOW TABLE TAGS FROM table_name [FROM db_name];
|
||||
SHOW TABLE TAGS FROM [db_name.]table_name;
|
||||
```
|
||||
|
||||
```
|
||||
taos> SHOW TABLE TAGS FROM st1;
|
||||
tbname | id | loc |
|
||||
|
|
|
@ -101,6 +101,7 @@ SHOW GRANTS;
|
|||
|
||||
```sql
|
||||
SHOW INDEXES FROM tbl_name [FROM db_name];
|
||||
SHOW INDEXES FROM [db_name.]tbl_name;
|
||||
```
|
||||
|
||||
显示已创建的索引。
|
||||
|
@ -269,6 +270,7 @@ Query OK, 24 row(s) in set (0.002444s)
|
|||
|
||||
```sql
|
||||
SHOW TAGS FROM child_table_name [FROM db_name];
|
||||
SHOW TAGS FROM [db_name.]child_table_name;
|
||||
```
|
||||
|
||||
显示子表的标签信息。
|
||||
|
|
|
@ -43,6 +43,7 @@ DROP INDEX index_name;
|
|||
````sql
|
||||
```sql
|
||||
SHOW INDEXES FROM tbl_name [FROM db_name];
|
||||
SHOW INDEXES FROM [db_name.]tbl_name;
|
||||
````
|
||||
|
||||
显示在所指定的数据库或表上已创建的索引。
|
||||
|
|
|
@ -355,8 +355,6 @@
|
|||
#define TK_WAL 337
|
||||
|
||||
|
||||
|
||||
|
||||
#define TK_NK_SPACE 600
|
||||
#define TK_NK_COMMENT 601
|
||||
#define TK_NK_ILLEGAL 602
|
||||
|
|
|
@ -447,6 +447,7 @@ cmd ::= SHOW MNODES.
|
|||
cmd ::= SHOW QNODES. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_QNODES_STMT); }
|
||||
cmd ::= SHOW FUNCTIONS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_FUNCTIONS_STMT); }
|
||||
cmd ::= SHOW INDEXES FROM table_name_cond(A) from_db_opt(B). { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_INDEXES_STMT, B, A, OP_TYPE_EQUAL); }
|
||||
cmd ::= SHOW INDEXES FROM db_name(B) NK_DOT table_name(A). { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_INDEXES_STMT, createIdentifierValueNode(pCxt, &B), createIdentifierValueNode(pCxt, &A), OP_TYPE_EQUAL); }
|
||||
cmd ::= SHOW STREAMS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_STREAMS_STMT); }
|
||||
cmd ::= SHOW ACCOUNTS. { pCxt->errCode = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_EXPRIE_STATEMENT); }
|
||||
cmd ::= SHOW APPS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_APPS_STMT); }
|
||||
|
@ -471,7 +472,9 @@ cmd ::= SHOW TABLE DISTRIBUTED full_table_name(A).
|
|||
cmd ::= SHOW CONSUMERS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_CONSUMERS_STMT); }
|
||||
cmd ::= SHOW SUBSCRIPTIONS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT); }
|
||||
cmd ::= SHOW TAGS FROM table_name_cond(A) from_db_opt(B). { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TAGS_STMT, B, A, OP_TYPE_EQUAL); }
|
||||
cmd ::= SHOW TAGS FROM db_name(B) NK_DOT table_name(A). { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TAGS_STMT, createIdentifierValueNode(pCxt, &B), createIdentifierValueNode(pCxt, &A), OP_TYPE_EQUAL); }
|
||||
cmd ::= SHOW TABLE TAGS tag_list_opt(C) FROM table_name_cond(A) from_db_opt(B). { pCxt->pRootNode = createShowTableTagsStmt(pCxt, A, B, C); }
|
||||
cmd ::= SHOW TABLE TAGS tag_list_opt(C) FROM db_name(B) NK_DOT table_name(A). { pCxt->pRootNode = createShowTableTagsStmt(pCxt, createIdentifierValueNode(pCxt, &A), createIdentifierValueNode(pCxt, &B), C); }
|
||||
cmd ::= SHOW VNODES NK_INTEGER(A). { pCxt->pRootNode = createShowVnodesStmt(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &A), NULL); }
|
||||
cmd ::= SHOW VNODES NK_STRING(A). { pCxt->pRootNode = createShowVnodesStmt(pCxt, NULL, createValueNode(pCxt, TSDB_DATA_TYPE_VARCHAR, &A)); }
|
||||
// show alive
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -207,6 +207,7 @@
|
|||
,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/precisionUS.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/precisionNS.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/show.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/show_tag_index.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/information_schema.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py -R
|
||||
|
|
|
@ -0,0 +1,184 @@
|
|||
###################################################################
|
||||
# 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 re
|
||||
from util.log import *
|
||||
from util.cases import *
|
||||
from util.sql import *
|
||||
from util.common import *
|
||||
from util.sqlset import *
|
||||
|
||||
class TDTestCase:
|
||||
def init(self, conn, logSql, replicaVar=1):
|
||||
self.replicaVar = int(replicaVar)
|
||||
tdLog.debug("start to execute %s" % __file__)
|
||||
tdSql.init(conn.cursor())
|
||||
|
||||
def check_tags(self):
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkCols(6)
|
||||
tdSql.checkData(0, 0, 'ctb1')
|
||||
tdSql.checkData(0, 1, 'db')
|
||||
tdSql.checkData(0, 2, 'stb')
|
||||
tdSql.checkData(0, 3, 't0')
|
||||
tdSql.checkData(0, 4, 'INT')
|
||||
tdSql.checkData(0, 5, 1)
|
||||
tdSql.checkData(1, 0, 'ctb1')
|
||||
tdSql.checkData(1, 1, 'db')
|
||||
tdSql.checkData(1, 2, 'stb')
|
||||
tdSql.checkData(1, 3, 't1')
|
||||
tdSql.checkData(1, 4, 'INT')
|
||||
tdSql.checkData(1, 5, 1)
|
||||
|
||||
def check_table_tags(self, is_super_table):
|
||||
|
||||
if is_super_table == False:
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkCols(3)
|
||||
tdSql.checkData(0, 0, 'ctb1')
|
||||
tdSql.checkData(0, 1, 1)
|
||||
tdSql.checkData(0, 2, 1)
|
||||
else:
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkCols(3)
|
||||
tdSql.checkData(0, 0, 'ctb1')
|
||||
tdSql.checkData(1, 0, 'ctb2')
|
||||
tdSql.checkData(0, 1, 1)
|
||||
tdSql.checkData(1, 1, 2)
|
||||
tdSql.checkData(0, 2, 1)
|
||||
tdSql.checkData(1, 2, 2)
|
||||
|
||||
def check_indexes(self):
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkCols(7)
|
||||
tdSql.checkData(0, 0, 'idx1')
|
||||
tdSql.checkData(0, 1, 'db')
|
||||
tdSql.checkData(0, 2, 'stb')
|
||||
tdSql.checkData(0, 3, -1)
|
||||
tdSql.checkData(0, 5, 't1')
|
||||
tdSql.checkData(0, 6, 'tag_index')
|
||||
|
||||
def run(self):
|
||||
tdSql.execute(f'create database db')
|
||||
tdSql.execute(f'use db')
|
||||
tdSql.execute(f'create table stb (ts timestamp, c0 int) tags (t0 int, t1 int)')
|
||||
tdSql.execute(f'create table ctb1 using stb tags (1, 1)')
|
||||
tdSql.execute(f'create table ctb2 using stb tags (2, 2)')
|
||||
tdSql.execute(f'insert into ctb1 values (now, 1)')
|
||||
tdSql.execute(f'insert into ctb2 values (now, 2)')
|
||||
|
||||
# show tags
|
||||
tdSql.query(f'show tags from stb')
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query(f'show tags from stb')
|
||||
tdSql.checkRows(0);
|
||||
tdSql.query(f'show tags from `stb`')
|
||||
tdSql.checkRows(0);
|
||||
tdSql.query(f'show tags from stb from db')
|
||||
tdSql.checkRows(0);
|
||||
tdSql.query(f'show tags from `stb` from `db`')
|
||||
tdSql.checkRows(0);
|
||||
tdSql.query(f'show tags from db.stb')
|
||||
tdSql.checkRows(0);
|
||||
tdSql.query(f'show tags from `db`.`stb`')
|
||||
tdSql.checkRows(0);
|
||||
tdSql.query(f'show tags from ctb1')
|
||||
self.check_tags();
|
||||
tdSql.query(f'show tags from `ctb1`')
|
||||
self.check_tags();
|
||||
tdSql.query(f'show tags from ctb1 from db')
|
||||
self.check_tags();
|
||||
tdSql.query(f'show tags from `ctb1` from `db`')
|
||||
self.check_tags();
|
||||
tdSql.query(f'show tags from db.ctb1')
|
||||
self.check_tags();
|
||||
tdSql.query(f'show tags from `db`.`ctb1`')
|
||||
self.check_tags();
|
||||
|
||||
tdSql.error(f'show tags from db.stb from db')
|
||||
tdSql.error(f'show tags from `db`.`stb` from db')
|
||||
tdSql.error(f'show tags from db.ctb1 from db')
|
||||
tdSql.error(f'show tags from `db`.`ctb1` from db')
|
||||
|
||||
# show table tags
|
||||
tdSql.query(f'show table tags from stb')
|
||||
self.check_table_tags(True);
|
||||
tdSql.query(f'show table tags from `stb`')
|
||||
self.check_table_tags(True);
|
||||
tdSql.query(f'show table tags from stb from db')
|
||||
self.check_table_tags(True);
|
||||
tdSql.query(f'show table tags from `stb` from `db`')
|
||||
self.check_table_tags(True);
|
||||
tdSql.query(f'show table tags from db.stb')
|
||||
self.check_table_tags(True);
|
||||
tdSql.query(f'show table tags from `db`.`stb`')
|
||||
self.check_table_tags(True);
|
||||
|
||||
tdSql.query(f'show table tags from ctb1')
|
||||
self.check_table_tags(False);
|
||||
tdSql.query(f'show table tags from `ctb1`')
|
||||
self.check_table_tags(False);
|
||||
tdSql.query(f'show table tags from ctb1 from db')
|
||||
self.check_table_tags(False);
|
||||
tdSql.query(f'show table tags from `ctb1` from `db`')
|
||||
self.check_table_tags(False);
|
||||
tdSql.query(f'show table tags from db.ctb1')
|
||||
self.check_table_tags(False);
|
||||
tdSql.query(f'show table tags from `db`.`ctb1`')
|
||||
self.check_table_tags(False);
|
||||
|
||||
tdSql.error(f'show table tags from db.stb from db')
|
||||
tdSql.error(f'show table tags from `db`.`stb` from db')
|
||||
tdSql.error(f'show table tags from db.ctb1 from db')
|
||||
tdSql.error(f'show table tags from `db`.`ctb1` from db')
|
||||
|
||||
# show indexes
|
||||
tdSql.execute(f'create index idx1 on stb (t1)')
|
||||
|
||||
tdSql.query(f'show indexes from stb')
|
||||
self.check_indexes();
|
||||
tdSql.query(f'show indexes from `stb`')
|
||||
self.check_indexes();
|
||||
tdSql.query(f'show indexes from stb from db')
|
||||
self.check_indexes();
|
||||
tdSql.query(f'show indexes from `stb` from `db`')
|
||||
self.check_indexes();
|
||||
tdSql.query(f'show indexes from db.stb')
|
||||
self.check_indexes();
|
||||
tdSql.query(f'show indexes from `db`.`stb`')
|
||||
self.check_indexes();
|
||||
|
||||
tdSql.query(f'show indexes from ctb1')
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query(f'show indexes from `ctb1`')
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query(f'show indexes from ctb1 from db')
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query(f'show indexes from `ctb1` from `db`')
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query(f'show indexes from db.ctb1')
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query(f'show indexes from `db`.`ctb1`')
|
||||
tdSql.checkRows(0)
|
||||
|
||||
tdSql.error(f'show indexes from db.stb from db')
|
||||
tdSql.error(f'show indexes from `db`.`stb` from db')
|
||||
tdSql.error(f'show indexes from db.ctb1 from db')
|
||||
tdSql.error(f'show indexes from `db`.`ctb1` from db')
|
||||
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
tdLog.success("%s successfully executed" % __file__)
|
||||
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
Loading…
Reference in New Issue