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

create type LineItemType as closed {
  l_orderkey: int32, 
  l_partkey: int32, 
  l_suppkey: int32, 
  l_linenumber: int32, 
  l_quantity: int32, 
  l_extendedprice: double,
  l_discount: double, 
  l_tax: double,
  l_returnflag: string, 
  l_linestatus: string, 
  l_shipdate: string,
  l_commitdate: string, 
  l_receiptdate: string, 
  l_shipinstruct: string, 
  l_shipmode: string, 
  l_comment: string
}

create dataset LineItem(LineItemType)
  partitioned by key l_orderkey, l_linenumber;

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

create index idx_LineItem_partkey on LineItem(l_linenumber);
create index idx_LineItem_suppkey on LineItem(l_suppkey);

delete $l from dataset LineItem where $l.l_suppkey>=2 or $l.l_linenumber>1;

write output to nc1:"rttest/dml_delete-with-index.adm";      
for $c in dataset('LineItem')
where $c.l_suppkey<150
order by $c.l_orderkey, $c.l_linenumber
return $c
