Wow, that is a wacky one..it seems most likely that it is a driver
issue (i can promise that there is no "if(sql.length() == 1983)
blowChunks();" code in SQL Maps.
Can you try it with the latest Oracle drivers? From all reports, the
10g drivers resolved a ton of bugs that were popping up.
It might not hurt to update to a more recent iBATIS build, too.
Larry
On 9/7/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Hi there!
>
> When digging for the error in my previous message:
>
> "Possible to set timeout on the connection ?"
>
> I came over a very strange bug somewhere from SQLMap, the Oracle
> driver classes12.jar and to the database Oracle 9.2.
>
> I do a plain SQL without binding variables (I do $complexWhere$ ->
> myBean.geComplexWhere) in the
> xml file) the query looks like this from the debug info:
>
> DEBUG 2005-09-07 11:55:50,003
> com.ibatis.common.jdbc.logging.PreparedStatementLogProxy (Line: 48) -
> {pstm-100007}
> PreparedStatement: select C.COMPANYID, C.DMID, .......... where ...
> and (( C.ORGANIZATIONNO like '%Galleri
> Henrik%'
> or lower(C.BUSINESSNAME) like
> lower('%Galleri Henrik%')
> or lower(C.MARKETNAME) like
> lower('%Galleri Henrik%') ......) ) )
> order by .....
>
> DEBUG 2005-09-07 11:55:50,023
> com.ibatis.common.jdbc.logging.PreparedStatementLogProxy (Line: 49) -
> {pstm-100007}Parameters: []
> DEBUG 2005-09-07 11:55:50,033
> com.ibatis.common.jdbc.logging.PreparedStatementLogProxy (Line: 50) -
> {pstm-100007} Types: []
>
> (mine lineshifts in the query, and mine replacments of sql with .....)
>
> ---
>
> The query string is of 1983 length (if you count the spaces before the
> "select" statment),
> or 1973 without the spaces, no tail whitespaces counted. When I search e.g.
> for 'Galleri Henrik',
> the query string get exactly total 1983 of length. But lets say it's 1983
> then.
>
> SO WHEN the query string is of exactly 1983 of length the SQLMap connection
> hangs and I get some kind
> of lock in the database (CURSOR BIND). Believe it or not !!! I still can't
> believe it :-)
>
> One Oracle guru told me that the case could be that Oracle are not able to
> return the result
> back again after doing this query and goes into somekind of wait modus.
> Waiting for "something"
> for the connection ?? I don't have a clue.
>
> It's nothing wrong with the data or the SQL. I can copy&paste this query
> string into a SQL
> tool, using the same Oracle JDBC driver as SQLMap does (I use DbVisualizer),
> and run the
> query with or without the whitespaces in front, and the query runs just fine
> under 1 second.
>
> This make me think, can this has something with SQLMap to do ? Do SQLMap
> somekind of string
> manipulating that could result in some kind of "modus" when the query string
> is of 1983 in length ?
> Oracle can handle more then that of course and should be discovered for a
> long time agao if that
> was the case ? Same with the driver, but what about SQLMap ??? A bug ?
>
> It's a actually unbelievably this case, when the query string is less or
> larger than 1983, no problem
> at all, makes it even more strange. As my previous e-mail, when size is 1982
> or 1984 no problem,
> And it's not related to Galleri Henrik .. I can typ in '1234567 123456' ->
> same error, it's the length !!
>
> --
>
> Have you heard of this before ? :-) Any wild ideas ?? Something I should test
> ?
>
> --
>
> The quick solution is to remove many whitespaces in the sql string = become
> less that 1983
> of length with normal searches. Not that quick is to make binding variables.
> Tested both, works just fine.
>
> We use the SQLMap version available in january 2005.
>
> Clues ?
>
>
> Cheers,
> Erlend
>