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.

Reply via email to