openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Donald Woods <dwo...@apache.org>
Subject Re: Wrong prepared statements generated when directory called 'mysql' is in the path of embedded derby location
Date Wed, 16 Dec 2009 17:57:58 GMT
Seems like a bug related to the following code in 
DBDictionaryFactory.java, where the connection URL is being inspected 
before the driver name -


     public static DBDictionary calculateDBDictionary(JDBCConfiguration 
conf, String url, String driver, String props) {
         String dclass = dictionaryClassForString(getProtocol(url),conf);
         if (dclass == null)
             dclass = dictionaryClassForString(driver, conf);
         if (dclass == null)
             return null;
         return newDBDictionary(conf, dclass, props);
     }


The above calls the below method, which performs simple substring 
compares for the supported databases -

     private static String dictionaryClassForString(String prod
         , JDBCConfiguration conf) {
         if (StringUtils.isEmpty(prod))
             return null;
         prod = prod.toLowerCase();

         PluginValue dbdictionaryPlugin = ((JDBCConfigurationImpl) conf)
             .dbdictionaryPlugin;

         if (prod.indexOf("oracle") != -1)
             return dbdictionaryPlugin.unalias("oracle");
         if (prod.indexOf("sqlserver") != -1)
             return dbdictionaryPlugin.unalias("sqlserver");
         if (prod.indexOf("jsqlconnect") != -1)
             return dbdictionaryPlugin.unalias("sqlserver");
         if (prod.indexOf("mysql") != -1)
             return dbdictionaryPlugin.unalias("mysql");
         if (prod.indexOf("postgres") != -1)
             return dbdictionaryPlugin.unalias("postgres");
. . .


-Donald



Milinda Pathirage wrote:
> Hi Devs,
> 
> There is a strange bug which caused JDBC exceptions when my embdded derby
> path contains directory called 'mysql' or 'oracle'. I am using OpenJPA 1.1.
> Is this a known bug. When this happens embedded derby URL is look like
> following:
> 
> jdbc:derby:/home/milinda/mysql/bps/database/daojpa
> 
> Do anyone have any idea about the reason for incorrect generation of
> prepared statement.
> 
> Thanks
> Milinda
> 
> 
> 

Mime
View raw message