drop table t_unique purge; drop table t_params purge; drop function f_ssc; drop function f_deterministic; --------------- create table t_unique(i int); create table t_params(exec_n int,p int); create index ix_t_params_p on t_params(p); alter session set optimizer_dynamic_sampling=0; --- function for counting deterministic function executions: create or replace function f_deterministic(p int) return int deterministic as procedure log_it is pragma autonomous_transaction; begin dbms_application_info.set_client_info(nvl(userenv('client_info'),0)+1 ); insert into t_params values(userenv('client_info'),p); commit; end; begin log_it; return 1; end; / --- function for counting scalar subquery executions: create or replace function f_ssc(a int) return int as procedure log_it is pragma autonomous_transaction; begin dbms_application_info.set_client_info(nvl(userenv('client_info'),0)+1 ); insert into t_params values(userenv('client_info'),a); commit; end; begin log_it; return 1; end; /