fix(kingbase): quote MySQL-compatible identifiers
This commit is contained in:
39 files changed
+373
-23
No files matched your search
@@ -20,6 +20,16 @@ public abstract class AbstractJdbcAgent extends BaseDatabaseAgent {
|
||||
return connection;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifierQuote() {
|
||||
try {
|
||||
String quote = requireConnected().getMetaData().getIdentifierQuoteString();
|
||||
return quote == null || quote.trim().isEmpty() ? "" : quote.trim();
|
||||
} catch (Exception ignored) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void connect(ConnectParams params) {
|
||||
uncheckedVoid(() -> {
|
||||
|
||||
@@ -16,6 +16,7 @@ public final class AgentProtocol {
|
||||
public static final String METHOD_CANCEL_SESSION = "cancel_session";
|
||||
public static final String METHOD_TEST_CONNECTION = "test_connection";
|
||||
public static final String METHOD_VALIDATE_CONNECTION = "validate_connection";
|
||||
public static final String METHOD_CONNECTION_INFO = "connection_info";
|
||||
public static final String METHOD_LIST_DATABASES = "list_databases";
|
||||
public static final String METHOD_LIST_SCHEMAS = "list_schemas";
|
||||
public static final String METHOD_LIST_TABLES = "list_tables";
|
||||
@@ -100,6 +101,7 @@ public final class AgentProtocol {
|
||||
METHOD_CONNECT,
|
||||
METHOD_TEST_CONNECTION,
|
||||
METHOD_VALIDATE_CONNECTION,
|
||||
METHOD_CONNECTION_INFO,
|
||||
METHOD_LIST_DATABASES,
|
||||
METHOD_LIST_SCHEMAS,
|
||||
METHOD_LIST_TABLES,
|
||||
|
||||
@@ -13,6 +13,10 @@ public interface DatabaseAgent {
|
||||
|
||||
boolean testConnection(ConnectParams params);
|
||||
|
||||
default String getIdentifierQuote() {
|
||||
return "";
|
||||
}
|
||||
|
||||
List<DatabaseInfo> listDatabases();
|
||||
|
||||
List<String> listSchemas();
|
||||
|
||||
@@ -125,6 +125,9 @@ public final class JsonRpcServer {
|
||||
return Collections.singletonMap("ok", true);
|
||||
}
|
||||
ensureLiveConnection(method);
|
||||
if (AgentProtocol.METHOD_CONNECTION_INFO.equals(method)) {
|
||||
return Collections.singletonMap("identifierQuote", agent.getIdentifierQuote());
|
||||
}
|
||||
if (AgentProtocol.METHOD_LIST_DATABASES.equals(method)) {
|
||||
return agent.listDatabases();
|
||||
}
|
||||
|
||||
@@ -28,6 +28,11 @@ public abstract class PostgresLikeAgent extends AbstractJdbcAgent {
|
||||
return mysqlCompatMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifierQuote() {
|
||||
return mysqlCompatMode ? "`" : super.getIdentifierQuote();
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryResult executeQuery(String sql, String schema, ExecuteQueryOptions options) {
|
||||
return JdbcExecutor.current().execute(
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"connect",
|
||||
"test_connection",
|
||||
"validate_connection",
|
||||
"connection_info",
|
||||
"list_databases",
|
||||
"list_schemas",
|
||||
"list_tables",
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
"cancel_session",
|
||||
"test_connection",
|
||||
"validate_connection",
|
||||
"connection_info",
|
||||
"list_databases",
|
||||
"list_schemas",
|
||||
"list_tables",
|
||||
|
||||
Reference in new issue
Block a user