CREATE CURSOR testudfindex ( aa i ) INSERT INTO testudfindex Values(RECCOUNT()) INSERT INTO testudfindex Values(RECCOUNT()) INSERT INTO testudfindex Values(RECCOUNT()) INSERT INTO testudfindex Values(RECCOUNT()) INSERT INTO testudfindex Values(RECCOUNT()) INSERT INTO testudfindex Values(RECCOUNT()) INSERT INTO testudfindex Values(RECCOUNT()) CLEAR SYS(3054,12) INDEX on aa TAG tfield_TAG SELECT * FROM testudfindex WHERE aa =1 INTO ARRAY dummy PRIVATE lnX lnX = 1 INDEX on aa + lnX TAG withmem SELECT * FROM testudfindex WHERE aa + lnX = 2 INTO ARRAY dummy SELECT * FROM testudfindex WHERE aa + lnX = FuncDet() INTO ARRAY dummy1 SELECT * FROM testudfindex WHERE aa + lnX = FuncSideEffect() INTO ARRAY dummy2 * RAND() IS A NOT DETERMINISTIC FUNCTION ( AA=1 OR 0 ) INDEX on RAND(aa) TAG VFPF_TAG && Clause: DETERMINISTIC OFF Default is ON ? *BUG: : correct is : don't use the index SELECT * FROM testudfindex WHERE RAND(aa) =1 INTO ARRAY dummy INDEX ON UDF(aa) TAG udf_tag && Clause: DETERMINISTIC ON default is OFF ? * RESTRICTION: correct is : use the index SELECT * FROM testudfindex WHERE UDF(aa) =1 INTO ARRAY dummy PROCEDURE UDF(x) RETURN x FUNCTION FuncDet() RETURN 1 FUNCTION FuncSideEffect() lnX = lnX - 1 RETURN 1as the side effect can be as disruptive as the nondeterministic function<g>