/*
 *  Description     : BTree Index verification test
 *                  : This test is intended to verify that the secondary BTree index is used in the optimized query plan 
 *  Expected Result : Success
 *  Date            : 13th Aug 2012
 */

drop dataverse test if exists;
create dataverse test;
use dataverse test;

write output to nc1:"rttest/btree-index_btree-secondary-38.adm";

create type TestType as open {
    id : int32,
    fname : string,
    lname : string
}

create dataset testdst(TestType) partitioned by key id;

create index sec_Idx on testdst(fname,lname);

for $emp in dataset('testdst') 
where $emp.fname = "Young Seok" and $emp.lname = "Kim"
return $emp
