[ 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)