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;

delete $l from dataset LineItem where $l.l_orderkey>=10 die after 1500;

write output to nc1:"rttest/failure_delete.adm";      
for $c in dataset('LineItem')
where $c.l_orderkey>=10
order by $c.l_orderkey, $c.l_linenumber
return $c 
