Like should use expression index if pattern is besed on system function e.g.
UPPER
----------------------------------------------------------------------------------
Key: CORE-6079
URL: http://tracker.firebirdsql.org/browse/CORE-6079
Project: Firebird Core
Issue Type: Improvement
Components: Engine
Reporter: Karol Bieniaszewski
CREATE TABLE NAMES
(
NAME VARCHAR(100)
);
commit;
INSERT INTO names
SELECT RF.RDB$FIELD_NAME FROM RDB$RELATION_FIELDS RF;
commit;
CREATE ASCENDING INDEX IXAE_NAMES__NAME ON NAMES COMPUTED BY(UPPER(NAME COLLATE
PXW_PLK));
commit;
------------------------------------------------------------------------------------
SELECT * FROM NAMES N WHERE UPPER(N.NAME COLLATE PXW_PLK) LIKE
'RDB%SYSTEM_FLAG%'
PLAN (N INDEX (IXAE_NAMES__NAME))
this works as expected
------------------------------------------------------------------------------------
SELECT * FROM NAMES N WHERE UPPER(N.NAME COLLATE PXW_PLK) LIKE
UPPER('RDB%SYSTEM_FLAG%')
PLAN (N NATURAL)
but this one not - because of function used in LIKE pattern.
------------------------------------------------------------------------------------
I understand current logic, because someone can use custom function and change
order of characters.
But system function UPPER does not change anything in like pattern, and index
still can be used.
I do not know which other (only system) functions can be used this way but
UPPER and LOWER are obvious one.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel