feat(postgresql): Added database user query function

This commit is contained in:
Sylphy
2025-04-22 13:43:47 +08:00
parent 9c82ed6fce
commit 3cefa0c4c7
9 changed files with 70 additions and 15 deletions

View File

@ -329,7 +329,7 @@ public class PostgreSQLMetaData extends DefaultMetaService implements MetaData {
if (resultSet.next()) {
String nspname = resultSet.getString("nspname");
String relname = resultSet.getString("relname");
String typname = resultSet.getString("typname");
String typname = getConversionType(resultSet.getString("typname"));
String seqcache = resultSet.getString("seqcache");
String rolname = resultSet.getString("rolname");
String comment = resultSet.getString("comment");
@ -339,12 +339,6 @@ public class PostgreSQLMetaData extends DefaultMetaService implements MetaData {
String seqmin = resultSet.getString("seqmin");
Boolean seqcycle = resultSet.getBoolean("seqcycle");
switch (typname) {
case "int2" -> typname = "SMALLINT";
case "int8" -> typname = "BIGINT";
default -> typname = "INTEGER";
}
stringBuilder.append(CREATE_SEQUENCE).append(getMetaDataName(nspname, relname)).append(NEW_LINE);
if (Double.compare(databaseProductVersion, 10.0) >= 0) {
@ -406,7 +400,7 @@ public class PostgreSQLMetaData extends DefaultMetaService implements MetaData {
return Sequence.builder()
.nspname(resultSet.getString("nspname"))
.relname(resultSet.getString("relname"))
.typname(resultSet.getString("typname"))
.typname(getConversionType(resultSet.getString("typname")))
.seqcache(resultSet.getString("seqcache"))
.rolname(resultSet.getString("rolname"))
.comment(resultSet.getString("comment"))
@ -420,4 +414,25 @@ public class PostgreSQLMetaData extends DefaultMetaService implements MetaData {
return null;
});
}
@Override
public List<String> usernames(Connection connection) {
List<String> usernames = new ArrayList<>();
return SQLExecutor.getInstance().preExecute(connection, EXPORT_USERS_SQL, null, resultSet -> {
while (resultSet.next()) {
String username = resultSet.getString("username");
usernames.add(username);
}
return usernames;
});
}
private String getConversionType(String typname) {
switch (typname) {
case "int2" -> typname = "SMALLINT";
case "int8" -> typname = "BIGINT";
default -> typname = "INTEGER";
}
return typname;
}
}

View File

@ -675,4 +675,10 @@ public class SQLConst {
pg_namespace n ON n.oid = c.relnamespace
WHERE n.nspname = ?;
""";
public static final String EXPORT_USERS_SQL = """
SELECT rolname AS username
FROM pg_roles
ORDER BY rolname;
""";
}