diff --git a/src/kit/shell/inc/shellAuto.h b/src/kit/shell/inc/shellAuto.h index 0bd6bdf4038c112b453feea02950cc3aa5577a50..51fd4656ec6eb4a74d12556f87c2c19618e7ccd1 100644 --- a/src/kit/shell/inc/shellAuto.h +++ b/src/kit/shell/inc/shellAuto.h @@ -33,5 +33,7 @@ void shellAutoExit(); // callback autotab module void callbackAutoTab(char* sqlstr, TAOS* pSql, bool usedb); +// show all commands help +void showHelp(); #endif diff --git a/src/kit/shell/src/shellAuto.c b/src/kit/shell/src/shellAuto.c index a96aa3f5810e69bef42242e9d26d9528c8f8ce3e..1b814e525f37d1e4c8f1edfe8eb5a13b052847cf 100644 --- a/src/kit/shell/src/shellAuto.c +++ b/src/kit/shell/src/shellAuto.c @@ -1438,25 +1438,37 @@ bool matchSelectQuery(TAOS * con, Command * cmd) { } // if is input create fields or tags area, return true -bool isCreateFieldsArea(char * p) { - char * left = strrchr(p, '('); - if (left == NULL) { - // like 'create table st' - return false; - } +bool isCreateFieldsArea(char* p) { + // put to while, support like create table st(ts timestamp, bin1 binary(16), bin2 + blank + TAB + char* p1 = strdup(p); + bool ret = false; + while (1) { + char* left = strrchr(p1, '('); + if (left == NULL) { + // like 'create table st' + ret = false; + break; + } - char * right = strrchr(p, ')'); - if(right == NULL) { - // like 'create table st( ' - return true; - } + char* right = strrchr(p1, ')'); + if (right == NULL) { + // like 'create table st( ' + ret = true; + break; + } - if (left > right) { - // like 'create table st( ts timestamp, age int) tags(area ' - return true; + if (left > right) { + // like 'create table st( ts timestamp, age int) tags(area ' + ret = true; + break; + } + + // set string end by small for next strrchr search + *left = 0; } + taosMemoryFree(p1); - return false; + return ret; } bool matchCreateTable(TAOS * con, Command * cmd) { diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c index 277765351757fcecaffe9ec63e4dbcad9147ee50..e364639a99f46d910bae6c62742670666d684209 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -216,6 +216,12 @@ int32_t shellRunCommand(TAOS* con, char* command) { return 0; } + // add help or help; + if (strcmp(command, "help") == 0 || strcmp(command, "help;") == 0) { + showHelp(); + return 0; + } + /* Update the history vector. */ if (history.hstart == history.hend || history.hist[(history.hend + MAX_HISTORY_SIZE - 1) % MAX_HISTORY_SIZE] == NULL ||