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..448bb5217ea754510d4ef8d384c130e6a1fb2180 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; } + free(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 9e21dba80b1073f55f18125757436e1fd8b1f5a6..47bbdf9f9a14eabaae7573ff599cda4a9f38a12b 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -216,6 +216,14 @@ int32_t shellRunCommand(TAOS* con, char* command) { return 0; } + // add help or help; +#ifndef WINDOWS + if (strcmp(command, "help") == 0 || strcmp(command, "help;") == 0) { + showHelp(); + return 0; + } +#endif + /* Update the history vector. */ if (history.hstart == history.hend || history.hist[(history.hend + MAX_HISTORY_SIZE - 1) % MAX_HISTORY_SIZE] == NULL || @@ -377,7 +385,7 @@ void shellRunCommandOnServer(TAOS *con, char command[]) { } else { int num_rows_affacted = taos_affected_rows(pSql); et = taosGetTimestampUs(); - printf("Query OK, %d row(s) affected(%.6fs)\n", num_rows_affacted, (et - st) / 1E6); + printf("Query OK, %d row(s) affected (%.6fs)\n", num_rows_affacted, (et - st) / 1E6); #ifndef WINDOWS // call auto tab