DBDictionary.getPlaceholderValueString returns 0 for boolean which fails in
PostgreSQL database.
------------------------------------------------------------------------------------------------
Key: OPENJPA-1133
URL: https://issues.apache.org/jira/browse/OPENJPA-1133
Project: OpenJPA
Issue Type: Bug
Components: query
Affects Versions: 2.0.0
Environment: openJPA trunk.
PostgreSQL 8.3
Reporter: Ravi P Palacherla
When DBDictionary.getPlaceholderValueString is called with Types.BIT, it
returns "0".
PostgreSQL actually requires that a boolean be set. It cannot handle a numeric
argument.
Fix Description:
Overriden DBDictionary.getPlaceholderValueString() inside PostgresDictionary to
process Types.BIT correctly.
Now, the method returns 'false' value when Types.BIT is passed as Column.type.
Test case:
I am unable to provide a test case.
The above bug is exposed from Kodo product which internally uses openJPA.
When a query is made on a subclass using kodo api.
Kodo generates an SQL ( with help of openJPA) that has UNION in it.
It generates a SQL similar to the following:
SELECT 0 FROM public.typeofvessel t0 UNION ALL SELECT t0.guidance FROM
public.typeofweapon t0
It got 0 from the openJPA DBDictionary.getPlaceholderValueString as the
guidance data type is boolean.
The above SQL will throw an exception in postgreSQL db saying:
ERROR: UNION types integer and boolean cannot be matched.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.