/*
 *  Description     : BTree Index verification test
 *                  : This test is intended to verify that the primary 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-primary-15.adm";

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

create dataset testdst(TestType) partitioned by key fname,lname;

for $emp in dataset('testdst') 
where $emp.fname > "Craig" and $emp.lname > "Kevin" and $emp.fname < "Mary" and $emp.lname < "Tomes"
return $emp
