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 

Reply via email to