[
https://issues.apache.org/jira/browse/FLINK-21572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jark Wu closed FLINK-21572.
---------------------------
Resolution: Duplicate
> USE DATABASE & USE CATALOG fails with quoted identifiers containing
> characters to be escaped in Flink SQL client.
> ------------------------------------------------------------------------------------------------------------------
>
> Key: FLINK-21572
> URL: https://issues.apache.org/jira/browse/FLINK-21572
> Project: Flink
> Issue Type: Bug
> Components: Table SQL / Client
> Affects Versions: 1.12.0, 1.12.1
> Reporter: Xiaoguang Sun
> Priority: Minor
> Attachments: image-2021-03-03-10-38-27-341.png,
> image-2021-03-03-10-38-59-521.png
>
>
> SQL Client fails when catalog name or database name are quoted and contains
> characters that must be escaped, for example pulsar-flink connector uses
> `tenant/namespace` as database name.
> It was introduced with [PR Flink
> 18621|https://github.com/apache/flink/pull/12923]. The reason is that sql
> statements restored from parsed sql operation were not quote even if user
> actually used it. It can be easily fixed by escaping database name and
> catalog name before using it. Like these
> {code:java}
> // code java
> public class SqlUseCatalog extends SqlCall {
>
> @@ -63,6 +65,6 @@ public class SqlUseCatalog extends SqlCall {
> }
>
> public String catalogName() {
> - return catalogName.getSimple();
> + return escapeIdentifier(catalogName.getSimple());
> }
> }
> @@ -57,7 +59,9 @@ public class SqlUseDatabase extends SqlCall {
> }
>
> public String[] fullDatabaseName() {
> - return databaseName.names.toArray(new String[0]);
> + return databaseName.names.stream()
> + .map(EncodingUtils::escapeIdentifier)
> + .toArray(String[]::new);
> }{code}
> !image-2021-03-03-10-38-59-521.png!
--
This message was sent by Atlassian Jira
(v8.3.4#803005)