You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2013/01/09 13:36:12 UTC

[jira] [Updated] (DERBY-6030) Length of escape string in LIKE ... ESCAPE not properly checked with territory based collation

     [ https://issues.apache.org/jira/browse/DERBY-6030?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Knut Anders Hatlen updated DERBY-6030:
--------------------------------------

    Attachment: d6030-1a.diff

The attached patch makes WorkHorseForCollatorDatatypes.like() check the character length of the escape sequence as well as the number of collation elements, and adds a test case to verify the fix.

All of the regression tests passed.
                
> Length of escape string in LIKE ... ESCAPE not properly checked with territory based collation
> ----------------------------------------------------------------------------------------------
>
>                 Key: DERBY-6030
>                 URL: https://issues.apache.org/jira/browse/DERBY-6030
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.9.1.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: d6030-1a.diff
>
>
> When an ESCAPE clause contains multiple characters, but only a single collation element, they are accepted as long as it's not a literal:
> ij> connect 'jdbc:derby:memory:nodb;create=true;territory=no;collation=TERRITORY_BASED';
> ij> create table t(x varchar(20), y varchar(20), z varchar(20));
> 0 rows inserted/updated/deleted
> ij> insert into t values ('abc', 'def', 'aa');
> 1 row inserted/updated/deleted
> ij> select * from t where x like y escape z;
> X                   |Y                   |Z                   
> --------------------------------------------------------------
> 0 rows selected
> If the same query is performed with a literal in the ESCAPE clause, the problem is detected and correctly reported:
> ij> select * from t where x like y escape 'aa';
> ERROR 22019: Invalid escape sequence, 'aa'. The escape string must be exactly one character. It cannot be a null or more than one character.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira