]
Work on TEIID-5277 started by Steven Hawkins.
---------------------------------------------
OData4 translator doesn't correctly translate LOCATE function to
INDEXOF
------------------------------------------------------------------------
Key: TEIID-5277
URL:
https://issues.jboss.org/browse/TEIID-5277
Project: Teiid
Issue Type: Bug
Components: OData
Affects Versions: 8.12.11.6_4
Reporter: Jan Martiska
Assignee: Steven Hawkins
Suppose this query against an OData4-backed view:
{noformat}
SELECT STRINGKEY FROM BQT1.SmallA WHERE LOCATE('1', stringkey) = 1
{noformat}
The WHERE clause gets translated into
{noformat}
filter=indexof('1',stringkey) eq 1
{noformat}
There are two issues with this:
- the arguments of the {{indexof}} function should be in the opposite order (the
sought-after string goes second)
- {{indexof}} function indexes characters in strings from 0 whereas {{LOCATE}} from 1,
this needs to be taken into account
The correct filter in this case should be:
{noformat}
filter=indexof(stringkey,'1') eq 0
{noformat}
See
http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventi...