fix(kingbase): quote MySQL-compatible identifiers

This commit is contained in:
zipg authored and GitHub committed 2026-07-13 18:51:32 +08:00
1 parent 5ceca7fb3e
commit d1cce3ed1e
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",