This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch iotdb_jline in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit fc9948af4878fa3f0db8b4d0f3ed26fd9bea5f63 Author: HTHou <[email protected]> AuthorDate: Fri Jan 14 19:41:58 2022 +0800 [IOTDB-2287] Separate CLI history by different IoTDB users --- cli/src/main/java/org/apache/iotdb/cli/Cli.java | 11 +++++++++-- cli/src/main/java/org/apache/iotdb/cli/utils/JlineUtils.java | 4 ++-- cli/src/main/java/org/apache/iotdb/tool/ExportCsv.java | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/cli/src/main/java/org/apache/iotdb/cli/Cli.java b/cli/src/main/java/org/apache/iotdb/cli/Cli.java index 6d7675f..0cbf039 100644 --- a/cli/src/main/java/org/apache/iotdb/cli/Cli.java +++ b/cli/src/main/java/org/apache/iotdb/cli/Cli.java @@ -76,7 +76,15 @@ public class Cli extends AbstractCli { return; } - lineReader = JlineUtils.getLineReader(); + try { + username = checkRequiredArg(USERNAME_ARGS, USERNAME_NAME, commandLine, true, null); + } catch (ArgsErrorException e) { + println(IOTDB_CLI_PREFIX + "> input params error because" + e.getMessage()); + } catch (Exception e) { + println(IOTDB_CLI_PREFIX + "> exit cli with error " + e.getMessage()); + } + + lineReader = JlineUtils.getLineReader(username); serve(); } @@ -117,7 +125,6 @@ public class Cli extends AbstractCli { try { host = checkRequiredArg(HOST_ARGS, HOST_NAME, commandLine, false, host); port = checkRequiredArg(PORT_ARGS, PORT_NAME, commandLine, false, port); - username = checkRequiredArg(USERNAME_ARGS, USERNAME_NAME, commandLine, true, null); password = commandLine.getOptionValue(PASSWORD_ARGS); if (hasExecuteSQL && password != null) { diff --git a/cli/src/main/java/org/apache/iotdb/cli/utils/JlineUtils.java b/cli/src/main/java/org/apache/iotdb/cli/utils/JlineUtils.java index 2cfc96e..139a2fe 100644 --- a/cli/src/main/java/org/apache/iotdb/cli/utils/JlineUtils.java +++ b/cli/src/main/java/org/apache/iotdb/cli/utils/JlineUtils.java @@ -50,7 +50,7 @@ public class JlineUtils { .filter(w -> SQL_KEYWORD_PATTERN.matcher(w).matches()) .collect(Collectors.toSet()); - public static LineReader getLineReader() throws IOException { + public static LineReader getLineReader(String username) throws IOException { // Defaulting to a dumb terminal when a supported terminal can not be correctly created // see https://github.com/jline/jline3/issues/291 Terminal terminal = TerminalBuilder.builder().dumb(true).build(); @@ -70,7 +70,7 @@ public class JlineUtils { // size of the history fill will be less than 10 KB. See: // org.jline.reader.impl.history#DefaultHistory String historyFile = ".iotdb.history"; - String historyFilePath = System.getProperty("user.home") + File.separator + historyFile; + String historyFilePath = System.getProperty("user.home") + File.separator + username + historyFile; builder.variable(LineReader.HISTORY_FILE, new File(historyFilePath)); // TODO: since the lexer doesn't produce tokens for quotation marks, disable the highlighter to diff --git a/cli/src/main/java/org/apache/iotdb/tool/ExportCsv.java b/cli/src/main/java/org/apache/iotdb/tool/ExportCsv.java index efd4d7b..3ea31cb 100644 --- a/cli/src/main/java/org/apache/iotdb/tool/ExportCsv.java +++ b/cli/src/main/java/org/apache/iotdb/tool/ExportCsv.java @@ -133,7 +133,7 @@ public class ExportCsv extends AbstractCsvTool { String sql; if (sqlFile == null) { - LineReader lineReader = JlineUtils.getLineReader(); + LineReader lineReader = JlineUtils.getLineReader(username); sql = lineReader.readLine(TSFILEDB_CLI_PREFIX + "> please input query: "); System.out.println(sql); String[] values = sql.trim().split(";");
