CREATE CURSOR testudfindex ( aa i ) INSERT INTO testudfindex Values(1) INSERT INTO testudfindex Values(2) CLEAR SYS(3054,0) PRIVATE lnX lnX = 1 INDEX on lnX TAG withmem ? SELECT * FROM testudfindex WHERE lnX = 2 INTO ARRAY dummy ? "optimized ",_TALLY lnX = 1 SELECT * FROM testudfindex WHERE 2 = lnX INTO ARRAY dummy ?? " not optimize return the same result",_TALLY ? lnX = 1 SELECT * FROM testudfindex WHERE lnX = FuncDet() INTO ARRAY dummy1 ? "optimized ",_TALLY lnX = 1 SELECT * FROM testudfindex WHERE FuncDet() = lnX INTO ARRAY dummy1 ?? " not optimize return the same result",_TALLY ? lnX = 1 SELECT * FROM testudfindex WHERE lnX = FuncSideEffect() INTO ARRAY dummy2 ? "optimized ",_TALLY lnX = 1 SELECT * FROM testudfindex WHERE FuncSideEffect() = lnX INTO ARRAY dummy2 ?? " not optimize return a different result",_TALLY FUNCTION FuncDet() RETURN lnX FUNCTION FuncSideEffect() lnX = lnX + 1 RETURN lnX