enhance: show normal/child tables and show user/system databases

This commit is contained in:
slzhou 2023-09-19 16:14:17 +08:00
parent a072fb6a2c
commit f4dbd5d9c9
7 changed files with 4833 additions and 4639 deletions

View File

@ -186,177 +186,179 @@
#define TK_SUBSCRIPTIONS 167 #define TK_SUBSCRIPTIONS 167
#define TK_VNODES 168 #define TK_VNODES 168
#define TK_ALIVE 169 #define TK_ALIVE 169
#define TK_LIKE 170 #define TK_NORMAL 170
#define TK_TBNAME 171 #define TK_CHILD 171
#define TK_QTAGS 172 #define TK_LIKE 172
#define TK_AS 173 #define TK_TBNAME 173
#define TK_INDEX 174 #define TK_QTAGS 174
#define TK_FUNCTION 175 #define TK_AS 175
#define TK_INTERVAL 176 #define TK_SYSTEM 176
#define TK_COUNT 177 #define TK_INDEX 177
#define TK_LAST_ROW 178 #define TK_FUNCTION 178
#define TK_META 179 #define TK_INTERVAL 179
#define TK_ONLY 180 #define TK_COUNT 180
#define TK_TOPIC 181 #define TK_LAST_ROW 181
#define TK_CONSUMER 182 #define TK_META 182
#define TK_GROUP 183 #define TK_ONLY 183
#define TK_DESC 184 #define TK_TOPIC 184
#define TK_DESCRIBE 185 #define TK_CONSUMER 185
#define TK_RESET 186 #define TK_GROUP 186
#define TK_QUERY 187 #define TK_DESC 187
#define TK_CACHE 188 #define TK_DESCRIBE 188
#define TK_EXPLAIN 189 #define TK_RESET 189
#define TK_ANALYZE 190 #define TK_QUERY 190
#define TK_VERBOSE 191 #define TK_CACHE 191
#define TK_NK_BOOL 192 #define TK_EXPLAIN 192
#define TK_RATIO 193 #define TK_ANALYZE 193
#define TK_NK_FLOAT 194 #define TK_VERBOSE 194
#define TK_OUTPUTTYPE 195 #define TK_NK_BOOL 195
#define TK_AGGREGATE 196 #define TK_RATIO 196
#define TK_BUFSIZE 197 #define TK_NK_FLOAT 197
#define TK_LANGUAGE 198 #define TK_OUTPUTTYPE 198
#define TK_REPLACE 199 #define TK_AGGREGATE 199
#define TK_STREAM 200 #define TK_BUFSIZE 200
#define TK_INTO 201 #define TK_LANGUAGE 201
#define TK_PAUSE 202 #define TK_REPLACE 202
#define TK_RESUME 203 #define TK_STREAM 203
#define TK_TRIGGER 204 #define TK_INTO 204
#define TK_AT_ONCE 205 #define TK_PAUSE 205
#define TK_WINDOW_CLOSE 206 #define TK_RESUME 206
#define TK_IGNORE 207 #define TK_TRIGGER 207
#define TK_EXPIRED 208 #define TK_AT_ONCE 208
#define TK_FILL_HISTORY 209 #define TK_WINDOW_CLOSE 209
#define TK_UPDATE 210 #define TK_IGNORE 210
#define TK_SUBTABLE 211 #define TK_EXPIRED 211
#define TK_UNTREATED 212 #define TK_FILL_HISTORY 212
#define TK_KILL 213 #define TK_UPDATE 213
#define TK_CONNECTION 214 #define TK_SUBTABLE 214
#define TK_TRANSACTION 215 #define TK_UNTREATED 215
#define TK_BALANCE 216 #define TK_KILL 216
#define TK_VGROUP 217 #define TK_CONNECTION 217
#define TK_LEADER 218 #define TK_TRANSACTION 218
#define TK_MERGE 219 #define TK_BALANCE 219
#define TK_REDISTRIBUTE 220 #define TK_VGROUP 220
#define TK_SPLIT 221 #define TK_LEADER 221
#define TK_DELETE 222 #define TK_MERGE 222
#define TK_INSERT 223 #define TK_REDISTRIBUTE 223
#define TK_NULL 224 #define TK_SPLIT 224
#define TK_NK_QUESTION 225 #define TK_DELETE 225
#define TK_NK_ARROW 226 #define TK_INSERT 226
#define TK_ROWTS 227 #define TK_NULL 227
#define TK_QSTART 228 #define TK_NK_QUESTION 228
#define TK_QEND 229 #define TK_NK_ARROW 229
#define TK_QDURATION 230 #define TK_ROWTS 230
#define TK_WSTART 231 #define TK_QSTART 231
#define TK_WEND 232 #define TK_QEND 232
#define TK_WDURATION 233 #define TK_QDURATION 233
#define TK_IROWTS 234 #define TK_WSTART 234
#define TK_ISFILLED 235 #define TK_WEND 235
#define TK_CAST 236 #define TK_WDURATION 236
#define TK_NOW 237 #define TK_IROWTS 237
#define TK_TODAY 238 #define TK_ISFILLED 238
#define TK_TIMEZONE 239 #define TK_CAST 239
#define TK_CLIENT_VERSION 240 #define TK_NOW 240
#define TK_SERVER_VERSION 241 #define TK_TODAY 241
#define TK_SERVER_STATUS 242 #define TK_TIMEZONE 242
#define TK_CURRENT_USER 243 #define TK_CLIENT_VERSION 243
#define TK_CASE 244 #define TK_SERVER_VERSION 244
#define TK_WHEN 245 #define TK_SERVER_STATUS 245
#define TK_THEN 246 #define TK_CURRENT_USER 246
#define TK_ELSE 247 #define TK_CASE 247
#define TK_BETWEEN 248 #define TK_WHEN 248
#define TK_IS 249 #define TK_THEN 249
#define TK_NK_LT 250 #define TK_ELSE 250
#define TK_NK_GT 251 #define TK_BETWEEN 251
#define TK_NK_LE 252 #define TK_IS 252
#define TK_NK_GE 253 #define TK_NK_LT 253
#define TK_NK_NE 254 #define TK_NK_GT 254
#define TK_MATCH 255 #define TK_NK_LE 255
#define TK_NMATCH 256 #define TK_NK_GE 256
#define TK_CONTAINS 257 #define TK_NK_NE 257
#define TK_IN 258 #define TK_MATCH 258
#define TK_JOIN 259 #define TK_NMATCH 259
#define TK_INNER 260 #define TK_CONTAINS 260
#define TK_SELECT 261 #define TK_IN 261
#define TK_NK_HINT 262 #define TK_JOIN 262
#define TK_DISTINCT 263 #define TK_INNER 263
#define TK_WHERE 264 #define TK_SELECT 264
#define TK_PARTITION 265 #define TK_NK_HINT 265
#define TK_BY 266 #define TK_DISTINCT 266
#define TK_SESSION 267 #define TK_WHERE 267
#define TK_STATE_WINDOW 268 #define TK_PARTITION 268
#define TK_EVENT_WINDOW 269 #define TK_BY 269
#define TK_SLIDING 270 #define TK_SESSION 270
#define TK_FILL 271 #define TK_STATE_WINDOW 271
#define TK_VALUE 272 #define TK_EVENT_WINDOW 272
#define TK_VALUE_F 273 #define TK_SLIDING 273
#define TK_NONE 274 #define TK_FILL 274
#define TK_PREV 275 #define TK_VALUE 275
#define TK_NULL_F 276 #define TK_VALUE_F 276
#define TK_LINEAR 277 #define TK_NONE 277
#define TK_NEXT 278 #define TK_PREV 278
#define TK_HAVING 279 #define TK_NULL_F 279
#define TK_RANGE 280 #define TK_LINEAR 280
#define TK_EVERY 281 #define TK_NEXT 281
#define TK_ORDER 282 #define TK_HAVING 282
#define TK_SLIMIT 283 #define TK_RANGE 283
#define TK_SOFFSET 284 #define TK_EVERY 284
#define TK_LIMIT 285 #define TK_ORDER 285
#define TK_OFFSET 286 #define TK_SLIMIT 286
#define TK_ASC 287 #define TK_SOFFSET 287
#define TK_NULLS 288 #define TK_LIMIT 288
#define TK_ABORT 289 #define TK_OFFSET 289
#define TK_AFTER 290 #define TK_ASC 290
#define TK_ATTACH 291 #define TK_NULLS 291
#define TK_BEFORE 292 #define TK_ABORT 292
#define TK_BEGIN 293 #define TK_AFTER 293
#define TK_BITAND 294 #define TK_ATTACH 294
#define TK_BITNOT 295 #define TK_BEFORE 295
#define TK_BITOR 296 #define TK_BEGIN 296
#define TK_BLOCKS 297 #define TK_BITAND 297
#define TK_CHANGE 298 #define TK_BITNOT 298
#define TK_COMMA 299 #define TK_BITOR 299
#define TK_CONCAT 300 #define TK_BLOCKS 300
#define TK_CONFLICT 301 #define TK_CHANGE 301
#define TK_COPY 302 #define TK_COMMA 302
#define TK_DEFERRED 303 #define TK_CONCAT 303
#define TK_DELIMITERS 304 #define TK_CONFLICT 304
#define TK_DETACH 305 #define TK_COPY 305
#define TK_DIVIDE 306 #define TK_DEFERRED 306
#define TK_DOT 307 #define TK_DELIMITERS 307
#define TK_EACH 308 #define TK_DETACH 308
#define TK_FAIL 309 #define TK_DIVIDE 309
#define TK_FILE 310 #define TK_DOT 310
#define TK_FOR 311 #define TK_EACH 311
#define TK_GLOB 312 #define TK_FAIL 312
#define TK_ID 313 #define TK_FILE 313
#define TK_IMMEDIATE 314 #define TK_FOR 314
#define TK_IMPORT 315 #define TK_GLOB 315
#define TK_INITIALLY 316 #define TK_ID 316
#define TK_INSTEAD 317 #define TK_IMMEDIATE 317
#define TK_ISNULL 318 #define TK_IMPORT 318
#define TK_KEY 319 #define TK_INITIALLY 319
#define TK_MODULES 320 #define TK_INSTEAD 320
#define TK_NK_BITNOT 321 #define TK_ISNULL 321
#define TK_NK_SEMI 322 #define TK_KEY 322
#define TK_NOTNULL 323 #define TK_MODULES 323
#define TK_OF 324 #define TK_NK_BITNOT 324
#define TK_PLUS 325 #define TK_NK_SEMI 325
#define TK_PRIVILEGE 326 #define TK_NOTNULL 326
#define TK_RAISE 327 #define TK_OF 327
#define TK_RESTRICT 328 #define TK_PLUS 328
#define TK_ROW 329 #define TK_PRIVILEGE 329
#define TK_SEMI 330 #define TK_RAISE 330
#define TK_STAR 331 #define TK_RESTRICT 331
#define TK_STATEMENT 332 #define TK_ROW 332
#define TK_STRICT 333 #define TK_SEMI 333
#define TK_STRING 334 #define TK_STAR 334
#define TK_TIMES 335 #define TK_STATEMENT 335
#define TK_VALUES 336 #define TK_STRICT 336
#define TK_VARIABLE 337 #define TK_STRING 337
#define TK_VIEW 338 #define TK_TIMES 338
#define TK_WAL 339 #define TK_VALUES 339
#define TK_VARIABLE 340
#define TK_VIEW 341
#define TK_WAL 342
#define TK_NK_SPACE 600 #define TK_NK_SPACE 600
#define TK_NK_COMMENT 601 #define TK_NK_COMMENT 601

View File

@ -297,7 +297,7 @@ int32_t parseSql(SRequestObj* pRequest, bool topicQuery, SQuery** pQuery, SStmtC
int32_t execLocalCmd(SRequestObj* pRequest, SQuery* pQuery) { int32_t execLocalCmd(SRequestObj* pRequest, SQuery* pQuery) {
SRetrieveTableRsp* pRsp = NULL; SRetrieveTableRsp* pRsp = NULL;
int32_t code = qExecCommand(&pRequest->pTscObj->id, pRequest->pTscObj->sysInfo, pQuery->pRoot, &pRsp); int32_t code = qExecCommand(&pRequest->pTscObj->id, pRequest->pTscObj->sysInfo, pQuery->pRoot, &pRsp, pRequest->pTscObj->biMode);
if (TSDB_CODE_SUCCESS == code && NULL != pRsp) { if (TSDB_CODE_SUCCESS == code && NULL != pRsp) {
code = setQueryResultFromRsp(&pRequest->body.resInfo, pRsp, false, true); code = setQueryResultFromRsp(&pRequest->body.resInfo, pRsp, false, true);
} }

View File

@ -115,7 +115,7 @@ static int32_t setDescResultIntoDataBlock(bool sysInfoUser, SSDataBlock* pBlock,
colDataSetVal(pCol4, pBlock->info.rows, buf, false); colDataSetVal(pCol4, pBlock->info.rows, buf, false);
++(pBlock->info.rows); ++(pBlock->info.rows);
} }
if (biMode != 0) { if (pMeta->tableType == TSDB_SUPER_TABLE && biMode != 0) {
STR_TO_VARSTR(buf, "tbname"); STR_TO_VARSTR(buf, "tbname");
colDataSetVal(pCol1, pBlock->info.rows, buf, false); colDataSetVal(pCol1, pBlock->info.rows, buf, false);
STR_TO_VARSTR(buf, "VARCHAR"); STR_TO_VARSTR(buf, "VARCHAR");

View File

@ -2290,14 +2290,14 @@ SValueNode* nodesMakeValueNodeFromString(char* literal) {
if (pValNode) { if (pValNode) {
pValNode->node.resType.type = TSDB_DATA_TYPE_VARCHAR; pValNode->node.resType.type = TSDB_DATA_TYPE_VARCHAR;
pValNode->node.resType.bytes = lenStr + VARSTR_HEADER_SIZE; pValNode->node.resType.bytes = lenStr + VARSTR_HEADER_SIZE;
char* p = taosMemoryMalloc(lenStr + VARSTR_HEADER_SIZE); char* p = taosMemoryMalloc(lenStr + 1 + VARSTR_HEADER_SIZE);
if (p == NULL) { if (p == NULL) {
return NULL; return NULL;
} }
varDataSetLen(p, lenStr); varDataSetLen(p, lenStr);
memcpy(varDataVal(p), literal, lenStr); memcpy(varDataVal(p), literal, lenStr + 1);
pValNode->datum.p = p; pValNode->datum.p = p;
pValNode->literal = literal; pValNode->literal = tstrdup(literal);
pValNode->translate = true; pValNode->translate = true;
pValNode->isDuration = false; pValNode->isDuration = false;
pValNode->isNull = false; pValNode->isNull = false;

View File

@ -87,6 +87,11 @@ typedef struct STokenPair {
SToken second; SToken second;
} STokenPair; } STokenPair;
typedef struct SShowTablesOption {
EShowKind kind;
SNode* pDbName;
} SShowTablesOption;
extern SToken nil_token; extern SToken nil_token;
void initAstCreateContext(SParseContext* pParseCxt, SAstCreateContext* pCxt); void initAstCreateContext(SParseContext* pParseCxt, SAstCreateContext* pCxt);

View File

@ -462,9 +462,9 @@ cmd ::= SHOW db_kind_opt(A) DATABASES.
pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DATABASES_STMT); pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DATABASES_STMT);
setShowKind(pCxt, pCxt->pRootNode, A); setShowKind(pCxt, pCxt->pRootNode, A);
} }
cmd ::= SHOW table_kind_opt(C) db_name_cond_opt(A) TABLES like_pattern_opt(B). { cmd ::= SHOW table_kind_db_name_cond_opt(A) TABLES like_pattern_opt(B). {
pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TABLES_STMT, A, B, OP_TYPE_LIKE); pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TABLES_STMT, A.pDbName, B, OP_TYPE_LIKE);
setShowKind(pCxt, pCxt->pRootNode, C); setShowKind(pCxt, pCxt->pRootNode, A.kind);
} }
cmd ::= SHOW db_name_cond_opt(A) STABLES like_pattern_opt(B). { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_STABLES_STMT, A, B, OP_TYPE_LIKE); } cmd ::= SHOW db_name_cond_opt(A) STABLES like_pattern_opt(B). { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_STABLES_STMT, A, B, OP_TYPE_LIKE); }
cmd ::= SHOW db_name_cond_opt(A) VGROUPS. { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_VGROUPS_STMT, A, NULL, OP_TYPE_LIKE); } cmd ::= SHOW db_name_cond_opt(A) VGROUPS. { pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_VGROUPS_STMT, A, NULL, OP_TYPE_LIKE); }
@ -507,6 +507,20 @@ cmd ::= SHOW VNODES.
cmd ::= SHOW db_name_cond_opt(A) ALIVE. { pCxt->pRootNode = createShowAliveStmt(pCxt, A, QUERY_NODE_SHOW_DB_ALIVE_STMT); } cmd ::= SHOW db_name_cond_opt(A) ALIVE. { pCxt->pRootNode = createShowAliveStmt(pCxt, A, QUERY_NODE_SHOW_DB_ALIVE_STMT); }
cmd ::= SHOW CLUSTER ALIVE. { pCxt->pRootNode = createShowAliveStmt(pCxt, NULL, QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT); } cmd ::= SHOW CLUSTER ALIVE. { pCxt->pRootNode = createShowAliveStmt(pCxt, NULL, QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT); }
%type table_kind_db_name_cond_opt { SShowTablesOption }
%destructor table_kind_db_name_cond_opt { }
table_kind_db_name_cond_opt(A) ::= . { A.kind = SHOW_KIND_NONE; A.pDbName = createDefaultDatabaseCondValue(pCxt); }
table_kind_db_name_cond_opt(A) ::= table_kind(B). { A.kind = B; A.pDbName = createDefaultDatabaseCondValue(pCxt); }
table_kind_db_name_cond_opt(A) ::= db_name_cond(C). { A.kind = SHOW_KIND_NONE; A.pDbName = C; }
table_kind_db_name_cond_opt(A) ::= table_kind(B) db_name_cond(C). { A.kind = B; A.pDbName = C; }
%type table_kind { EShowKind }
%destructor table_kind { }
table_kind(A) ::= NORMAL. { A = SHOW_KIND_TABLES_NORMAL; }
table_kind(A) ::= CHILD. { A = SHOW_KIND_TABLES_CHILD; }
db_name_cond(A) ::= db_name(B) NK_DOT. { A = createIdentifierValueNode(pCxt, &B); }
db_name_cond_opt(A) ::= . { A = createDefaultDatabaseCondValue(pCxt); } db_name_cond_opt(A) ::= . { A = createDefaultDatabaseCondValue(pCxt); }
db_name_cond_opt(A) ::= db_name(B) NK_DOT. { A = createIdentifierValueNode(pCxt, &B); } db_name_cond_opt(A) ::= db_name(B) NK_DOT. { A = createIdentifierValueNode(pCxt, &B); }
@ -536,9 +550,6 @@ db_kind_opt(A) ::= .
db_kind_opt(A) ::= USER. { A = SHOW_KIND_DATABASES_USER; } db_kind_opt(A) ::= USER. { A = SHOW_KIND_DATABASES_USER; }
db_kind_opt(A) ::= SYSTEM. { A = SHOW_KIND_DATABASES_SYSTEM; } db_kind_opt(A) ::= SYSTEM. { A = SHOW_KIND_DATABASES_SYSTEM; }
table_kind_opt(A) ::= . { A = SHOW_KIND_NONE; }
table_kind_opt(A) ::= NORMAL. { A = SHOW_KIND_TABLES_NORMAL; }
table_kind_opt(A) ::= CHILD. { A = SHOW_KIND_TABLES_CHILD; }
/************************************************ create index ********************************************************/ /************************************************ create index ********************************************************/
cmd ::= CREATE SMA INDEX not_exists_opt(D) cmd ::= CREATE SMA INDEX not_exists_opt(D)
col_name(A) ON full_table_name(B) index_options(C). { pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_SMA, D, A, B, NULL, C); } col_name(A) ON full_table_name(B) index_options(C). { pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_SMA, D, A, B, NULL, C); }

File diff suppressed because it is too large Load Diff