This is an automated email from the ASF dual-hosted git repository.
jark 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 6668d3b [FLINK-21741][sql-client] Support SHOW JARS statement in SQL
Client (#16010)
6668d3b is described below
commit 6668d3be2edaea9a775f00336abd5e2fa8929a34
Author: SteNicholas <[email protected]>
AuthorDate: Tue Jun 1 12:07:47 2021 +0800
[FLINK-21741][sql-client] Support SHOW JARS statement in SQL Client (#16010)
---
.../apache/flink/table/client/cli/CliClient.java | 8 ++++
.../flink/table/client/gateway/Executor.java | 3 ++
.../client/gateway/context/SessionContext.java | 6 +++
.../table/client/gateway/local/LocalExecutor.java | 6 +++
.../flink/table/client/cli/CliClientTest.java | 5 ++
.../flink/table/client/cli/CliResultViewTest.java | 5 ++
.../flink/table/client/cli/TestingExecutor.java | 5 ++
.../client/gateway/context/SessionContextTest.java | 2 +
.../src/test/resources/sql/function.q | 4 ++
.../flink-sql-client/src/test/resources/sql/set.q | 8 ++++
.../src/main/codegen/data/Parser.tdd | 4 ++
.../src/main/codegen/includes/parserImpls.ftl | 14 ++++++
.../parser/hive/FlinkHiveSqlParserImplTest.java | 5 ++
.../src/main/codegen/data/Parser.tdd | 4 ++
.../src/main/codegen/includes/parserImpls.ftl | 14 ++++++
.../apache/flink/sql/parser/dql/SqlShowJars.java | 56 ++++++++++++++++++++++
.../flink/sql/parser/FlinkSqlParserImplTest.java | 5 ++
.../operations/command/ShowJarsOperation.java | 30 ++++++++++++
.../operations/SqlToOperationConverter.java | 8 ++++
.../table/planner/calcite/FlinkPlannerImpl.scala | 1 +
.../operations/SqlToOperationConverterTest.java | 14 +++++-
21 files changed, 205 insertions(+), 2 deletions(-)
diff --git
a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/CliClient.java
b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/CliClient.java
index d1f5f3e..67f7f7f 100644
---
a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/CliClient.java
+++
b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/cli/CliClient.java
@@ -43,6 +43,7 @@ import
org.apache.flink.table.operations.command.HelpOperation;
import org.apache.flink.table.operations.command.QuitOperation;
import org.apache.flink.table.operations.command.ResetOperation;
import org.apache.flink.table.operations.command.SetOperation;
+import org.apache.flink.table.operations.command.ShowJarsOperation;
import org.apache.flink.table.operations.ddl.AlterOperation;
import org.apache.flink.table.operations.ddl.CreateOperation;
import org.apache.flink.table.operations.ddl.DropOperation;
@@ -425,6 +426,9 @@ public class CliClient implements AutoCloseable {
} else if (operation instanceof AddJarOperation) {
// ADD JAR
callAddJar((AddJarOperation) operation);
+ } else if (operation instanceof ShowJarsOperation) {
+ // SHOW JARS
+ callShowJars();
} else if (operation instanceof ShowCreateTableOperation) {
// SHOW CREATE TABLE
callShowCreateTable((ShowCreateTableOperation) operation);
@@ -440,6 +444,10 @@ public class CliClient implements AutoCloseable {
printInfo(CliStrings.MESSAGE_ADD_JAR_STATEMENT);
}
+ private void callShowJars() {
+ executor.listJars(sessionId).forEach(jar ->
terminal.writer().println(jar));
+ }
+
private void callQuit() {
printInfo(CliStrings.MESSAGE_QUIT);
isRunning = false;
diff --git
a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/Executor.java
b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/Executor.java
index d29d1ab..d76fe5f 100644
---
a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/Executor.java
+++
b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/Executor.java
@@ -142,4 +142,7 @@ public interface Executor {
/** Add the JAR resource to into the classloader with specified session. */
void addJar(String sessionId, String jarPath);
+
+ /** List the JAR resources of the classloader with specified session. */
+ List<String> listJars(String sessionId);
}
diff --git
a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/context/SessionContext.java
b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/context/SessionContext.java
index acaf90a..8c859b2 100644
---
a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/context/SessionContext.java
+++
b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/context/SessionContext.java
@@ -51,8 +51,10 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
/**
* Context describing a session, it's mainly used for user to open a new
session in the backend. If
@@ -282,6 +284,10 @@ public class SessionContext {
executionContext = new ExecutionContext(sessionConfiguration,
classLoader, sessionState);
}
+ public List<String> listJars() {
+ return
dependencies.stream().map(URL::getPath).collect(Collectors.toList());
+ }
+
//
--------------------------------------------------------------------------------------------
// Inner class
//
--------------------------------------------------------------------------------------------
diff --git
a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/local/LocalExecutor.java
b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/local/LocalExecutor.java
index 44c8b66..784436c 100644
---
a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/local/LocalExecutor.java
+++
b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/local/LocalExecutor.java
@@ -313,4 +313,10 @@ public class LocalExecutor implements Executor {
final SessionContext context = getSessionContext(sessionId);
context.addJar(jarUrl);
}
+
+ @Override
+ public List<String> listJars(String sessionId) {
+ final SessionContext context = getSessionContext(sessionId);
+ return context.listJars();
+ }
}
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 f2680b9..79b73fa 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
@@ -523,5 +523,10 @@ public class CliClientTest extends TestLogger {
public void addJar(String sessionId, String jarUrl) {
throw new UnsupportedOperationException("Not implemented.");
}
+
+ @Override
+ public List<String> listJars(String sessionId) {
+ throw new UnsupportedOperationException("Not implemented.");
+ }
}
}
diff --git
a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliResultViewTest.java
b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliResultViewTest.java
index ef406d1..44569c9 100644
---
a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliResultViewTest.java
+++
b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/CliResultViewTest.java
@@ -231,6 +231,11 @@ public class CliResultViewTest {
public void addJar(String sessionId, String jarUrl) {
throw new UnsupportedOperationException("Not implemented.");
}
+
+ @Override
+ public List<String> listJars(String sessionId) {
+ throw new UnsupportedOperationException("Not implemented.");
+ }
}
private static final class TestingCliResultView implements Runnable {
diff --git
a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/TestingExecutor.java
b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/TestingExecutor.java
index ec01c67..44ff121 100644
---
a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/TestingExecutor.java
+++
b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/cli/TestingExecutor.java
@@ -73,6 +73,11 @@ class TestingExecutor implements Executor {
}
@Override
+ public List<String> listJars(String sessionId) {
+ throw new UnsupportedOperationException("Not implemented.");
+ }
+
+ @Override
public TypedResult<List<Row>> retrieveResultChanges(String sessionId,
String resultId)
throws SqlExecutionException {
return resultChanges
diff --git
a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/gateway/context/SessionContextTest.java
b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/gateway/context/SessionContextTest.java
index 42158d1..faa06e4 100644
---
a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/gateway/context/SessionContextTest.java
+++
b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/gateway/context/SessionContextTest.java
@@ -261,11 +261,13 @@ public class SessionContextTest {
private void validateAddJar(String jarPath) throws IOException {
sessionContext.addJar(jarPath);
+ assertEquals(Collections.singletonList(udfJar.getPath()),
sessionContext.listJars());
assertEquals(
Collections.singletonList(udfJar.toURI().toURL().toString()),
getConfiguration().get(JARS));
// reset to the default
sessionContext.reset();
+ assertEquals(Collections.singletonList(udfJar.getPath()),
sessionContext.listJars());
assertEquals(
Collections.singletonList(udfJar.toURI().toURL().toString()),
getConfiguration().get(JARS));
diff --git a/flink-table/flink-sql-client/src/test/resources/sql/function.q
b/flink-table/flink-sql-client/src/test/resources/sql/function.q
index 6711694..549af52 100644
--- a/flink-table/flink-sql-client/src/test/resources/sql/function.q
+++ b/flink-table/flink-sql-client/src/test/resources/sql/function.q
@@ -19,6 +19,10 @@ ADD JAR '$VAR_UDF_JAR_PATH';
[INFO] The specified jar is added into session classloader.
!info
+SHOW JARS;
+$VAR_UDF_JAR_PATH
+!ok
+
# this also tests user classloader because the LowerUDF is in user jar
create function func1 as 'LowerUDF' LANGUAGE JAVA;
[INFO] Execute statement succeed.
diff --git a/flink-table/flink-sql-client/src/test/resources/sql/set.q
b/flink-table/flink-sql-client/src/test/resources/sql/set.q
index 5f6fb7c..bd62c29 100644
--- a/flink-table/flink-sql-client/src/test/resources/sql/set.q
+++ b/flink-table/flink-sql-client/src/test/resources/sql/set.q
@@ -176,6 +176,10 @@ ADD JAR '$VAR_UDF_JAR_PATH';
[INFO] The specified jar is added into session classloader.
!info
+SHOW JARS;
+$VAR_UDF_JAR_PATH
+!ok
+
set;
execution.attached=true
execution.savepoint.ignore-unclaimed-state=false
@@ -191,6 +195,10 @@ reset;
[INFO] All session properties have been set to their default values.
!info
+SHOW JARS;
+$VAR_UDF_JAR_PATH
+!ok
+
SET sql-client.execution.result-mode=tableau;
[INFO] Session property has been set.
!info
diff --git a/flink-table/flink-sql-parser-hive/src/main/codegen/data/Parser.tdd
b/flink-table/flink-sql-parser-hive/src/main/codegen/data/Parser.tdd
index 8e2b62a..8476da7 100644
--- a/flink-table/flink-sql-parser-hive/src/main/codegen/data/Parser.tdd
+++ b/flink-table/flink-sql-parser-hive/src/main/codegen/data/Parser.tdd
@@ -86,6 +86,7 @@
"org.apache.flink.sql.parser.dql.SqlShowDatabases"
"org.apache.flink.sql.parser.dql.SqlShowCurrentDatabase"
"org.apache.flink.sql.parser.dql.SqlShowFunctions"
+ "org.apache.flink.sql.parser.dql.SqlShowJars"
"org.apache.flink.sql.parser.dql.SqlShowModules"
"org.apache.flink.sql.parser.dql.SqlShowTables"
"org.apache.flink.sql.parser.dql.SqlShowPartitions"
@@ -130,6 +131,7 @@
"INPUTFORMAT"
"ITEMS"
"JAR"
+ "JARS"
"KEYS"
"LINES"
"LOAD"
@@ -272,6 +274,7 @@
"ISOLATION"
"ISOYEAR"
"JAR"
+ "JARS"
"JAVA"
"JSON"
"K"
@@ -543,6 +546,7 @@
"SqlUseModules()"
"SqlRichExplain()"
"SqlAddJar()"
+ "SqlShowJars()"
]
# List of methods for parsing custom literals.
diff --git
a/flink-table/flink-sql-parser-hive/src/main/codegen/includes/parserImpls.ftl
b/flink-table/flink-sql-parser-hive/src/main/codegen/includes/parserImpls.ftl
index 53d7ecc..37c4a70 100644
---
a/flink-table/flink-sql-parser-hive/src/main/codegen/includes/parserImpls.ftl
+++
b/flink-table/flink-sql-parser-hive/src/main/codegen/includes/parserImpls.ftl
@@ -1642,3 +1642,17 @@ SqlAddJar SqlAddJar() :
return new SqlAddJar(getPos(), jarPath);
}
}
+
+/**
+* Parses a show jars statement.
+* SHOW JARS;
+*/
+SqlShowJars SqlShowJars() :
+{
+}
+{
+ <SHOW> <JARS>
+ {
+ return new SqlShowJars(getPos());
+ }
+}
diff --git
a/flink-table/flink-sql-parser-hive/src/test/java/org/apache/flink/sql/parser/hive/FlinkHiveSqlParserImplTest.java
b/flink-table/flink-sql-parser-hive/src/test/java/org/apache/flink/sql/parser/hive/FlinkHiveSqlParserImplTest.java
index 89f3451..08cceed 100644
---
a/flink-table/flink-sql-parser-hive/src/test/java/org/apache/flink/sql/parser/hive/FlinkHiveSqlParserImplTest.java
+++
b/flink-table/flink-sql-parser-hive/src/test/java/org/apache/flink/sql/parser/hive/FlinkHiveSqlParserImplTest.java
@@ -467,6 +467,11 @@ public class FlinkHiveSqlParserImplTest extends
SqlParserTest {
}
@Test
+ public void testShowJars() {
+ sql("show jars").ok("SHOW JARS");
+ }
+
+ @Test
public void testLoadModule() {
sql("load module hive").ok("LOAD MODULE `HIVE`");
diff --git a/flink-table/flink-sql-parser/src/main/codegen/data/Parser.tdd
b/flink-table/flink-sql-parser/src/main/codegen/data/Parser.tdd
index f7f7c6b..fcb5bed 100644
--- a/flink-table/flink-sql-parser/src/main/codegen/data/Parser.tdd
+++ b/flink-table/flink-sql-parser/src/main/codegen/data/Parser.tdd
@@ -71,6 +71,7 @@
"org.apache.flink.sql.parser.dql.SqlShowDatabases"
"org.apache.flink.sql.parser.dql.SqlShowCurrentDatabase"
"org.apache.flink.sql.parser.dql.SqlShowFunctions"
+ "org.apache.flink.sql.parser.dql.SqlShowJars"
"org.apache.flink.sql.parser.dql.SqlShowModules"
"org.apache.flink.sql.parser.dql.SqlShowTables"
"org.apache.flink.sql.parser.dql.SqlShowCreateTable"
@@ -105,6 +106,7 @@
"FUNCTIONS"
"IF"
"JAR"
+ "JARS"
"LOAD"
"METADATA"
"MODULES"
@@ -241,6 +243,7 @@
"ISOLATION"
"ISOYEAR"
"JAR"
+ "JARS"
"JAVA"
"JSON"
"K"
@@ -494,6 +497,7 @@
"SqlUseModules()"
"SqlRichExplain()"
"SqlAddJar()"
+ "SqlShowJars()"
"SqlSet()"
"SqlReset()"
]
diff --git
a/flink-table/flink-sql-parser/src/main/codegen/includes/parserImpls.ftl
b/flink-table/flink-sql-parser/src/main/codegen/includes/parserImpls.ftl
index e17c92c..4be7ded 100644
--- a/flink-table/flink-sql-parser/src/main/codegen/includes/parserImpls.ftl
+++ b/flink-table/flink-sql-parser/src/main/codegen/includes/parserImpls.ftl
@@ -1665,6 +1665,20 @@ SqlAddJar SqlAddJar() :
}
}
+/**
+* Parses a show jars statement.
+* SHOW JARS;
+*/
+SqlShowJars SqlShowJars() :
+{
+}
+{
+ <SHOW> <JARS>
+ {
+ return new SqlShowJars(getPos());
+ }
+}
+
/*
* Parses a SET statement:
* SET ['key' = 'value'];
diff --git
a/flink-table/flink-sql-parser/src/main/java/org/apache/flink/sql/parser/dql/SqlShowJars.java
b/flink-table/flink-sql-parser/src/main/java/org/apache/flink/sql/parser/dql/SqlShowJars.java
new file mode 100644
index 0000000..8aac3d0
--- /dev/null
+++
b/flink-table/flink-sql-parser/src/main/java/org/apache/flink/sql/parser/dql/SqlShowJars.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.sql.parser.dql;
+
+import org.apache.calcite.sql.SqlCall;
+import org.apache.calcite.sql.SqlKind;
+import org.apache.calcite.sql.SqlNode;
+import org.apache.calcite.sql.SqlOperator;
+import org.apache.calcite.sql.SqlSpecialOperator;
+import org.apache.calcite.sql.SqlWriter;
+import org.apache.calcite.sql.parser.SqlParserPos;
+
+import java.util.Collections;
+import java.util.List;
+
+/** SHOW JARS sql call. */
+public class SqlShowJars extends SqlCall {
+
+ public static final SqlSpecialOperator OPERATOR =
+ new SqlSpecialOperator("SHOW JARS", SqlKind.OTHER);
+
+ public SqlShowJars(SqlParserPos pos) {
+ super(pos);
+ }
+
+ @Override
+ public SqlOperator getOperator() {
+ return OPERATOR;
+ }
+
+ @Override
+ public List<SqlNode> getOperandList() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public void unparse(SqlWriter writer, int leftPrec, int rightPrec) {
+ writer.keyword("SHOW JARS");
+ }
+}
diff --git
a/flink-table/flink-sql-parser/src/test/java/org/apache/flink/sql/parser/FlinkSqlParserImplTest.java
b/flink-table/flink-sql-parser/src/test/java/org/apache/flink/sql/parser/FlinkSqlParserImplTest.java
index 8ae6d50..48bbf9f 100644
---
a/flink-table/flink-sql-parser/src/test/java/org/apache/flink/sql/parser/FlinkSqlParserImplTest.java
+++
b/flink-table/flink-sql-parser/src/test/java/org/apache/flink/sql/parser/FlinkSqlParserImplTest.java
@@ -1344,6 +1344,11 @@ public class FlinkSqlParserImplTest extends
SqlParserTest {
}
@Test
+ public void testShowJars() {
+ sql("show jars").ok("SHOW JARS");
+ }
+
+ @Test
public void testSetReset() {
sql("SET").ok("SET");
sql("SET 'test-key' = 'test-value'").ok("SET 'test-key' =
'test-value'");
diff --git
a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/operations/command/ShowJarsOperation.java
b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/operations/command/ShowJarsOperation.java
new file mode 100644
index 0000000..d0995c2
--- /dev/null
+++
b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/operations/command/ShowJarsOperation.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.table.operations.command;
+
+import org.apache.flink.table.operations.ShowOperation;
+
+/** Operation to describe a SHOW JARS statement. */
+public class ShowJarsOperation implements ShowOperation {
+
+ @Override
+ public String asSummaryString() {
+ return "SHOW JARS";
+ }
+}
diff --git
a/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/operations/SqlToOperationConverter.java
b/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/operations/SqlToOperationConverter.java
index 3cf2e96..56ec0be 100644
---
a/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/operations/SqlToOperationConverter.java
+++
b/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/operations/SqlToOperationConverter.java
@@ -64,6 +64,7 @@ import org.apache.flink.sql.parser.dql.SqlShowCurrentCatalog;
import org.apache.flink.sql.parser.dql.SqlShowCurrentDatabase;
import org.apache.flink.sql.parser.dql.SqlShowDatabases;
import org.apache.flink.sql.parser.dql.SqlShowFunctions;
+import org.apache.flink.sql.parser.dql.SqlShowJars;
import org.apache.flink.sql.parser.dql.SqlShowModules;
import org.apache.flink.sql.parser.dql.SqlShowPartitions;
import org.apache.flink.sql.parser.dql.SqlShowTables;
@@ -116,6 +117,7 @@ import
org.apache.flink.table.operations.UseModulesOperation;
import org.apache.flink.table.operations.command.AddJarOperation;
import org.apache.flink.table.operations.command.ResetOperation;
import org.apache.flink.table.operations.command.SetOperation;
+import org.apache.flink.table.operations.command.ShowJarsOperation;
import org.apache.flink.table.operations.ddl.AddPartitionsOperation;
import org.apache.flink.table.operations.ddl.AlterCatalogFunctionOperation;
import org.apache.flink.table.operations.ddl.AlterDatabaseOperation;
@@ -279,6 +281,8 @@ public class SqlToOperationConverter {
return
Optional.of(converter.convertDescribeTable((SqlRichDescribeTable) validated));
} else if (validated instanceof SqlAddJar) {
return Optional.of(converter.convertAddJar((SqlAddJar) validated));
+ } else if (validated instanceof SqlShowJars) {
+ return Optional.of(converter.convertShowJars((SqlShowJars)
validated));
} else if (validated instanceof RichSqlInsert) {
return Optional.of(converter.convertSqlInsert((RichSqlInsert)
validated));
} else if (validated instanceof SqlBeginStatementSet) {
@@ -974,6 +978,10 @@ public class SqlToOperationConverter {
return new AddJarOperation(sqlAddJar.getPath());
}
+ private Operation convertShowJars(SqlShowJars sqlShowJars) {
+ return new ShowJarsOperation();
+ }
+
/** Convert UNLOAD MODULE statement. */
private Operation convertUnloadModule(SqlUnloadModule sqlUnloadModule) {
String moduleName = sqlUnloadModule.moduleName();
diff --git
a/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/calcite/FlinkPlannerImpl.scala
b/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/calcite/FlinkPlannerImpl.scala
index 6df9e90..b17eeaf 100644
---
a/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/calcite/FlinkPlannerImpl.scala
+++
b/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/calcite/FlinkPlannerImpl.scala
@@ -130,6 +130,7 @@ class FlinkPlannerImpl(
|| sqlNode.isInstanceOf[SqlShowCurrentDatabase]
|| sqlNode.isInstanceOf[SqlShowTables]
|| sqlNode.isInstanceOf[SqlShowFunctions]
+ || sqlNode.isInstanceOf[SqlShowJars]
|| sqlNode.isInstanceOf[SqlShowModules]
|| sqlNode.isInstanceOf[SqlShowViews]
|| sqlNode.isInstanceOf[SqlShowPartitions]
diff --git
a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/operations/SqlToOperationConverterTest.java
b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/operations/SqlToOperationConverterTest.java
index 038625c..88ab060 100644
---
a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/operations/SqlToOperationConverterTest.java
+++
b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/operations/SqlToOperationConverterTest.java
@@ -62,6 +62,7 @@ import org.apache.flink.table.operations.UseModulesOperation;
import org.apache.flink.table.operations.command.AddJarOperation;
import org.apache.flink.table.operations.command.ResetOperation;
import org.apache.flink.table.operations.command.SetOperation;
+import org.apache.flink.table.operations.command.ShowJarsOperation;
import org.apache.flink.table.operations.ddl.AlterDatabaseOperation;
import org.apache.flink.table.operations.ddl.AlterTableAddConstraintOperation;
import org.apache.flink.table.operations.ddl.AlterTableDropConstraintOperation;
@@ -1354,7 +1355,7 @@ public class SqlToOperationConverterTest {
}
@Test
- public void testAddJars() {
+ public void testAddJar() {
List<String> jarPaths =
Arrays.asList(
"./test.\njar",
@@ -1364,11 +1365,20 @@ public class SqlToOperationConverterTest {
"test\\ jar.jar",
"oss://path/helloworld.go");
for (String path : jarPaths) {
- validateJarPath(path, " ADD JAR '%s'");
+ validateJarPath(path, "ADD JAR '%s'");
}
}
@Test
+ public void testShowJars() {
+ final String sql = "SHOW JARS";
+ Operation operation = parse(sql, SqlDialect.DEFAULT);
+ assert operation instanceof ShowJarsOperation;
+ final ShowJarsOperation showModulesOperation = (ShowJarsOperation)
operation;
+ assertEquals("SHOW JARS", showModulesOperation.asSummaryString());
+ }
+
+ @Test
public void testSet() {
Operation operation1 = parse("SET", SqlDialect.DEFAULT);
assertTrue(operation1 instanceof SetOperation);