@@ -46,80 +46,80 @@ const TPCH_TABLE_TIME_COLUMNS: &[(&str, &str)] = &[
4646fn tpch_schema ( table : & str ) -> SchemaRef {
4747 let fields: Vec < Field > = match table {
4848 "region" => vec ! [
49- Field :: new( "r_regionkey" , DataType :: Int32 , false ) ,
50- Field :: new( "r_name" , DataType :: Utf8 , false ) ,
49+ Field :: new( "r_regionkey" , DataType :: Int32 , true ) ,
50+ Field :: new( "r_name" , DataType :: Utf8 , true ) ,
5151 Field :: new( "r_comment" , DataType :: Utf8 , true ) ,
5252 ] ,
5353 "nation" => vec ! [
54- Field :: new( "n_nationkey" , DataType :: Int32 , false ) ,
55- Field :: new( "n_name" , DataType :: Utf8 , false ) ,
56- Field :: new( "n_regionkey" , DataType :: Int32 , false ) ,
54+ Field :: new( "n_nationkey" , DataType :: Int32 , true ) ,
55+ Field :: new( "n_name" , DataType :: Utf8 , true ) ,
56+ Field :: new( "n_regionkey" , DataType :: Int32 , true ) ,
5757 Field :: new( "n_comment" , DataType :: Utf8 , true ) ,
5858 ] ,
5959 "supplier" => vec ! [
60- Field :: new( "s_suppkey" , DataType :: Int32 , false ) ,
61- Field :: new( "s_name" , DataType :: Utf8 , false ) ,
62- Field :: new( "s_address" , DataType :: Utf8 , false ) ,
63- Field :: new( "s_nationkey" , DataType :: Int32 , false ) ,
64- Field :: new( "s_phone" , DataType :: Utf8 , false ) ,
65- Field :: new( "s_acctbal" , DataType :: Decimal128 ( 15 , 2 ) , false ) ,
60+ Field :: new( "s_suppkey" , DataType :: Int64 , true ) ,
61+ Field :: new( "s_name" , DataType :: Utf8 , true ) ,
62+ Field :: new( "s_address" , DataType :: Utf8 , true ) ,
63+ Field :: new( "s_nationkey" , DataType :: Int32 , true ) ,
64+ Field :: new( "s_phone" , DataType :: Utf8 , true ) ,
65+ Field :: new( "s_acctbal" , DataType :: Decimal128 ( 15 , 2 ) , true ) ,
6666 Field :: new( "s_comment" , DataType :: Utf8 , true ) ,
6767 ] ,
6868 "customer" => vec ! [
69- Field :: new( "c_custkey" , DataType :: Int32 , false ) ,
70- Field :: new( "c_name" , DataType :: Utf8 , false ) ,
71- Field :: new( "c_address" , DataType :: Utf8 , false ) ,
72- Field :: new( "c_nationkey" , DataType :: Int32 , false ) ,
73- Field :: new( "c_phone" , DataType :: Utf8 , false ) ,
74- Field :: new( "c_acctbal" , DataType :: Decimal128 ( 15 , 2 ) , false ) ,
75- Field :: new( "c_mktsegment" , DataType :: Utf8 , false ) ,
69+ Field :: new( "c_custkey" , DataType :: Int64 , true ) ,
70+ Field :: new( "c_name" , DataType :: Utf8 , true ) ,
71+ Field :: new( "c_address" , DataType :: Utf8 , true ) ,
72+ Field :: new( "c_nationkey" , DataType :: Int32 , true ) ,
73+ Field :: new( "c_phone" , DataType :: Utf8 , true ) ,
74+ Field :: new( "c_acctbal" , DataType :: Decimal128 ( 15 , 2 ) , true ) ,
75+ Field :: new( "c_mktsegment" , DataType :: Utf8 , true ) ,
7676 Field :: new( "c_comment" , DataType :: Utf8 , true ) ,
7777 ] ,
7878 "part" => vec ! [
79- Field :: new( "p_partkey" , DataType :: Int32 , false ) ,
80- Field :: new( "p_name" , DataType :: Utf8 , false ) ,
81- Field :: new( "p_mfgr" , DataType :: Utf8 , false ) ,
82- Field :: new( "p_brand" , DataType :: Utf8 , false ) ,
83- Field :: new( "p_type" , DataType :: Utf8 , false ) ,
84- Field :: new( "p_size" , DataType :: Int32 , false ) ,
85- Field :: new( "p_container" , DataType :: Utf8 , false ) ,
86- Field :: new( "p_retailprice" , DataType :: Decimal128 ( 15 , 2 ) , false ) ,
79+ Field :: new( "p_partkey" , DataType :: Int64 , true ) ,
80+ Field :: new( "p_name" , DataType :: Utf8 , true ) ,
81+ Field :: new( "p_mfgr" , DataType :: Utf8 , true ) ,
82+ Field :: new( "p_brand" , DataType :: Utf8 , true ) ,
83+ Field :: new( "p_type" , DataType :: Utf8 , true ) ,
84+ Field :: new( "p_size" , DataType :: Int32 , true ) ,
85+ Field :: new( "p_container" , DataType :: Utf8 , true ) ,
86+ Field :: new( "p_retailprice" , DataType :: Decimal128 ( 15 , 2 ) , true ) ,
8787 Field :: new( "p_comment" , DataType :: Utf8 , true ) ,
8888 ] ,
8989 "partsupp" => vec ! [
90- Field :: new( "ps_partkey" , DataType :: Int32 , false ) ,
91- Field :: new( "ps_suppkey" , DataType :: Int32 , false ) ,
92- Field :: new( "ps_availqty" , DataType :: Int32 , false ) ,
93- Field :: new( "ps_supplycost" , DataType :: Decimal128 ( 15 , 2 ) , false ) ,
90+ Field :: new( "ps_partkey" , DataType :: Int64 , true ) ,
91+ Field :: new( "ps_suppkey" , DataType :: Int64 , true ) ,
92+ Field :: new( "ps_availqty" , DataType :: Int64 , true ) ,
93+ Field :: new( "ps_supplycost" , DataType :: Decimal128 ( 15 , 2 ) , true ) ,
9494 Field :: new( "ps_comment" , DataType :: Utf8 , true ) ,
9595 ] ,
9696 "orders" => vec ! [
97- Field :: new( "o_orderkey" , DataType :: Int32 , false ) ,
98- Field :: new( "o_custkey" , DataType :: Int32 , false ) ,
99- Field :: new( "o_orderstatus" , DataType :: Utf8 , false ) ,
100- Field :: new( "o_totalprice" , DataType :: Decimal128 ( 15 , 2 ) , false ) ,
101- Field :: new( "o_orderdate" , DataType :: Date32 , false ) ,
102- Field :: new( "o_orderpriority" , DataType :: Utf8 , false ) ,
103- Field :: new( "o_clerk" , DataType :: Utf8 , false ) ,
104- Field :: new( "o_shippriority" , DataType :: Int32 , false ) ,
97+ Field :: new( "o_orderkey" , DataType :: Int64 , true ) ,
98+ Field :: new( "o_custkey" , DataType :: Int64 , true ) ,
99+ Field :: new( "o_orderstatus" , DataType :: Utf8 , true ) ,
100+ Field :: new( "o_totalprice" , DataType :: Decimal128 ( 15 , 2 ) , true ) ,
101+ Field :: new( "o_orderdate" , DataType :: Date32 , true ) ,
102+ Field :: new( "o_orderpriority" , DataType :: Utf8 , true ) ,
103+ Field :: new( "o_clerk" , DataType :: Utf8 , true ) ,
104+ Field :: new( "o_shippriority" , DataType :: Int32 , true ) ,
105105 Field :: new( "o_comment" , DataType :: Utf8 , true ) ,
106106 ] ,
107107 "lineitem" => vec ! [
108- Field :: new( "l_orderkey" , DataType :: Int32 , false ) ,
109- Field :: new( "l_partkey" , DataType :: Int32 , false ) ,
110- Field :: new( "l_suppkey" , DataType :: Int32 , false ) ,
111- Field :: new( "l_linenumber" , DataType :: Int32 , false ) ,
112- Field :: new( "l_quantity" , DataType :: Decimal128 ( 15 , 2 ) , false ) ,
113- Field :: new( "l_extendedprice" , DataType :: Decimal128 ( 15 , 2 ) , false ) ,
114- Field :: new( "l_discount" , DataType :: Decimal128 ( 15 , 2 ) , false ) ,
115- Field :: new( "l_tax" , DataType :: Decimal128 ( 15 , 2 ) , false ) ,
116- Field :: new( "l_returnflag" , DataType :: Utf8 , false ) ,
117- Field :: new( "l_linestatus" , DataType :: Utf8 , false ) ,
118- Field :: new( "l_shipdate" , DataType :: Date32 , false ) ,
119- Field :: new( "l_commitdate" , DataType :: Date32 , false ) ,
120- Field :: new( "l_receiptdate" , DataType :: Date32 , false ) ,
121- Field :: new( "l_shipinstruct" , DataType :: Utf8 , false ) ,
122- Field :: new( "l_shipmode" , DataType :: Utf8 , false ) ,
108+ Field :: new( "l_orderkey" , DataType :: Int64 , true ) ,
109+ Field :: new( "l_partkey" , DataType :: Int64 , true ) ,
110+ Field :: new( "l_suppkey" , DataType :: Int64 , true ) ,
111+ Field :: new( "l_linenumber" , DataType :: Int64 , true ) ,
112+ Field :: new( "l_quantity" , DataType :: Decimal128 ( 15 , 2 ) , true ) ,
113+ Field :: new( "l_extendedprice" , DataType :: Decimal128 ( 15 , 2 ) , true ) ,
114+ Field :: new( "l_discount" , DataType :: Decimal128 ( 15 , 2 ) , true ) ,
115+ Field :: new( "l_tax" , DataType :: Decimal128 ( 15 , 2 ) , true ) ,
116+ Field :: new( "l_returnflag" , DataType :: Utf8 , true ) ,
117+ Field :: new( "l_linestatus" , DataType :: Utf8 , true ) ,
118+ Field :: new( "l_shipdate" , DataType :: Date32 , true ) ,
119+ Field :: new( "l_commitdate" , DataType :: Date32 , true ) ,
120+ Field :: new( "l_receiptdate" , DataType :: Date32 , true ) ,
121+ Field :: new( "l_shipinstruct" , DataType :: Utf8 , true ) ,
122+ Field :: new( "l_shipmode" , DataType :: Utf8 , true ) ,
123123 Field :: new( "l_comment" , DataType :: Utf8 , true ) ,
124124 ] ,
125125 _ => unreachable ! ( "unknown TPC-H table: {table}" ) ,
@@ -214,13 +214,21 @@ impl TpchDataset {
214214
215215#[ async_trait]
216216impl Dataset for TpchDataset {
217+ fn create ( config : & DatasetConfig ) -> anyhow:: Result < Arc < dyn Dataset > >
218+ where
219+ Self : Sized + ' static ,
220+ {
221+ Ok ( Arc :: new ( Self :: new ( config) ?) )
222+ }
223+
217224 fn num_batches ( & self , table : & str ) -> u64 {
218225 if !TPCH_TABLE_TIME_COLUMNS
219226 . iter ( )
220227 . any ( |( name, _) | * name == table)
221228 {
222229 return 0 ;
223230 }
231+
224232 // TPC-H produces one batch per table per step.
225233 u64:: from ( self . num_steps )
226234 }
0 commit comments