You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.5 KiB
Java
87 lines
3.5 KiB
Java
package at.procon.ted.util;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import java.sql.Connection;
|
|
import java.sql.DriverManager;
|
|
import java.sql.ResultSet;
|
|
import java.sql.Statement;
|
|
|
|
/**
|
|
* Utility to inspect database objects that depend on ENUM types.
|
|
*/
|
|
@Slf4j
|
|
public class InspectDatabase {
|
|
|
|
private static final String DB_URL = "jdbc:postgresql://94.130.218.54:5432/Sales";
|
|
private static final String DB_USER = "postgres";
|
|
private static final String DB_PASSWORD = "PDmXRx0Rbk9OFOn9qO5Gm/mPCfqW8zwbZ+/YIU1lySc=";
|
|
|
|
public static void main(String[] args) {
|
|
try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD)) {
|
|
log.info("Connected to database");
|
|
|
|
// Check for views
|
|
log.info("\n=== VIEWS ===");
|
|
try (Statement stmt = conn.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT schemaname, viewname FROM pg_views WHERE schemaname ILIKE 'ted'")) {
|
|
while (rs.next()) {
|
|
log.info("View: {}.{}", rs.getString(1), rs.getString(2));
|
|
}
|
|
}
|
|
|
|
// Check for functions
|
|
log.info("\n=== FUNCTIONS ===");
|
|
try (Statement stmt = conn.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT n.nspname, p.proname FROM pg_proc p " +
|
|
"JOIN pg_namespace n ON p.pronamespace = n.oid " +
|
|
"WHERE n.nspname ILIKE 'ted'")) {
|
|
while (rs.next()) {
|
|
log.info("Function: {}.{}", rs.getString(1), rs.getString(2));
|
|
}
|
|
}
|
|
|
|
// Check for indexes
|
|
log.info("\n=== INDEXES ===");
|
|
try (Statement stmt = conn.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT schemaname, tablename, indexname FROM pg_indexes WHERE schemaname ILIKE 'ted'")) {
|
|
while (rs.next()) {
|
|
log.info("Index: {}.{} on table {}", rs.getString(1), rs.getString(3), rs.getString(2));
|
|
}
|
|
}
|
|
|
|
// Check column types
|
|
log.info("\n=== ENUM COLUMNS ===");
|
|
try (Statement stmt = conn.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT table_schema, table_name, column_name, udt_name " +
|
|
"FROM information_schema.columns " +
|
|
"WHERE table_schema ILIKE 'ted' AND table_name = 'procurement_document' " +
|
|
"AND column_name IN ('notice_type', 'contract_nature', 'procedure_type', 'vectorization_status')")) {
|
|
while (rs.next()) {
|
|
log.info("Column: {}.{}.{} -> Type: {}",
|
|
rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4));
|
|
}
|
|
}
|
|
|
|
// Check for ENUM types
|
|
log.info("\n=== ENUM TYPES ===");
|
|
try (Statement stmt = conn.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT n.nspname, t.typname FROM pg_type t " +
|
|
"JOIN pg_namespace n ON t.typnamespace = n.oid " +
|
|
"WHERE n.nspname ILIKE 'ted' AND t.typtype = 'e'")) {
|
|
while (rs.next()) {
|
|
log.info("ENUM Type: {}.{}", rs.getString(1), rs.getString(2));
|
|
}
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
log.error("Error: {}", e.getMessage(), e);
|
|
}
|
|
}
|
|
}
|