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 有区别:
- BIT 可以是
0
或 1
- BOOL 可以是
true
或 false
。
为什么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
我使用 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 有区别:
- BIT 可以是
0
或1
- BOOL 可以是
true
或false
。
为什么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