fix(agents): restore kingbase metadata visibility
This commit is contained in:
parent
38253f2602
commit
a9d158f2b5
|
|
@ -46,6 +46,9 @@ public final class KingbaseAgent extends PostgresLikeAgent {
|
|||
|
||||
@Override
|
||||
public List<DatabaseInfo> listDatabases() {
|
||||
if (!isMysqlCompatMode()) {
|
||||
return super.listDatabases();
|
||||
}
|
||||
return unchecked(() -> {
|
||||
try (PreparedStatement stmt = requireConnected().prepareStatement("SELECT current_database() AS database_name");
|
||||
ResultSet rs = stmt.executeQuery()) {
|
||||
|
|
@ -59,6 +62,9 @@ public final class KingbaseAgent extends PostgresLikeAgent {
|
|||
|
||||
@Override
|
||||
public List<String> listSchemas() {
|
||||
if (!isMysqlCompatMode()) {
|
||||
return super.listSchemas();
|
||||
}
|
||||
return unchecked(() -> {
|
||||
List<String> result = new ArrayList<>();
|
||||
String sql = "SELECT schema_name " +
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.dbx.agent.kingbase;
|
||||
|
||||
import com.dbx.agent.DatabaseAgent;
|
||||
import com.dbx.agent.DatabaseInfo;
|
||||
import com.dbx.agent.test.JdbcFakeExecutionBehaviorTest;
|
||||
import com.dbx.agent.test.TestSupport;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
|
|
@ -16,6 +17,7 @@ import java.sql.Statement;
|
|||
import java.sql.Timestamp;
|
||||
import java.sql.Types;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
class KingbaseAgentTest extends JdbcFakeExecutionBehaviorTest {
|
||||
|
|
@ -51,6 +53,36 @@ class KingbaseAgentTest extends JdbcFakeExecutionBehaviorTest {
|
|||
Assertions.assertEquals("SELECT current_database() AS database_name", sql.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
void regularListDatabasesUsesPostgresCatalog() {
|
||||
List<String> sql = new ArrayList<>();
|
||||
KingbaseAgent agent = new KingbaseAgent();
|
||||
TestSupport.setPrivateConnection(agent, preparedConnection(sql, resultSet(
|
||||
new String[]{"datname"},
|
||||
new Object[][]{{"app"}, {"analytics"}}
|
||||
)));
|
||||
|
||||
List<DatabaseInfo> databases = agent.listDatabases();
|
||||
Assertions.assertEquals(2, databases.size());
|
||||
Assertions.assertEquals("app", databases.get(0).getName());
|
||||
Assertions.assertEquals("analytics", databases.get(1).getName());
|
||||
Assertions.assertTrue(sql.get(0).contains("FROM pg_database"), sql.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
void regularListSchemasKeepsKingbaseSystemSchemas() {
|
||||
List<String> sql = new ArrayList<>();
|
||||
KingbaseAgent agent = new KingbaseAgent();
|
||||
TestSupport.setPrivateConnection(agent, preparedConnection(sql, resultSet(
|
||||
new String[]{"schema_name"},
|
||||
new Object[][]{{"public"}, {"sys_catalog"}}
|
||||
)));
|
||||
|
||||
Assertions.assertEquals(Arrays.asList("public", "sys_catalog"), agent.listSchemas());
|
||||
Assertions.assertTrue(sql.get(0).contains("pg_catalog.pg_namespace"), sql.get(0));
|
||||
Assertions.assertFalse(sql.get(0).contains("SYS%"), sql.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
void mysqlCompatListTablesUsesInformationSchema() {
|
||||
List<String> sql = new ArrayList<>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue