You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by gy...@apache.org on 2020/05/18 10:18:55 UTC
[flink] branch master updated: [FLINK-17617] Fix SQL Client
autocomplete
This is an automated email from the ASF dual-hosted git repository.
gyfora pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new a17da14 [FLINK-17617] Fix SQL Client autocomplete
a17da14 is described below
commit a17da14fc00a1b13e6e8106863a3e049fbc217f5
Author: Gyula Fora <gy...@cloudera.com>
AuthorDate: Fri May 8 15:56:12 2020 +0200
[FLINK-17617] Fix SQL Client autocomplete
Closes #12084
---
.../apache/flink/table/client/cli/SqlCompleter.java | 20 +++++++++++++++++++-
.../apache/flink/table/client/cli/CliClientTest.java | 4 ++++
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/SqlCompleter.java b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/SqlCompleter.java
index 078d94f..5dd2bc7 100644
--- a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/SqlCompleter.java
+++ b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/SqlCompleter.java
@@ -61,7 +61,7 @@ public class SqlCompleter implements Completer {
final String statementNormalized = statement.toUpperCase().trim();
for (String commandHint : COMMAND_HINTS) {
if (commandHint.startsWith(statementNormalized) && line.cursor() < commandHint.length()) {
- candidates.add(createCandidate(commandHint));
+ candidates.add(createCandidate(getCompletionHint(statementNormalized, commandHint)));
}
}
@@ -74,6 +74,24 @@ public class SqlCompleter implements Completer {
}
}
+ private String getCompletionHint(String statementNormalized, String commandHint) {
+ if (statementNormalized.length() == 0) {
+ return commandHint;
+ }
+ int cursorPos = statementNormalized.length() - 1;
+ int returnStartPos;
+ if (Character.isWhitespace(commandHint.charAt(cursorPos + 1))) {
+ returnStartPos = Math.min(commandHint.length() - 1, cursorPos + 2);
+ } else {
+ returnStartPos = cursorPos;
+ while (returnStartPos > 0 && !Character.isWhitespace(commandHint.charAt(returnStartPos - 1))) {
+ returnStartPos--;
+ }
+ }
+
+ return commandHint.substring(returnStartPos);
+ }
+
private Candidate createCandidate(String hint) {
return new Candidate(AttributedString.stripAnsi(hint), hint, null, null, null, null, true);
}
diff --git a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliClientTest.java b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliClientTest.java
index a166e40..c785cab 100644
--- a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliClientTest.java
+++ b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliClientTest.java
@@ -99,6 +99,10 @@ public class CliClientTest extends TestLogger {
verifySqlCompletion(" qu", 2, Collections.singletonList("QUIT;"), Collections.singletonList("SELECT"));
verifySqlCompletion("set ", 3, Collections.emptyList(), Collections.singletonList("SET"));
verifySqlCompletion("show t ", 6, Collections.emptyList(), Collections.singletonList("SET"));
+ verifySqlCompletion("use cat", 7, Collections.singletonList("CATALOG"), Collections.singletonList("USE CATALOG"));
+ verifySqlCompletion("use ", 4, Collections.singletonList("CATALOG"), Collections.singletonList("USE CATALOG"));
+ verifySqlCompletion("use catalog", 11, Collections.emptyList(), Collections.singletonList("CATALOG"));
+
}
@Test