/*
 *  Description     : 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-55.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);

load dataset testdst
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
(("path"="nc1://data/id-fn-ln.adm"),("format"="delimited-text"),("delimiter"="|"));

for $emp in dataset('testdst') 
where $emp.fname <= "Julio" 
return $emp
