У меня есть PostgreSQL таблица
create table test (
id int,
name varchar(2),
active boolean,
long_id bigint,
created timestamptz);
)
Я хочу получить имя, тип и размер каждого столбца в этой таблице. Это мой код:
public static void main(final String[] args) throws SQLException {
final Connection connection = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/test", "postgres", "123");
final DatabaseMetaData metaData = connection.getMetaData();
try (final ResultSet resultSet = metaData.getColumns("public", null, "test", null)) {
while (resultSet.next()) {
System.out.println(resultSet.getString("COLUMN_NAME") + " " + resultSet.getInt("DATA_TYPE") + " " + resultSet.getInt("COLUMN_SIZE"));
}
}
}
Это вывод
id 4 10
name 12 2
active -7 1
long_id -5 19
created 93 35
В третьем столбце указан размер столбца, например, для логического значения active это 1 байт. Но почему он показывает 10 байтов для значения id (которое равно int в PostgreSQL) вместо 4?