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

// Negative test

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

write output to nc1:"rttest/btree-index_btree-primary-09.adm";

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

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

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

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