You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ja...@apache.org on 2021/05/28 10:04:47 UTC
[flink] branch release-1.13 updated: [FLINK-22655][sql-client] Fix
"-i init.sql" doesn't work when first line is a comment
This is an automated email from the ASF dual-hosted git repository.
jark pushed a commit to branch release-1.13
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/release-1.13 by this push:
new 8d62fe8 [FLINK-22655][sql-client] Fix "-i init.sql" doesn't work when first line is a comment
8d62fe8 is described below
commit 8d62fe8e5130575f92c6d3c7b5411fce9752e9f7
Author: JasonLee <40...@users.noreply.github.com>
AuthorDate: Fri May 28 17:37:42 2021 +0800
[FLINK-22655][sql-client] Fix "-i init.sql" doesn't work when first line is a comment
This closes #15980
---
.../flink/table/client/cli/CliStatementSplitter.java | 13 +++++++++++--
.../org/apache/flink/table/client/SqlClientTest.java | 7 ++++---
.../apache/flink/table/client/cli/CliClientTest.java | 4 +---
.../table/client/cli/CliStatementSplitterTest.java | 20 +++++++++++++++++---
4 files changed, 33 insertions(+), 11 deletions(-)
diff --git a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/CliStatementSplitter.java b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/CliStatementSplitter.java
index 5aea2a8..ce4f841 100644
--- a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/CliStatementSplitter.java
+++ b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/CliStatementSplitter.java
@@ -20,6 +20,7 @@ package org.apache.flink.table.client.cli;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
/**
* Line splitter to determine whether the submitted line is complete. It also offers to split the
@@ -31,6 +32,7 @@ import java.util.List;
public class CliStatementSplitter {
private static final String MASK = "--.*$";
+ private static final String BEGINNING_MASK = "^(\\s)*--.*$";
public static boolean isStatementComplete(String statement) {
String[] lines = statement.split("\n");
@@ -49,18 +51,25 @@ public class CliStatementSplitter {
for (String line : content.split("\n")) {
if (isEndOfStatement(line)) {
buffer.add(line);
- statements.add(String.join("\n", buffer));
+ statements.add(normalize(buffer));
buffer.clear();
} else {
buffer.add(line);
}
}
if (!buffer.isEmpty()) {
- statements.add(String.join("\n", buffer));
+ statements.add(normalize(buffer));
}
return statements;
}
+ private static String normalize(List<String> buffer) {
+ // remove comment lines
+ return buffer.stream()
+ .map(statementLine -> statementLine.replaceAll(BEGINNING_MASK, ""))
+ .collect(Collectors.joining("\n"));
+ }
+
private static boolean isEndOfStatement(String line) {
return line.replaceAll(MASK, "").trim().endsWith(";");
}
diff --git a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/SqlClientTest.java b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/SqlClientTest.java
index 25e8df2..e7cdac5 100644
--- a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/SqlClientTest.java
+++ b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/SqlClientTest.java
@@ -176,13 +176,14 @@ public class SqlClientTest {
public void testInitFile() throws Exception {
List<String> statements =
Arrays.asList(
- "CREATE TABLE source ("
+ "-- define table \n"
+ + "CREATE TABLE source ("
+ "id INT,"
+ "val STRING"
+ ") WITH ("
+ " 'connector' = 'values'"
- + ");\n",
- "SET key = value;\n");
+ + "); \n",
+ " -- define config \nSET key = value;\n");
String initFile = createSqlFile(statements, "init-sql.sql");
String[] args = new String[] {"-i", initFile};
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 e4173ae..3b5c388 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
@@ -252,9 +252,7 @@ public class CliClientTest extends TestLogger {
+ ") WITH (\n"
+ " 'connector' = 'values'\n"
+ ");\n",
- "INSERT INTO \n"
- + "--COMMENT ; \n"
- + "MyOtherTable VALUES (1, 101), (2, 102);",
+ "INSERT INTO \n" + "MyOtherTable VALUES (1, 101), (2, 102);",
"DESC MyOtherTable;",
"SHOW TABLES;",
"QUIT;\n");
diff --git a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliStatementSplitterTest.java b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliStatementSplitterTest.java
index 92c07bf..79fa26b 100644
--- a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliStatementSplitterTest.java
+++ b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliStatementSplitterTest.java
@@ -55,18 +55,32 @@ public class CliStatementSplitterTest {
public void testSplitContent() {
List<String> lines =
Arrays.asList(
- "CREATE TABLE MyTable (\n"
+ "-- Define Table; \n"
+ + "CREATE TABLE MyTable (\n"
+ " id INT,\n"
+ " name STRING,\n"
+ ") WITH (\n"
+ " 'connector' = 'values',\n"
- + " 'test-property' = 'test.value'\n);",
+ + " 'test-property' = 'test.value'\n);"
+ + "-- Define Table;",
"SET a = b;",
"\n" + "SELECT func(id) from MyTable\n;");
List<String> actual = CliStatementSplitter.splitContent(String.join("\n", lines));
+ List<String> expected =
+ Arrays.asList(
+ "\nCREATE TABLE MyTable (\n"
+ + " id INT,\n"
+ + " name STRING,\n"
+ + ") WITH (\n"
+ + " 'connector' = 'values',\n"
+ + " 'test-property' = 'test.value'\n);"
+ + "-- Define Table;",
+ "SET a = b;",
+ "\n" + "SELECT func(id) from MyTable\n;");
+
for (int i = 0; i < lines.size(); i++) {
- assertEquals(lines.get(i), actual.get(i));
+ assertEquals(expected.get(i), actual.get(i));
}
}
}