Workaround PostgreSQL issues in testsuite

Description

Currently there are two specific issues with the Hibernate test suite running on PostgreSQL which requires specific work-arounds. Note that both of these really are bugs in the PostgreSQL driver/backend. But I'd like to not keep getting spammed from CC builds because of this

1) unspecified primitive char values. java initializes these as '\0'. For char values mapped via CharacterType, we then take that and bind it to the PS as a string (setString). The problem is that the PostgreSQL backend is all C, where '\0' has special meaning (it used as the "string terminator" character). Anyway, the driver/backend do not handle this value even though it is in fact a valid java character. The workaround is to convert these to non-primitive java.lang.Character and set to null.

2) I dont even know how to categorize this one yet really. Its a strange issue in regards to transaction state maintained by the driver/connection in autocommit scenarios. This has an interesting manifestation in the Hibernate testsuite. Say I have two test methods, testA and testB. testA executes first, followed by testB. testA is explicitly checking some exception condition and is using auto-commit. So the test "passes" (by the exception occurring and being caught/handled). The connection is returned to the pool. Next testB starts, and it is using explicit transactions. It fails. The reason for the failure is a driver error: [ERROR: current transaction is aborted, commands ignored until end of transaction block]. The cause is because the connection did not "clean itself up" after the last test. The work around here is to use explicit transactions in testA...

Environment

PostgreSQL

Activity

Show:
Steve Ebersole
June 8, 2007, 12:48 AM

trunk / 3.2

Steve Ebersole
March 21, 2011, 7:05 PM

Bulk closing stale resolved issues

Assignee

Steve Ebersole

Reporter

Steve Ebersole

Fix versions

Labels

None

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Priority

Major
Configure