create cursor curTest1 (cName C(10)) index on upper(cName) tag xName create cursor curTest2 (cName C(10)) index on upper(cName) tag xName select * from curTest1, curTest2 where upper(curTest1.cName)="A"upper(curTest1.cName) does not exactly match upper(cName), but you need to qualify which cName field is meant and rushmore still identifies it can use xName of curTest1.
select * from curTest1, curTest2 where curTest1:xName="A"So table:tagname would force the use of the tag of the table. That way it doesn't matter what expression is used to build the index. As long as the index is there, it can be used. Rushmore does not need to find out if an exression can be replaced by using the index, the developer forces the use of the index. The developer then can decide, if he uses this new feature or writes the query more compatible to other databases and must cope with the limitations rushmore has about UDFs.