[ http://issues.apache.org/jira/browse/TORQUE-57?page=all ]

Thomas Fischer updated TORQUE-57:
---------------------------------

    Affects Version/s: 3.2
                           (was: 3.2.1)

> escapeText() method in DBOracle returns false but escape characters are 
> required in Oracle in certain cases
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: TORQUE-57
>                 URL: http://issues.apache.org/jira/browse/TORQUE-57
>             Project: Torque
>          Issue Type: Bug
>          Components: Runtime
>    Affects Versions: 3.2
>         Environment: All OS, All hardware, Oracle Data base
>            Reporter: parthasarathy
>         Assigned To: Thomas Fischer
>            Priority: Minor
>             Fix For: 3.2.1
>
>
> Oracle uses escape characters for interpreting certain special characters 
> like "_" literally. However the escapeText() method in 
> org.apache.torque.adapter.DBOracle class returns false. The value returned by 
> this method is used by the SqlExpression.quoteAndEscape method. As the 
> escapeText method returns false a where clause condition: like 'abc\_%' will 
> get translated to: like 'abc\%' (note the missing "_") in the 
> SQLExpression.buildLike method. Sybase and SQL Server also has the same 
> Escape behavior but the escapeText() method in DBSybase and DBMSSQL returns 
> true.
> Below is a copy of the source code in DBOracle.
>     /**
>      * This method is for the SqlExpression.quoteAndEscape rules.  The rule 
> is,
>      * any string in a SqlExpression with a BACKSLASH will either be changed 
> to
>      * "\\" or left as "\".  SapDB does not need the escape character.
>      *
>      * @return false.
>      */
>     public boolean escapeText()
>     {
>         return false;
>     }
> The usecase I am trying out is one where a column in the table queried has 
> values 'abc' and    'a_c'. I need to query the record that has the column 
> value as 'a_c'. If I issue a query without escapecharacters (where <column> 
> like 'a_%' ) both the rows are returned. I need to  provide a where clause 
> with the condition as <column> like 'a\_%' to get the correct record (also 
> need to add ESCAPE keyword to the query). However, because escapeText returns 
> false, the criteria value gets built wrongly in the buildLike method of 
> SQLExpression class.. (the method returns 'a\%'). If escapeText returns true 
> this problem will be solved (ESCAPE keyword addition needs to be tackled 
> separately also).
> information regarding escape characters in Oracle 
> http://www.dba-oracle.com/tips_oracle_escape_characters.htm

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to