Postgres 报告 coltype -7 (BIT) 但 qualified-name bool

Postgres reports coltype -7 (BIT) but qualified-name bool

我使用 jdbc 元数据读取列的类型。

使用此 java-代码

columns = metadata.getColumns(catalogName, schema.getName(), table.getName(), "%");
while (columns.next()) {
  final String fqtn = columns.getString(6);
  int type = columns.getInt(5);
  LOG.fine("Column '" + table.getName() + "." + columnName + "' is type: " + type + " and of fqtn:" + fqtn + "!");
}

我记录了这个输出:

Column 'BUILD_RESULT.finished' is type: -7 and of fqtn:bool!

我查看 java.sql.Types 并查找 -7 并找到 BIT

因此类型 -7 是 BIT 但名称被报告为 bool

BIT 和 BOOL 有区别:

为什么java.sql.Types中有更好匹配的类型16(BOOLEAN)会报bit(-7)?

我安装了一个 sql-manager 并像这样检查字段 BUILD_RESULT.finished:

它是布尔值,不是位。为什么 postgres jdbc 告诉我这是一个 BIT?

编辑:添加 jdbc-jar

版本

我没有 jar-name 但我有 Manifest 的信息:

Manifest-Version: 1.0
Bnd-LastModified: 1455914805118
Build-Jdk: 1.8.0_66
Built-By: vladimirsitnikov
Bundle-Activator: org.postgresql.osgi.PGBundleActivator
Bundle-Copyright: Copyright (c) 2003-2015, PostgreSQL Global Development
  Group
Bundle-Description: Java JDBC 4.1 (JRE 7+) driver for PostgreSQL databas
 e
Bundle-DocURL: http://jdbc.postgresql.org/
Bundle-License: http://www.postgresql.org/about/licence/
Bundle-ManifestVersion: 2
Bundle-Name: PostgreSQL JDBC Driver JDBC41
Bundle-SymbolicName: org.postgresql.jdbc41
Bundle-Vendor: PostgreSQL Global Development Group
Bundle-Version: 9.4.1208.jre7

select version()表示:PostgreSQL 9.4.25 on x86_64-pc-linux-gnu (Ubuntu 9.4.25-1.pgdg18.04+1),由gcc编译(Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64 位

bug 7 年未解决:https://github.com/pgjdbc/pgjdbc/issues/367

感谢@a_horse_with_no_name