Con Postgres (e il suo driver JDBC) puoi fare quanto segue:
PreparedStatement pstmt = con.prepareStatement("select ... ");
ResultSetMetaData meta = pstmt.getMetaData();
for (int i=1; i <= meta.getColumnCount(); i++)
{
System.out.println("Column name: " + meta.getColumnName(i) + ", data type: " + meta.getColumnTypeName(i));
}
Nota che non è necessario aggiungere un where false o limit 0 alla dichiarazione. La chiamata a prepareStatement() non esegue effettivamente la query.