Hi Rainer,
I fully agree with you, it's a good idea to log and wait, as it seems very hard to reproduce. Anyway it is not critical (it's an insert used for statistic, so if the failure is rare that does not matter much). I will do that and inform you if I get something (I am assuming you are as curious as me to know what might happen?).

I did not have time to used prepared statement yet, but I read about them and looked at the example. But I was wondering if setting PreparedStatementsEnabled to true is enough to get the prepared statement to work with an insert or an update (I mean not preparing the statement at each call), i.e. if I can still do at each call:

rec.create(GeneralApp.db.T_SEARCH_TERMS_LOG);
rec.setValue(GeneralApp.db.T_SEARCH_TERMS_LOG.C_SEARCH_TERMS, searchTerms);
...
rec.update(conn);

Or if I have to prepare something first, then set some parameter at each insert and do the update. That I could not find in the documentation (for the query it is very clear from the examples).

//Alain

On 04/03/2013 09:49, Rainer Döbele wrote:
Hi Alain,

as far as I can tell we have not deliberately fixed this.
As with most problems: if we cannot find a way to reproduce it - it will be 
almost impossible to fix.

At the moment I cannot see, how a statement for Oracle without the TO_DATE() 
phrase can be generated at all.
I.E. for the DATE_TIME type is should always look like this: 
TO_DATE('2013-03-03 14:22:33', 'YYYY-MM-DD HH24:MI:SS')

What you can do:
1. subclass the DBDatabaseDriverOracle class
2. override getSQLDateTimeString, call the base implementation and log the 
result. You may even check for TO_DATE and set a breakpoint if it is missing.
e.g.:
     @Override
     protected String getSQLDateTimeString(Object value, int sqlTemplate, int 
sqlPattern, int sqlCurrentDate)
     {
         String res = super.getSQLDateTimeString(value, sqlTemplate, 
sqlPattern, sqlCurrentDate);
         if (res.indexOf('TO_DATE'))<0)
         {
             log.warn("Something's wrong here: "+value);
         }
         return res;
     }

I'd be curious to know if it even gets in there.

Regards
Rainer

BTW: Have to tried with prepared statements yet?

Reply via email to