drop dataverse tpch if exists;
create dataverse tpch;
use dataverse tpch;

create type OrderType as closed {
  o_orderkey: int32, 
  o_custkey: int32, 
  o_orderstatus: string, 
  o_totalprice: double, 
  o_orderdate: string, 
  o_orderpriority: string,
  o_clerk: string, 
  o_shippriority: int32, 
  o_comment: string
}

create dataset Orders(OrderType)
  partitioned by key o_orderkey;

load dataset Orders 
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter" 
(("path"="nc1://data/tpch0.001/orders.tbl"),("format"="delimited-text"),("delimiter"="|")) pre-sorted;

create index idx_Orders_Custkey on Orders(o_custkey) ;

write output to nc1:"rttest/index_orders-index-custkey-conjunctive.adm";

for $o in dataset('Orders')
where
  $o.o_custkey = 40 and $o.o_totalprice > 150000.0
order by $o.o_orderkey
return {  
  "o_orderkey": $o.o_orderkey,
  "o_custkey": $o.o_custkey
}
