Thread: BUG #15158: JDBC driver has faulty comparison in method:haveMinimumServerVersion(String ver)

The following bug has been logged on the website:

Bug reference:      15158
Logged by:          Brian K
Email address:      harvestmoon299@gmail.com
PostgreSQL version: 10.3
Operating system:   Windows
Description:

in org.postgresql.jdbc2.AbstractJdbc2Connection on line 960, there is a
javadoc comment that identifies the problem this way:

"Is the server we are connected to running at least this version? This
comparison method will fail whenever a major or minor version goes to two
digits (10.3.0) or (7.10.1). "

the method GetTransactionIsolation() calls this method in line 757 with the
following code:
if (haveMinimumServerVersion("7.3"))

This determines whether to run the query: "SHOW TRANSACTION ISOLATION LEVEL"
or the update: "SHOW TRANSACTION ISOLATION LEVEL".  The query returns
appropriately, while the update throws the sql error: "This recordset is
closed".

As expected, testing whether version 10.3 has a minimum server version of
7.3 yields "false".  It looks to me that the calling code is expecting
"true" for it to work with postgres 10.3.

I am encountering this error when I try to use postgres 10.3 as the
datastore for a project created from the Apache Isis "SimpleApp"
archetype.

Do you know why this issue is identified in the code but not dealt with?

Thank you!
Brian


Brian,

That code is long gone from the driver. That class doesn't even exist any more. I would suggest you upgrade your driver.

Thanks

Dave Cramer

On 16 April 2018 at 16:35, PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      15158
Logged by:          Brian K
Email address:      harvestmoon299@gmail.com
PostgreSQL version: 10.3
Operating system:   Windows
Description:       

in org.postgresql.jdbc2.AbstractJdbc2Connection on line 960, there is a
javadoc comment that identifies the problem this way:

"Is the server we are connected to running at least this version? This
comparison method will fail whenever a major or minor version goes to two
digits (10.3.0) or (7.10.1). "

the method GetTransactionIsolation() calls this method in line 757 with the
following code:
if (haveMinimumServerVersion("7.3"))

This determines whether to run the query: "SHOW TRANSACTION ISOLATION LEVEL"
or the update: "SHOW TRANSACTION ISOLATION LEVEL".  The query returns
appropriately, while the update throws the sql error: "This recordset is
closed".

As expected, testing whether version 10.3 has a minimum server version of
7.3 yields "false".  It looks to me that the calling code is expecting
"true" for it to work with postgres 10.3.

I am encountering this error when I try to use postgres 10.3 as the
datastore for a project created from the Apache Isis "SimpleApp"
archetype.

Do you know why this issue is identified in the code but not dealt with?

Thank you!
Brian