openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ravi P Palacherla (JIRA)" <j...@apache.org>
Subject [jira] Created: (OPENJPA-1133) DBDictionary.getPlaceholderValueString returns 0 for boolean which fails in PostgreSQL database.
Date Thu, 11 Jun 2009 02:03:07 GMT
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.


Mime
View raw message