[ https://issues.apache.org/jira/browse/FLINK-18640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17541275#comment-17541275 ]
Yaroslav Tkachenko commented on FLINK-18640: -------------------------------------------- I'd love to address this issue, because currently, PostgresDialect is not very useful in real production scenarios, e.g. keywords used as column names are quite common. I want to propose a simple and elegant (in my opinion) change to address the issue (I can create a PR if we agree here): {code:java} public String quoteIdentifier(String identifier) { // skip if already quoted if (identifier.startsWith("\"")) { return identifier; } else { return "\"" + identifier + "\""; } } {code} Why I consider it the best solution: * It's very simple, minimum changes. * Since Postgres identifiers can have dots, it's very hard to understand when it's safe to split them for escaping. E.g., schema.table_name is fine to escape like "schema"."table_name", but you can't do the same for schema.table.name. So, my proposal - just let the user deal with it. They know how to escape properly. That's why _quoteIdentifier_ checks for quoting first. * In most of the scenarios though, identifiers won't have dots, so it's safe to quote them. Thoughts? > Fix PostgresDialect doesn't quote the identifiers > ------------------------------------------------- > > Key: FLINK-18640 > URL: https://issues.apache.org/jira/browse/FLINK-18640 > Project: Flink > Issue Type: Bug > Components: Connectors / JDBC, Table SQL / Ecosystem > Affects Versions: 1.9.1, 1.10.1 > Reporter: 毛宗良 > Priority: Not a Priority > Labels: auto-deprioritized-major, auto-deprioritized-minor, > pull-request-available > > Flink jdbc throw exceptions when read a postgresql table with scheam, like > "ods.t_test". BY debugging the source code, I found a bug about dealing the > table name. -- This message was sent by Atlassian Jira (v8.20.7#820007)