enh: show command optimize
This commit is contained in:
parent
c6699e19fb
commit
4f0c6d3aa4
|
@ -154,7 +154,7 @@
|
|||
#define TK_ACCOUNTS 136
|
||||
#define TK_APPS 137
|
||||
#define TK_CONNECTIONS 138
|
||||
#define TK_LICENCE 139
|
||||
#define TK_LICENCES 139
|
||||
#define TK_GRANTS 140
|
||||
#define TK_QUERIES 141
|
||||
#define TK_SCORES 142
|
||||
|
|
|
@ -172,27 +172,24 @@ typedef enum ENodeType {
|
|||
QUERY_NODE_SHOW_TABLES_STMT,
|
||||
QUERY_NODE_SHOW_TAGS_STMT,
|
||||
QUERY_NODE_SHOW_USERS_STMT,
|
||||
QUERY_NODE_SHOW_LICENCE_STMT,
|
||||
QUERY_NODE_SHOW_LICENCES_STMT,
|
||||
QUERY_NODE_SHOW_VGROUPS_STMT,
|
||||
QUERY_NODE_SHOW_TOPICS_STMT,
|
||||
QUERY_NODE_SHOW_CONSUMERS_STMT,
|
||||
QUERY_NODE_SHOW_SUBSCRIBES_STMT,
|
||||
QUERY_NODE_SHOW_SMAS_STMT,
|
||||
QUERY_NODE_SHOW_CONFIGS_STMT,
|
||||
QUERY_NODE_SHOW_CONNECTIONS_STMT,
|
||||
QUERY_NODE_SHOW_QUERIES_STMT,
|
||||
QUERY_NODE_SHOW_VNODES_STMT,
|
||||
QUERY_NODE_SHOW_APPS_STMT,
|
||||
QUERY_NODE_SHOW_SCORES_STMT,
|
||||
QUERY_NODE_SHOW_VARIABLES_STMT,
|
||||
QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT,
|
||||
QUERY_NODE_SHOW_DNODE_VARIABLES_STMT,
|
||||
QUERY_NODE_SHOW_TRANSACTIONS_STMT,
|
||||
QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT,
|
||||
QUERY_NODE_SHOW_CREATE_DATABASE_STMT,
|
||||
QUERY_NODE_SHOW_CREATE_TABLE_STMT,
|
||||
QUERY_NODE_SHOW_CREATE_STABLE_STMT,
|
||||
QUERY_NODE_SHOW_TRANSACTIONS_STMT,
|
||||
QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT,
|
||||
QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT,
|
||||
QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT,
|
||||
QUERY_NODE_SHOW_VNODES_STMT,
|
||||
QUERY_NODE_SHOW_SCORES_STMT,
|
||||
QUERY_NODE_KILL_CONNECTION_STMT,
|
||||
QUERY_NODE_KILL_QUERY_STMT,
|
||||
QUERY_NODE_KILL_TRANSACTION_STMT,
|
||||
|
|
|
@ -49,7 +49,7 @@ typedef struct SBuiltinFuncDefinition {
|
|||
} SBuiltinFuncDefinition;
|
||||
|
||||
extern const SBuiltinFuncDefinition funcMgtBuiltins[];
|
||||
extern const int funcMgtBuiltinsNum;
|
||||
extern const int32_t funcMgtBuiltinsNum;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -163,7 +163,7 @@ const char* nodesNodeName(ENodeType type) {
|
|||
return "ShowTagsStmt";
|
||||
case QUERY_NODE_SHOW_USERS_STMT:
|
||||
return "ShowUsersStmt";
|
||||
case QUERY_NODE_SHOW_LICENCE_STMT:
|
||||
case QUERY_NODE_SHOW_LICENCES_STMT:
|
||||
return "ShowGrantsStmt";
|
||||
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
||||
return "ShowVgroupsStmt";
|
||||
|
@ -171,10 +171,6 @@ const char* nodesNodeName(ENodeType type) {
|
|||
return "ShowTopicsStmt";
|
||||
case QUERY_NODE_SHOW_CONSUMERS_STMT:
|
||||
return "ShowConsumersStmt";
|
||||
case QUERY_NODE_SHOW_SUBSCRIBES_STMT:
|
||||
return "ShowSubscribesStmt";
|
||||
case QUERY_NODE_SHOW_SMAS_STMT:
|
||||
return "ShowSmasStmt";
|
||||
case QUERY_NODE_SHOW_QUERIES_STMT:
|
||||
return "ShowQueriesStmt";
|
||||
case QUERY_NODE_SHOW_VNODES_STMT:
|
||||
|
|
|
@ -201,12 +201,10 @@ SNode* nodesMakeNode(ENodeType type) {
|
|||
case QUERY_NODE_SHOW_STREAMS_STMT:
|
||||
case QUERY_NODE_SHOW_TABLES_STMT:
|
||||
case QUERY_NODE_SHOW_USERS_STMT:
|
||||
case QUERY_NODE_SHOW_LICENCE_STMT:
|
||||
case QUERY_NODE_SHOW_LICENCES_STMT:
|
||||
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
||||
case QUERY_NODE_SHOW_TOPICS_STMT:
|
||||
case QUERY_NODE_SHOW_CONSUMERS_STMT:
|
||||
case QUERY_NODE_SHOW_SUBSCRIBES_STMT:
|
||||
case QUERY_NODE_SHOW_SMAS_STMT:
|
||||
case QUERY_NODE_SHOW_CONNECTIONS_STMT:
|
||||
case QUERY_NODE_SHOW_QUERIES_STMT:
|
||||
case QUERY_NODE_SHOW_VNODES_STMT:
|
||||
|
@ -687,12 +685,10 @@ void nodesDestroyNode(SNode* pNode) {
|
|||
case QUERY_NODE_SHOW_STREAMS_STMT:
|
||||
case QUERY_NODE_SHOW_TABLES_STMT:
|
||||
case QUERY_NODE_SHOW_USERS_STMT:
|
||||
case QUERY_NODE_SHOW_LICENCE_STMT:
|
||||
case QUERY_NODE_SHOW_LICENCES_STMT:
|
||||
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
||||
case QUERY_NODE_SHOW_TOPICS_STMT:
|
||||
case QUERY_NODE_SHOW_CONSUMERS_STMT:
|
||||
case QUERY_NODE_SHOW_SUBSCRIBES_STMT:
|
||||
case QUERY_NODE_SHOW_SMAS_STMT:
|
||||
case QUERY_NODE_SHOW_CONNECTIONS_STMT:
|
||||
case QUERY_NODE_SHOW_QUERIES_STMT:
|
||||
case QUERY_NODE_SHOW_VNODES_STMT:
|
||||
|
|
|
@ -391,8 +391,8 @@ cmd ::= SHOW STREAMS.
|
|||
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); }
|
||||
cmd ::= SHOW CONNECTIONS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_CONNECTIONS_STMT); }
|
||||
cmd ::= SHOW LICENCE. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LICENCE_STMT); }
|
||||
cmd ::= SHOW GRANTS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LICENCE_STMT); }
|
||||
cmd ::= SHOW LICENCES. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LICENCES_STMT); }
|
||||
cmd ::= SHOW GRANTS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LICENCES_STMT); }
|
||||
cmd ::= SHOW CREATE DATABASE db_name(A). { pCxt->pRootNode = createShowCreateDatabaseStmt(pCxt, &A); }
|
||||
cmd ::= SHOW CREATE TABLE full_table_name(A). { pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_TABLE_STMT, A); }
|
||||
cmd ::= SHOW CREATE STABLE full_table_name(A). { pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_STABLE_STMT, A); }
|
||||
|
|
|
@ -570,7 +570,7 @@ static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
|
|||
return collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt);
|
||||
case QUERY_NODE_SHOW_USERS_STMT:
|
||||
return collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt);
|
||||
case QUERY_NODE_SHOW_LICENCE_STMT:
|
||||
case QUERY_NODE_SHOW_LICENCES_STMT:
|
||||
return collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt);
|
||||
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
||||
return collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt);
|
||||
|
|
|
@ -118,7 +118,7 @@ static SKeyword keywordTable[] = {
|
|||
{"KILL", TK_KILL},
|
||||
{"LAST", TK_LAST},
|
||||
{"LAST_ROW", TK_LAST_ROW},
|
||||
{"LICENCE", TK_LICENCE},
|
||||
{"LICENCES", TK_LICENCES},
|
||||
{"LIKE", TK_LIKE},
|
||||
{"LIMIT", TK_LIMIT},
|
||||
{"LINEAR", TK_LINEAR},
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
#define generateDealNodeErrMsg(pCxt, code, ...) \
|
||||
(pCxt->errCode = generateSyntaxErrMsg(&pCxt->msgBuf, code, ##__VA_ARGS__), DEAL_RES_ERROR)
|
||||
|
||||
#define SYSTABLE_SHOW_TYPE_OFFSET QUERY_NODE_SHOW_DNODES_STMT
|
||||
|
||||
typedef struct STranslateContext {
|
||||
SParseContext* pParseCxt;
|
||||
int32_t errCode;
|
||||
|
@ -51,6 +53,201 @@ typedef struct SFullDatabaseName {
|
|||
char fullDbName[TSDB_DB_FNAME_LEN];
|
||||
} SFullDatabaseName;
|
||||
|
||||
typedef struct SSysTableShowAdapter {
|
||||
ENodeType showType;
|
||||
const char* pDbName;
|
||||
const char* pTableName;
|
||||
int32_t numOfShowCols;
|
||||
const char* pShowCols[2];
|
||||
} SSysTableShowAdapter;
|
||||
|
||||
// clang-format off
|
||||
static const SSysTableShowAdapter sysTableShowAdapter[] = {
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_DNODES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_DNODES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"endpoint"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_MNODES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_MNODES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"endpoint"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_MODULES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_MODULES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"module"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_QNODES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_QNODES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"endpoint"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_SNODES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_SNODES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"endpoint"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_BNODES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_BNODES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"endpoint"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_CLUSTER_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_CLUSTER,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"name"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_DATABASES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_DATABASES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"name"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_FUNCTIONS_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_FUNCTIONS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"name"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_INDEXES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_INDEXES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"index_name"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_STABLES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_STABLES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"stable_name"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_STREAMS_STMT,
|
||||
.pDbName = TSDB_PERFORMANCE_SCHEMA_DB,
|
||||
.pTableName = TSDB_PERFS_TABLE_STREAMS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"stream_name"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_TABLES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_TABLES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"table_name"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_TAGS_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_TAGS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_USERS_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_USERS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"name"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_LICENCES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_LICENCES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_VGROUPS_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_VGROUPS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_TOPICS_STMT,
|
||||
.pDbName = TSDB_PERFORMANCE_SCHEMA_DB,
|
||||
.pTableName = TSDB_PERFS_TABLE_TOPICS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"topic_name"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_CONSUMERS_STMT,
|
||||
.pDbName = TSDB_PERFORMANCE_SCHEMA_DB,
|
||||
.pTableName = TSDB_PERFS_TABLE_CONSUMERS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_CONNECTIONS_STMT,
|
||||
.pDbName = TSDB_PERFORMANCE_SCHEMA_DB,
|
||||
.pTableName = TSDB_PERFS_TABLE_CONNECTIONS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_QUERIES_STMT,
|
||||
.pDbName = TSDB_PERFORMANCE_SCHEMA_DB,
|
||||
.pTableName = TSDB_PERFS_TABLE_QUERIES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_APPS_STMT,
|
||||
.pDbName = TSDB_PERFORMANCE_SCHEMA_DB,
|
||||
.pTableName = TSDB_PERFS_TABLE_APPS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_VARIABLES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_CONFIGS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_DNODE_VARIABLES_STMT,
|
||||
.pDbName = TSDB_INFORMATION_SCHEMA_DB,
|
||||
.pTableName = TSDB_INS_TABLE_DNODE_VARIABLES,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_TRANSACTIONS_STMT,
|
||||
.pDbName = TSDB_PERFORMANCE_SCHEMA_DB,
|
||||
.pTableName = TSDB_PERFS_TABLE_TRANS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
{
|
||||
.showType = QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT,
|
||||
.pDbName = TSDB_PERFORMANCE_SCHEMA_DB,
|
||||
.pTableName = TSDB_PERFS_TABLE_SUBSCRIPTIONS,
|
||||
.numOfShowCols = 1,
|
||||
.pShowCols = {"*"}
|
||||
},
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
static int32_t translateSubquery(STranslateContext* pCxt, SNode* pNode);
|
||||
static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode);
|
||||
static EDealRes translateValue(STranslateContext* pCxt, SValueNode* pVal);
|
||||
|
@ -5328,102 +5525,6 @@ int32_t extractResultSchema(const SNode* pRoot, int32_t* numOfCols, SSchema** pS
|
|||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
|
||||
static const char* getSysDbName(ENodeType type) {
|
||||
switch (type) {
|
||||
case QUERY_NODE_SHOW_DATABASES_STMT:
|
||||
case QUERY_NODE_SHOW_TABLES_STMT:
|
||||
case QUERY_NODE_SHOW_STABLES_STMT:
|
||||
case QUERY_NODE_SHOW_USERS_STMT:
|
||||
case QUERY_NODE_SHOW_DNODES_STMT:
|
||||
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
||||
case QUERY_NODE_SHOW_MNODES_STMT:
|
||||
case QUERY_NODE_SHOW_MODULES_STMT:
|
||||
case QUERY_NODE_SHOW_QNODES_STMT:
|
||||
case QUERY_NODE_SHOW_FUNCTIONS_STMT:
|
||||
case QUERY_NODE_SHOW_INDEXES_STMT:
|
||||
case QUERY_NODE_SHOW_BNODES_STMT:
|
||||
case QUERY_NODE_SHOW_SNODES_STMT:
|
||||
case QUERY_NODE_SHOW_LICENCE_STMT:
|
||||
case QUERY_NODE_SHOW_CLUSTER_STMT:
|
||||
case QUERY_NODE_SHOW_VARIABLES_STMT:
|
||||
case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
|
||||
case QUERY_NODE_SHOW_TAGS_STMT:
|
||||
return TSDB_INFORMATION_SCHEMA_DB;
|
||||
case QUERY_NODE_SHOW_CONNECTIONS_STMT:
|
||||
case QUERY_NODE_SHOW_QUERIES_STMT:
|
||||
case QUERY_NODE_SHOW_TOPICS_STMT:
|
||||
case QUERY_NODE_SHOW_STREAMS_STMT:
|
||||
case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
|
||||
case QUERY_NODE_SHOW_APPS_STMT:
|
||||
case QUERY_NODE_SHOW_CONSUMERS_STMT:
|
||||
case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
|
||||
return TSDB_PERFORMANCE_SCHEMA_DB;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static const char* getSysTableName(ENodeType type) {
|
||||
switch (type) {
|
||||
case QUERY_NODE_SHOW_DATABASES_STMT:
|
||||
return TSDB_INS_TABLE_DATABASES;
|
||||
case QUERY_NODE_SHOW_TABLES_STMT:
|
||||
return TSDB_INS_TABLE_TABLES;
|
||||
case QUERY_NODE_SHOW_TAGS_STMT:
|
||||
return TSDB_INS_TABLE_TAGS;
|
||||
case QUERY_NODE_SHOW_STABLES_STMT:
|
||||
return TSDB_INS_TABLE_STABLES;
|
||||
case QUERY_NODE_SHOW_USERS_STMT:
|
||||
return TSDB_INS_TABLE_USERS;
|
||||
case QUERY_NODE_SHOW_DNODES_STMT:
|
||||
return TSDB_INS_TABLE_DNODES;
|
||||
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
||||
return TSDB_INS_TABLE_VGROUPS;
|
||||
case QUERY_NODE_SHOW_MNODES_STMT:
|
||||
return TSDB_INS_TABLE_MNODES;
|
||||
case QUERY_NODE_SHOW_MODULES_STMT:
|
||||
return TSDB_INS_TABLE_MODULES;
|
||||
case QUERY_NODE_SHOW_QNODES_STMT:
|
||||
return TSDB_INS_TABLE_QNODES;
|
||||
case QUERY_NODE_SHOW_FUNCTIONS_STMT:
|
||||
return TSDB_INS_TABLE_FUNCTIONS;
|
||||
case QUERY_NODE_SHOW_INDEXES_STMT:
|
||||
return TSDB_INS_TABLE_INDEXES;
|
||||
case QUERY_NODE_SHOW_STREAMS_STMT:
|
||||
return TSDB_PERFS_TABLE_STREAMS;
|
||||
case QUERY_NODE_SHOW_BNODES_STMT:
|
||||
return TSDB_INS_TABLE_BNODES;
|
||||
case QUERY_NODE_SHOW_SNODES_STMT:
|
||||
return TSDB_INS_TABLE_SNODES;
|
||||
case QUERY_NODE_SHOW_LICENCE_STMT:
|
||||
return TSDB_INS_TABLE_LICENCES;
|
||||
case QUERY_NODE_SHOW_CLUSTER_STMT:
|
||||
return TSDB_INS_TABLE_CLUSTER;
|
||||
case QUERY_NODE_SHOW_CONNECTIONS_STMT:
|
||||
return TSDB_PERFS_TABLE_CONNECTIONS;
|
||||
case QUERY_NODE_SHOW_QUERIES_STMT:
|
||||
return TSDB_PERFS_TABLE_QUERIES;
|
||||
case QUERY_NODE_SHOW_TOPICS_STMT:
|
||||
return TSDB_PERFS_TABLE_TOPICS;
|
||||
case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
|
||||
return TSDB_PERFS_TABLE_TRANS;
|
||||
case QUERY_NODE_SHOW_VARIABLES_STMT:
|
||||
return TSDB_INS_TABLE_CONFIGS;
|
||||
case QUERY_NODE_SHOW_APPS_STMT:
|
||||
return TSDB_PERFS_TABLE_APPS;
|
||||
case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
|
||||
return TSDB_INS_TABLE_DNODE_VARIABLES;
|
||||
case QUERY_NODE_SHOW_CONSUMERS_STMT:
|
||||
return TSDB_PERFS_TABLE_CONSUMERS;
|
||||
case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
|
||||
return TSDB_PERFS_TABLE_SUBSCRIPTIONS;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static SNode* createStarCol() {
|
||||
SColumnNode* pCol = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN);
|
||||
if (NULL == pCol) {
|
||||
|
@ -5433,7 +5534,33 @@ static SNode* createStarCol() {
|
|||
return (SNode*)pCol;
|
||||
}
|
||||
|
||||
static int32_t createSimpleSelectStmt(const char* pDb, const char* pTable, SSelectStmt** pStmt) {
|
||||
static SNode* createProjectCol(const char* pProjCol) {
|
||||
SColumnNode* pCol = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN);
|
||||
if (NULL == pCol) {
|
||||
return NULL;
|
||||
}
|
||||
strcpy(pCol->colName, pProjCol);
|
||||
return (SNode*)pCol;
|
||||
}
|
||||
|
||||
static SNodeList* createProjectCols(int32_t ncols, const char* const pCols[]) {
|
||||
SNodeList* pProjections = NULL;
|
||||
if (ncols <= 0) {
|
||||
nodesListMakeStrictAppend(&pProjections, createStarCol());
|
||||
return pProjections;
|
||||
}
|
||||
for (int32_t i = 0; i < ncols; ++i) {
|
||||
int32_t code = nodesListMakeStrictAppend(&pProjections, createProjectCol(pCols[i]));
|
||||
if (TSDB_CODE_SUCCESS != code) {
|
||||
nodesDestroyList(pProjections);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return pProjections;
|
||||
}
|
||||
|
||||
static int32_t createSimpleSelectStmt(const char* pDb, const char* pTable, int32_t numOfProjs,
|
||||
const char* const pProjCol[], SSelectStmt** pStmt) {
|
||||
SSelectStmt* pSelect = (SSelectStmt*)nodesMakeNode(QUERY_NODE_SELECT_STMT);
|
||||
if (NULL == pSelect) {
|
||||
return TSDB_CODE_OUT_OF_MEMORY;
|
||||
|
@ -5450,7 +5577,8 @@ static int32_t createSimpleSelectStmt(const char* pDb, const char* pTable, SSele
|
|||
strcpy(pRealTable->table.tableAlias, pTable);
|
||||
pSelect->pFromTable = (SNode*)pRealTable;
|
||||
|
||||
if (TSDB_CODE_SUCCESS != nodesListMakeStrictAppend(&pSelect->pProjectionList, createStarCol())) {
|
||||
pSelect->pProjectionList = createProjectCols(numOfProjs, pProjCol);
|
||||
if (NULL == pSelect->pProjectionList) {
|
||||
nodesDestroyNode((SNode*)pSelect);
|
||||
return TSDB_CODE_OUT_OF_MEMORY;
|
||||
}
|
||||
|
@ -5461,11 +5589,12 @@ static int32_t createSimpleSelectStmt(const char* pDb, const char* pTable, SSele
|
|||
}
|
||||
|
||||
static int32_t createSelectStmtForShow(ENodeType showType, SSelectStmt** pStmt) {
|
||||
return createSimpleSelectStmt(getSysDbName(showType), getSysTableName(showType), pStmt);
|
||||
const SSysTableShowAdapter* pShow = &sysTableShowAdapter[showType - SYSTABLE_SHOW_TYPE_OFFSET];
|
||||
return createSimpleSelectStmt(pShow->pDbName, pShow->pTableName, pShow->numOfShowCols, pShow->pShowCols, pStmt);
|
||||
}
|
||||
|
||||
static int32_t createSelectStmtForShowTableDist(SShowTableDistributedStmt* pStmt, SSelectStmt** pOutput) {
|
||||
return createSimpleSelectStmt(pStmt->dbName, pStmt->tableName, pOutput);
|
||||
return createSimpleSelectStmt(pStmt->dbName, pStmt->tableName, 0, NULL, pOutput);
|
||||
}
|
||||
|
||||
static int32_t createOperatorNode(EOperatorType opType, const char* pColName, SNode* pRight, SNode** pOp) {
|
||||
|
@ -6653,7 +6782,7 @@ static int32_t rewriteFlushDatabase(STranslateContext* pCxt, SQuery* pQuery) {
|
|||
static int32_t rewriteQuery(STranslateContext* pCxt, SQuery* pQuery) {
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
switch (nodeType(pQuery->pRoot)) {
|
||||
case QUERY_NODE_SHOW_LICENCE_STMT:
|
||||
case QUERY_NODE_SHOW_LICENCES_STMT:
|
||||
case QUERY_NODE_SHOW_DATABASES_STMT:
|
||||
case QUERY_NODE_SHOW_TABLES_STMT:
|
||||
case QUERY_NODE_SHOW_STABLES_STMT:
|
||||
|
|
|
@ -1044,7 +1044,7 @@ static const YYCODETYPE yyFallback[] = {
|
|||
0, /* ACCOUNTS => nothing */
|
||||
0, /* APPS => nothing */
|
||||
0, /* CONNECTIONS => nothing */
|
||||
0, /* LICENCE => nothing */
|
||||
0, /* LICENCES => nothing */
|
||||
0, /* GRANTS => nothing */
|
||||
0, /* QUERIES => nothing */
|
||||
0, /* SCORES => nothing */
|
||||
|
@ -1388,7 +1388,7 @@ static const char *const yyTokenName[] = {
|
|||
/* 136 */ "ACCOUNTS",
|
||||
/* 137 */ "APPS",
|
||||
/* 138 */ "CONNECTIONS",
|
||||
/* 139 */ "LICENCE",
|
||||
/* 139 */ "LICENCES",
|
||||
/* 140 */ "GRANTS",
|
||||
/* 141 */ "QUERIES",
|
||||
/* 142 */ "SCORES",
|
||||
|
@ -1843,7 +1843,7 @@ static const char *const yyRuleName[] = {
|
|||
/* 205 */ "cmd ::= SHOW ACCOUNTS",
|
||||
/* 206 */ "cmd ::= SHOW APPS",
|
||||
/* 207 */ "cmd ::= SHOW CONNECTIONS",
|
||||
/* 208 */ "cmd ::= SHOW LICENCE",
|
||||
/* 208 */ "cmd ::= SHOW LICENCES",
|
||||
/* 209 */ "cmd ::= SHOW GRANTS",
|
||||
/* 210 */ "cmd ::= SHOW CREATE DATABASE db_name",
|
||||
/* 211 */ "cmd ::= SHOW CREATE TABLE full_table_name",
|
||||
|
@ -2932,7 +2932,7 @@ static const struct {
|
|||
{ 257, -2 }, /* (205) cmd ::= SHOW ACCOUNTS */
|
||||
{ 257, -2 }, /* (206) cmd ::= SHOW APPS */
|
||||
{ 257, -2 }, /* (207) cmd ::= SHOW CONNECTIONS */
|
||||
{ 257, -2 }, /* (208) cmd ::= SHOW LICENCE */
|
||||
{ 257, -2 }, /* (208) cmd ::= SHOW LICENCES */
|
||||
{ 257, -2 }, /* (209) cmd ::= SHOW GRANTS */
|
||||
{ 257, -4 }, /* (210) cmd ::= SHOW CREATE DATABASE db_name */
|
||||
{ 257, -4 }, /* (211) cmd ::= SHOW CREATE TABLE full_table_name */
|
||||
|
@ -3984,9 +3984,9 @@ static YYACTIONTYPE yy_reduce(
|
|||
case 207: /* cmd ::= SHOW CONNECTIONS */
|
||||
{ pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_CONNECTIONS_STMT); }
|
||||
break;
|
||||
case 208: /* cmd ::= SHOW LICENCE */
|
||||
case 208: /* cmd ::= SHOW LICENCES */
|
||||
case 209: /* cmd ::= SHOW GRANTS */ yytestcase(yyruleno==209);
|
||||
{ pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LICENCE_STMT); }
|
||||
{ pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LICENCES_STMT); }
|
||||
break;
|
||||
case 210: /* cmd ::= SHOW CREATE DATABASE db_name */
|
||||
{ pCxt->pRootNode = createShowCreateDatabaseStmt(pCxt, &yymsp[0].minor.yy361); }
|
||||
|
|
|
@ -1615,6 +1615,9 @@ static int32_t partTagsOptimize(SOptimizeContext* pCxt, SLogicSubplan* pLogicSub
|
|||
if (QUERY_NODE_LOGIC_PLAN_PARTITION == nodeType(pNode)) {
|
||||
TSWAP(((SPartitionLogicNode*)pNode)->pPartitionKeys, pScan->pGroupTags);
|
||||
int32_t code = replaceLogicNode(pLogicSubplan, pNode, (SLogicNode*)pScan);
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = adjustLogicNodeDataRequirement((SLogicNode*)pScan, pNode->resultDataOrder);
|
||||
}
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
NODES_CLEAR_LIST(pNode->pChildren);
|
||||
nodesDestroyNode((SNode*)pNode);
|
||||
|
|
Loading…
Reference in New Issue