I read the type of a column using the jdbc metadata.
Using this java-code
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 "!");
}
I log this output:
Column 'BUILD_RESULT.finished' is type: -7 and of fqtn:bool!
I look into java.sql.Types and looking for -7 and found BIT
So type -7 is BIT but name is reported bool.
There is a difference between BIT and BOOL:
- BIT can be
0or1 - BOOL can be
trueorfalse.
Why is bit (-7) reported when there is a better matching type 16 (BOOLEAN) in java.sql.Types?
I installed a sql-manager and inspect the field BUILD_RESULT.finished like this:
It is boolean, not bit. Why is postgres jdbc telling me it is a BIT?
EDIT: Add version of jdbc-jar
I do not have the jar-name but I have the Manifest's info:
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
And select version() said: PostgreSQL 9.4.25 on x86_64-pc-linux-gnu (Ubuntu 9.4.25-1.pgdg18.04 1), compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit
CodePudding user response:
The bug is unsolved since 7 years: https://github.com/pgjdbc/pgjdbc/issues/367
Credits to a @a_horse_with_no_name


