diff --git a/incremental_transactions/tpcc/graphs/byname_max_sql.rs.png b/incremental_transactions/tpcc/graphs/byname_max_sql.rs.png index ff86afeedb..685eefb41d 100644 Binary files a/incremental_transactions/tpcc/graphs/byname_max_sql.rs.png and b/incremental_transactions/tpcc/graphs/byname_max_sql.rs.png differ diff --git a/incremental_transactions/tpcc/graphs/byname_sql.rs.png b/incremental_transactions/tpcc/graphs/byname_sql.rs.png index d8e1643e6b..e0f563ad2f 100644 Binary files a/incremental_transactions/tpcc/graphs/byname_sql.rs.png and b/incremental_transactions/tpcc/graphs/byname_sql.rs.png differ diff --git a/incremental_transactions/tpcc/graphs/byname_sql_incremental.rs.png b/incremental_transactions/tpcc/graphs/byname_sql_incremental.rs.png index db5284ed98..44b1ea5dfb 100644 Binary files a/incremental_transactions/tpcc/graphs/byname_sql_incremental.rs.png and b/incremental_transactions/tpcc/graphs/byname_sql_incremental.rs.png differ diff --git a/incremental_transactions/tpcc/handles/byname_sql.rs.handles.txt b/incremental_transactions/tpcc/handles/byname_sql.rs.handles.txt index 4b12e29474..dd896a8b7c 100644 --- a/incremental_transactions/tpcc/handles/byname_sql.rs.handles.txt +++ b/incremental_transactions/tpcc/handles/byname_sql.rs.handles.txt @@ -1 +1 @@ -(in_warehouse_static, in_warehouse, in_district_static, in_district_next_id, in_district_ytd, in_customer, in_transaction_parameters, out_ncustomers, out_cust_enum, out_cust_agg, out_cust_med, out_cust_med, out_cust_max, out_median_pos) +(in_warehouse_static, in_warehouse, in_district_static, in_district_next_id, in_district_ytd, in_customer, in_transaction_parameters, out_cust_agg, out_cust_byname) diff --git a/incremental_transactions/tpcc/handles/byname_sql_incremental.rs.handles.txt b/incremental_transactions/tpcc/handles/byname_sql_incremental.rs.handles.txt index 4b12e29474..dd896a8b7c 100644 --- a/incremental_transactions/tpcc/handles/byname_sql_incremental.rs.handles.txt +++ b/incremental_transactions/tpcc/handles/byname_sql_incremental.rs.handles.txt @@ -1 +1 @@ -(in_warehouse_static, in_warehouse, in_district_static, in_district_next_id, in_district_ytd, in_customer, in_transaction_parameters, out_ncustomers, out_cust_enum, out_cust_agg, out_cust_med, out_cust_med, out_cust_max, out_median_pos) +(in_warehouse_static, in_warehouse, in_district_static, in_district_next_id, in_district_ytd, in_customer, in_transaction_parameters, out_cust_agg, out_cust_byname) diff --git a/incremental_transactions/tpcc/sql/byname.sql b/incremental_transactions/tpcc/sql/byname.sql index 367b369c66..d72003f5e7 100644 --- a/incremental_transactions/tpcc/sql/byname.sql +++ b/incremental_transactions/tpcc/sql/byname.sql @@ -1,31 +1,6 @@ --- Ignoring byname for now --- if (byname) --- { - - --- CREATE VIEW ncustomers AS -- SELECT count(c_id) INTO :namecnt --- SELECT count(c_id) AS name_cnt -- FROM customer --- FROM customer AS c, -- WHERE c_last=:c_last AND c_d_id=:c_d_id AND c_w_id=:c_w_id; --- transaction_parameters as t --- WHERE c.c_last = t.c_last --- AND c.c_d_id = t.c_d_id --- AND c.c_w_id = t.c_w_id; - --- CREATE VIEW cust_enum AS --- SELECT c.c_first, c.c_middle, c.c_id, --- c.c_street_1, c.c_street_2, c.c_city, c.c_state, c.c_zip, --- c.c_phone, c.c_credit, c.c_credit_lim, --- c.c_discount, c.c_balance, c.c_since --- FROM customer AS c, --- transaction_parameters AS t --- WHERE c.c_last = t.c_last --- AND c.c_d_id = t.c_d_id --- AND c.c_w_id = t.c_w_id --- ORDER BY c_first; - CREATE VIEW cust_agg AS -SELECT ARRAY_AGG(c_id ORDER BY c_first) AS cust_array -FROM (SELECT c.c_id, c.c_first +SELECT ARRAY_AGG((c_id + c_w_id + c_d_id) ORDER BY c_first) AS cust_array +FROM (SELECT c.c_id, c.c_w_id, c.c_d_id, c.c_first FROM customer AS c, transaction_parameters AS t WHERE c.c_last = t.c_last @@ -33,7 +8,7 @@ FROM (SELECT c.c_id, c.c_first AND c.c_w_id = t.c_w_id ORDER BY c_first); -CREATE VIEW cust_med AS +CREATE VIEW cust_byname AS SELECT c.c_first, c.c_middle, c.c_id, c.c_street_1, c.c_street_2, c.c_city, c.c_state, c.c_zip, c.c_phone, c.c_credit, c.c_credit_lim, @@ -41,87 +16,4 @@ SELECT c.c_first, c.c_middle, c.c_id, FROM customer as c, cust_agg as a, transaction_parameters as t -WHERE c.c_id = a.cust_array[(ARRAY_LENGTH(a.cust_array) / 2) + 1]; - --- CREATE VIEW cust_med AS --- SELECT c.c_first, c.c_middle, c.c_id, --- c.c_street_1, c.c_street_2, c.c_city, c.c_state, c.c_zip, --- c.c_phone, c.c_credit, c.c_credit_lim, --- c.c_discount, c.c_balance, c.c_since --- FROM cust_agg AS a, --- cust_enum AS c, --- transaction_parameters AS t --- WHERE c.c_id = a.cust_array[FLOOR(ARRAY_LENGTH(a.cust_array) / 2) + 1]; --- --- create view cust_max as --- SELECT c.c_first, c.c_middle, c.c_id, --- c.c_street_1, c.c_street_2, c.c_city, c.c_state, c.c_zip, --- c.c_phone, c.c_credit, c.c_credit_lim, --- c.c_discount, c.c_balance, c.c_since --- FROM customer AS c, --- transaction_parameters AS t --- WHERE c.c_last = t.c_last --- AND c.c_d_id = t.c_d_id --- AND c.c_w_id = t.c_w_id --- AND c_first = (select max(c_first) from customer LIMIT 1) --- LIMIT 1; - --- CREATE VIEW cust_max AS --- SELECT c_first, c_last --- FROM customer --- ORDER BY c_first --- LIMIT 1; - --- SELECT c_first, c_middle, c_id, --- c_street_1, c_street_2, c_city, c_state, c_zip, --- c_phone, c_credit, c_credit_lim, --- c_discount, c_balance, c_since - - --- DECLARE c_byname CURSOR FOR --- SELECT c_first, c_middle, c_id, --- c_street_1, c_street_2, c_city, c_state, c_zip, --- c_phone, c_credit, c_credit_lim, --- c_discount, c_balance, c_since --- FROM customer --- WHERE c_w_id=:c_w_id AND c_d_id=:c_d_id AND c_last=:c_last --- ORDER BY c_first; - --- CREATE VIEW median_pos AS --- SELECT c_first, c_middle, c_id, --- c_street_1, c_street_2, c_city, c_state, c_zip, --- c_phone, c_credit, c_credit_lim, --- c_discount, c_balance, c_since --- FROM cust_last --- ORDER BY c_first --- LIMIT 1 OFFSET ( --- SELECT FLOOR((COUNT(*) - 1) / 2) --- FROM cust_last --- ); - --- OPEN c_byname; --- --- if (namecnt%2) namecnt++; --Locate midpoint customer; --- for (n=0; n Result<(DBSPHandle, (ZSetHandle, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream5329.integrate(); // rel#86:LogicalSort.(input=LogicalProject#84,sort0=$0,dir0=DESC,fetch=1) - // DBSPStreamAggregateOperator 8499(980) - let stream8499: Stream<_, IndexedWSet<(), Vec, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>>> = stream5331.stream_aggregate(Fold::<_, _, UnimplementedSemigroup<_>, _, _>::new(Vec::new(), move |t_9: &mut Vec, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>, t_10: &Tup14, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, t_0: Weight, | { + // DBSPStreamAggregateOperator 8501(980) + let stream8501: Stream<_, IndexedWSet<(), Vec, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>>> = stream5331.stream_aggregate(Fold::<_, _, UnimplementedSemigroup<_>, _, _>::new(Vec::new(), move |t_9: &mut Vec, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>, t_10: &Tup14, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, t_0: Weight, | { weighted_push(t_9, t_10, t_0) })); // rel#86:LogicalSort.(input=LogicalProject#84,sort0=$0,dir0=DESC,fetch=1) - // DBSPMapOperator 8501(991) - let stream8501: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>>> = stream8499.map(move |(k, v): (&(), &Vec, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>)| -> Vec, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>> { + // DBSPMapOperator 8503(991) + let stream8503: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>>> = stream8501.map(move |(k, v): (&(), &Vec, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>)| -> Vec, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>> { let ec = Extract::new(move |r: &Tup14, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>| r.0.clone()).rev(); let comp = move |a: &Tup14, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, b: &Tup14, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>| { ec.compare(a, b) };let mut v = v.clone(); v.sort_by(comp); @@ -230,10 +230,10 @@ pub fn circuit(cconf: CircuitConfig) -> Result<(DBSPHandle, (ZSetHandle Result<(DBSPHandle, (ZSetHandle, Option, Option, Option, Option, Option, Option, Option, Option, Option>>(); - // rel#84:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) + // rel#83:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) // DBSPFilterOperator 405 let stream405: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream279.filter(move |t_1: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> bool { (!or_b_b(or_b_b((*t_1).1.is_none(), (*t_1).2.is_none()), (*t_1).5.is_none())) }); - // rel#84:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) + // rel#83:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) // DBSPFilterOperator 430 let stream430: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream337.filter(move |t_2: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> bool { (!or_b_b(or_b_b((*t_2).4.is_none(), (*t_2).5.is_none()), (*t_2).6.is_none())) }); - // rel#84:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) + // rel#83:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) // DBSPMapIndexOperator 672 let stream672: Stream<_, IndexedWSet, Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream405.map_index(move |t_3: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> (Tup3, Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, ) { (Tup3::new(cast_to_s_sN((*t_3).5.clone(), 16, false), cast_to_i32_i32N((*t_3).1), cast_to_i32_i32N((*t_3).2)), Tup21::new((*t_3).0, (*t_3).1, (*t_3).2, (*t_3).3.clone(), (*t_3).4.clone(), (*t_3).5.clone(), (*t_3).6.clone(), (*t_3).7.clone(), (*t_3).8.clone(), (*t_3).9.clone(), (*t_3).10.clone(), (*t_3).11.clone(), (*t_3).12, (*t_3).13.clone(), (*t_3).14.clone(), (*t_3).15.clone(), (*t_3).16.clone(), (*t_3).17.clone(), (*t_3).18, (*t_3).19, (*t_3).20.clone()), ) }); - // rel#84:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) + // rel#83:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) // DBSPMapIndexOperator 717 let stream717: Stream<_, IndexedWSet, Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream430.map_index(move |t_4: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> (Tup3, Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, ) { (Tup3::new(cast_to_s_sN((*t_4).6.clone(), 16, false), cast_to_i32_i32N((*t_4).5), cast_to_i32_i32N((*t_4).4)), Tup10::new((*t_4).0, (*t_4).1, (*t_4).2, (*t_4).3, (*t_4).4, (*t_4).5, (*t_4).6.clone(), (*t_4).7.clone(), (*t_4).8, (*t_4).9), ) }); - // rel#84:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) - // DBSPStreamJoinOperator 2446(781) - let stream2446: Stream<_, WSet, Option>>> = stream672.stream_join(&stream717, move |t_5: &Tup3, t_3: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, t_4: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#83:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) + // DBSPStreamJoinOperator 3078(801) + let stream3078: Stream<_, WSet, Option>>> = stream672.stream_join(&stream717, move |t_5: &Tup3, t_3: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, t_4: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> Tup2, Option> { - Tup2::new((*t_3).0, (*t_3).3.clone().clone()) + Tup2::new(plus_i32N_i32N(plus_i32N_i32N((*t_3).0, (*t_3).2), (*t_3).1), (*t_3).3.clone().clone()) }); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPMapIndexOperator 2448(842) - let stream2448: Stream<_, IndexedWSet, Option>>> = stream2446.map_index(move |t_8: &Tup2, Option>, | -> + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPMapIndexOperator 3080(862) + let stream3080: Stream<_, IndexedWSet, Option>>> = stream3078.map_index(move |t_8: &Tup2, Option>, | -> (Tup0, Tup2, Option>, ) { (Tup0::new(), Tup2::new((*t_8).0, (*t_8).1.clone()), ) }); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPStreamAggregateOperator 13396(847) - let stream13396: Stream<_, IndexedWSet>>>> = stream2448.stream_aggregate(Fold::<_, _, Semigroup1>, ConcatSemigroup>>>, _, _>::with_output(Tup1::new(vec!( + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPStreamAggregateOperator 14148(867) + let stream14148: Stream<_, IndexedWSet>>>> = stream3080.stream_aggregate(Fold::<_, _, Semigroup1>, ConcatSemigroup>>>, _, _>::with_output(Tup1::new(vec!( )), move |t_32: &mut Tup1>>, t_9: &Tup2, Option>, t_34: Weight, | { (*t_32) = Tup1::new(array_agg(&mut (*t_32).0, (*t_9).0, t_34, false)) }, move |t_33: Tup1>>, | -> Tup1>> { Tup1::new(t_33.0) })); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPMapOperator 13398(864) - let stream13398: Stream<_, WSet>>>> = stream13396.map(move |t_11: (&Tup0, &Tup1>>, ), | -> + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPMapOperator 14150(884) + let stream14150: Stream<_, WSet>>>> = stream14148.map(move |t_11: (&Tup0, &Tup1>>, ), | -> Tup1>> { Tup1::new((*t_11.1).0.clone()) }); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPMapOperator 13403(877) - let stream13403: Stream<_, WSet>>>> = stream13396.map(move |t_11: (&Tup0, &Tup1>>, ), | -> + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPMapOperator 14155(897) + let stream14155: Stream<_, WSet>>>> = stream14148.map(move |t_11: (&Tup0, &Tup1>>, ), | -> Tup1>> { Tup1::new(vec!( )) }); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPNegateOperator 13408(880) - let stream13408: Stream<_, WSet>>>> = stream13403.neg(); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - let stream886 = circuit.add_source(Generator::new(|| if Runtime::worker_index() == 0 {zset!( + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPNegateOperator 14160(900) + let stream14160: Stream<_, WSet>>>> = stream14155.neg(); + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + let stream906 = circuit.add_source(Generator::new(|| if Runtime::worker_index() == 0 {zset!( Tup1::new(vec!( )) => 1, )} else {zset!( )})); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPSumOperator 13410(890) - let stream13410: Stream<_, WSet>>>> = stream886.sum([&stream13408, &stream13398]); + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPSumOperator 14162(910) + let stream14162: Stream<_, WSet>>>> = stream906.sum([&stream14160, &stream14150]); // CREATE VIEW `CUST_AGG` AS - // SELECT ARRAY_AGG(`EXPR$0`.`C_ID` ORDER BY `EXPR$0`.`C_FIRST`) AS `CUST_ARRAY` - // FROM (SELECT `C`.`C_ID`, `C`.`C_FIRST` + // SELECT ARRAY_AGG(`EXPR$0`.`C_ID` + `EXPR$0`.`C_W_ID` + `EXPR$0`.`C_D_ID` ORDER BY `EXPR$0`.`C_FIRST`) AS `CUST_ARRAY` + // FROM (SELECT `C`.`C_ID`, `C`.`C_W_ID`, `C`.`C_D_ID`, `C`.`C_FIRST` // FROM `schema`.`CUSTOMER` AS `C`, // `schema`.`TRANSACTION_PARAMETERS` AS `T` // WHERE `C`.`C_LAST` = `T`.`C_LAST` AND `C`.`C_D_ID` = `T`.`C_D_ID` AND `C`.`C_W_ID` = `T`.`C_W_ID` // ORDER BY `C_FIRST`) AS `EXPR$0` - // DBSPSinkOperator 13412(904) - let handle13412 = stream13410.output(); + // DBSPSinkOperator 14164(924) + let handle14164 = stream14162.output(); - // rel#187:LogicalJoin.(left=LogicalTableScan#91,right=LogicalTableScan#93,condition==($0, ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) - // DBSPMapIndexOperator 1161 - let stream1161: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream279.map_index(move |t_13: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#186:LogicalJoin.(left=LogicalTableScan#90,right=LogicalTableScan#92,condition==(+(+($0, $2), $1), ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) + // DBSPMapIndexOperator 1201 + let stream1201: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream279.map_index(move |t_13: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> (Tup0, Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, ) { (Tup0::new(), Tup21::new((*t_13).0, (*t_13).1, (*t_13).2, (*t_13).3.clone(), (*t_13).4.clone(), (*t_13).5.clone(), (*t_13).6.clone(), (*t_13).7.clone(), (*t_13).8.clone(), (*t_13).9.clone(), (*t_13).10.clone(), (*t_13).11.clone(), (*t_13).12, (*t_13).13.clone(), (*t_13).14.clone(), (*t_13).15.clone(), (*t_13).16.clone(), (*t_13).17.clone(), (*t_13).18, (*t_13).19, (*t_13).20.clone()), ) }); - // rel#187:LogicalJoin.(left=LogicalTableScan#91,right=LogicalTableScan#93,condition==($0, ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) - // DBSPMapIndexOperator 13414(1178) - let stream13414: Stream<_, IndexedWSet>>>> = stream13410.map_index(move |t_14: &Tup1>>, | -> + // rel#186:LogicalJoin.(left=LogicalTableScan#90,right=LogicalTableScan#92,condition==(+(+($0, $2), $1), ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) + // DBSPMapIndexOperator 14166(1218) + let stream14166: Stream<_, IndexedWSet>>>> = stream14162.map_index(move |t_14: &Tup1>>, | -> (Tup0, Tup1>>, ) { (Tup0::new(), Tup1::new((*t_14).0.clone()), ) }); - // rel#187:LogicalJoin.(left=LogicalTableScan#91,right=LogicalTableScan#93,condition==($0, ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) - // DBSPStreamJoinOperator 13418(1188) - let stream13418: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>>> = stream1161.stream_join(&stream13414, move |t_16: &Tup0, t_13: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, t_14: &Tup1>>, | -> + // rel#186:LogicalJoin.(left=LogicalTableScan#90,right=LogicalTableScan#92,condition==(+(+($0, $2), $1), ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) + // DBSPStreamJoinOperator 14170(1228) + let stream14170: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>>> = stream1201.stream_join(&stream14166, move |t_16: &Tup0, t_13: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, t_14: &Tup1>>, | -> Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>> { Tup22::new((*t_13).0, (*t_13).1, (*t_13).2, (*t_13).3.clone(), (*t_13).4.clone(), (*t_13).5.clone(), (*t_13).6.clone(), (*t_13).7.clone(), (*t_13).8.clone(), (*t_13).9.clone(), (*t_13).10.clone(), (*t_13).11.clone(), (*t_13).12, (*t_13).13.clone(), (*t_13).14.clone(), (*t_13).15.clone(), (*t_13).16.clone(), (*t_13).17.clone(), (*t_13).18, (*t_13).19, (*t_13).20.clone(), (*t_14).0.clone()) }); - // rel#187:LogicalJoin.(left=LogicalTableScan#91,right=LogicalTableScan#93,condition==($0, ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) - // DBSPFilterOperator 13423(1190) - let stream13423: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>>> = stream13418.filter(move |t_15: &Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, | -> + // rel#186:LogicalJoin.(left=LogicalTableScan#90,right=LogicalTableScan#92,condition==(+(+($0, $2), $1), ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) + // DBSPFilterOperator 14175(1230) + let stream14175: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>>> = stream14170.filter(move |t_15: &Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, | -> bool { - wrap_bool(eq_i32N_i32N((*t_15).0, index__N_((*t_15).21.clone(), cast_to_u_i32(plus_i32_i32(div_i32_i32(cardinality((*t_15).21.clone()), 2i32), 1i32)) - 1))) + wrap_bool(eq_i32N_i32N(plus_i32N_i32N(plus_i32N_i32N((*t_15).0, (*t_15).2), (*t_15).1), index__N_((*t_15).21.clone(), cast_to_u_i32(plus_i32_i32(div_i32_i32(cardinality((*t_15).21.clone()), 2i32), 1i32)) - 1))) }); - // rel#190:LogicalJoin.(left=LogicalJoin#187,right=LogicalTableScan#97,condition=true,joinType=inner) - // DBSPMapIndexOperator 13426(1458) - let stream13426: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>>> = stream13423.map_index(move |t_18: &Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, | -> + // rel#189:LogicalJoin.(left=LogicalJoin#186,right=LogicalTableScan#96,condition=true,joinType=inner) + // DBSPMapIndexOperator 14178(1498) + let stream14178: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>>> = stream14175.map_index(move |t_18: &Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, | -> (Tup0, Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, ) { (Tup0::new(), Tup22::new((*t_18).0, (*t_18).1, (*t_18).2, (*t_18).3.clone(), (*t_18).4.clone(), (*t_18).5.clone(), (*t_18).6.clone(), (*t_18).7.clone(), (*t_18).8.clone(), (*t_18).9.clone(), (*t_18).10.clone(), (*t_18).11.clone(), (*t_18).12, (*t_18).13.clone(), (*t_18).14.clone(), (*t_18).15.clone(), (*t_18).16.clone(), (*t_18).17.clone(), (*t_18).18, (*t_18).19, (*t_18).20.clone(), (*t_18).21.clone()), ) }); - // rel#190:LogicalJoin.(left=LogicalJoin#187,right=LogicalTableScan#97,condition=true,joinType=inner) - // DBSPMapIndexOperator 1503 - let stream1503: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream337.map_index(move |t_19: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#189:LogicalJoin.(left=LogicalJoin#186,right=LogicalTableScan#96,condition=true,joinType=inner) + // DBSPMapIndexOperator 1543 + let stream1543: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream337.map_index(move |t_19: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> (Tup0, Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, ) { (Tup0::new(), Tup10::new((*t_19).0, (*t_19).1, (*t_19).2, (*t_19).3, (*t_19).4, (*t_19).5, (*t_19).6.clone(), (*t_19).7.clone(), (*t_19).8, (*t_19).9), ) }); - // rel#190:LogicalJoin.(left=LogicalJoin#187,right=LogicalTableScan#97,condition=true,joinType=inner) - // DBSPStreamJoinOperator 13430(1628) - let stream13430: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream13426.stream_join(&stream1503, move |t_21: &Tup0, t_18: &Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, t_19: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#189:LogicalJoin.(left=LogicalJoin#186,right=LogicalTableScan#96,condition=true,joinType=inner) + // DBSPStreamJoinOperator 14182(1668) + let stream14182: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream14178.stream_join(&stream1543, move |t_21: &Tup0, t_18: &Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, t_19: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> Tup14, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option> { Tup14::new((*t_18).3.clone().clone(), (*t_18).4.clone().clone(), (*t_18).0, (*t_18).6.clone().clone(), (*t_18).7.clone().clone(), (*t_18).8.clone().clone(), (*t_18).9.clone().clone(), (*t_18).10.clone().clone(), (*t_18).11.clone().clone(), (*t_18).13.clone().clone(), (*t_18).14.clone().clone(), (*t_18).15.clone().clone(), (*t_18).16.clone().clone(), (*t_18).12) }); - // CREATE VIEW `CUST_MED` AS + // CREATE VIEW `CUST_BYNAME` AS // SELECT `C`.`C_FIRST`, `C`.`C_MIDDLE`, `C`.`C_ID`, `C`.`C_STREET_1`, `C`.`C_STREET_2`, `C`.`C_CITY`, `C`.`C_STATE`, `C`.`C_ZIP`, `C`.`C_PHONE`, `C`.`C_CREDIT`, `C`.`C_CREDIT_LIM`, `C`.`C_DISCOUNT`, `C`.`C_BALANCE`, `C`.`C_SINCE` // FROM `schema`.`CUSTOMER` AS `C`, // `schema`.`CUST_AGG` AS `A`, // `schema`.`TRANSACTION_PARAMETERS` AS `T` - // WHERE `C`.`C_ID` = `A`.`CUST_ARRAY`[ARRAY_LENGTH(`A`.`CUST_ARRAY`) / 2 + 1] - // DBSPSinkOperator 13432(1668) - let handle13432 = stream13430.output(); + // WHERE `C`.`C_ID` + `C`.`C_W_ID` + `C`.`C_D_ID` = `A`.`CUST_ARRAY`[ARRAY_LENGTH(`A`.`CUST_ARRAY`) / 2 + 1] + // DBSPSinkOperator 14184(1708) + let handle14184 = stream14182.output(); - Ok((handle49, handle67, handle120, handle143, handle166, handle279, handle337, handle13412, handle13432, )) + Ok((handle49, handle67, handle120, handle143, handle166, handle279, handle337, handle14164, handle14184, )) })?; Ok((circuit, streams)) } diff --git a/incremental_transactions/tpcc/src/byname_sql_incremental.rs b/incremental_transactions/tpcc/src/byname_sql_incremental.rs index c7c459c8e1..108da885b4 100644 --- a/incremental_transactions/tpcc/src/byname_sql_incremental.rs +++ b/incremental_transactions/tpcc/src/byname_sql_incremental.rs @@ -145,140 +145,140 @@ pub fn circuit(cconf: CircuitConfig) -> Result<(DBSPHandle, (ZSetHandle, Option, Option, Option, Option, Option, Option, Option, Option, Option>>(); - // rel#84:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) - // DBSPFilterOperator 1818(1731) - let stream1818: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream279.filter(move |t_1: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#83:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) + // DBSPFilterOperator 1858(1771) + let stream1858: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream279.filter(move |t_1: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> bool { (!or_b_b(or_b_b((*t_1).1.is_none(), (*t_1).2.is_none()), (*t_1).5.is_none())) }); - // rel#84:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) - // DBSPFilterOperator 1823(1734) - let stream1823: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream337.filter(move |t_2: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#83:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) + // DBSPFilterOperator 1863(1774) + let stream1863: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream337.filter(move |t_2: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> bool { (!or_b_b(or_b_b((*t_2).4.is_none(), (*t_2).5.is_none()), (*t_2).6.is_none())) }); - // rel#84:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) - // DBSPMapIndexOperator 1828(1737) - let stream1828: Stream<_, IndexedWSet, Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream1818.map_index(move |t_3: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#83:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) + // DBSPMapIndexOperator 1868(1777) + let stream1868: Stream<_, IndexedWSet, Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream1858.map_index(move |t_3: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> (Tup3, Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, ) { (Tup3::new(cast_to_s_sN((*t_3).5.clone(), 16, false), cast_to_i32_i32N((*t_3).1), cast_to_i32_i32N((*t_3).2)), Tup21::new((*t_3).0, (*t_3).1, (*t_3).2, (*t_3).3.clone(), (*t_3).4.clone(), (*t_3).5.clone(), (*t_3).6.clone(), (*t_3).7.clone(), (*t_3).8.clone(), (*t_3).9.clone(), (*t_3).10.clone(), (*t_3).11.clone(), (*t_3).12, (*t_3).13.clone(), (*t_3).14.clone(), (*t_3).15.clone(), (*t_3).16.clone(), (*t_3).17.clone(), (*t_3).18, (*t_3).19, (*t_3).20.clone()), ) }); - // rel#84:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) - // DBSPMapIndexOperator 1834(1741) - let stream1834: Stream<_, IndexedWSet, Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream1823.map_index(move |t_4: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#83:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) + // DBSPMapIndexOperator 1874(1781) + let stream1874: Stream<_, IndexedWSet, Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream1863.map_index(move |t_4: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> (Tup3, Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, ) { (Tup3::new(cast_to_s_sN((*t_4).6.clone(), 16, false), cast_to_i32_i32N((*t_4).5), cast_to_i32_i32N((*t_4).4)), Tup10::new((*t_4).0, (*t_4).1, (*t_4).2, (*t_4).3, (*t_4).4, (*t_4).5, (*t_4).6.clone(), (*t_4).7.clone(), (*t_4).8, (*t_4).9), ) }); - // rel#84:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) - // DBSPJoinOperator 2921(1747) - let stream2921: Stream<_, WSet, Option>>> = stream1828.join(&stream1834, move |t_5: &Tup3, t_3: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, t_4: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#83:LogicalJoin.(left=LogicalTableScan#1,right=LogicalTableScan#3,condition=AND(=($5, $27), =($1, $26), =($2, $25)),joinType=inner) + // DBSPJoinOperator 3427(1787) + let stream3427: Stream<_, WSet, Option>>> = stream1868.join(&stream1874, move |t_5: &Tup3, t_3: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, t_4: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> Tup2, Option> { - Tup2::new((*t_3).0, (*t_3).3.clone().clone()) + Tup2::new(plus_i32N_i32N(plus_i32N_i32N((*t_3).0, (*t_3).2), (*t_3).1), (*t_3).3.clone().clone()) }); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPMapIndexOperator 2923(1750) - let stream2923: Stream<_, IndexedWSet, Option>>> = stream2921.map_index(move |t_8: &Tup2, Option>, | -> + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPMapIndexOperator 3429(1790) + let stream3429: Stream<_, IndexedWSet, Option>>> = stream3427.map_index(move |t_8: &Tup2, Option>, | -> (Tup0, Tup2, Option>, ) { (Tup0::new(), Tup2::new((*t_8).0, (*t_8).1.clone()), ) }); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPAggregateOperator 12862(1754) - let stream12862: Stream<_, IndexedWSet>>>> = stream2923.aggregate(Fold::<_, _, Semigroup1>, ConcatSemigroup>>>, _, _>::with_output(Tup1::new(vec!( + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPAggregateOperator 13452(1794) + let stream13452: Stream<_, IndexedWSet>>>> = stream3429.aggregate(Fold::<_, _, Semigroup1>, ConcatSemigroup>>>, _, _>::with_output(Tup1::new(vec!( )), move |t_32: &mut Tup1>>, t_9: &Tup2, Option>, t_34: Weight, | { (*t_32) = Tup1::new(array_agg(&mut (*t_32).0, (*t_9).0, t_34, false)) }, move |t_33: Tup1>>, | -> Tup1>> { Tup1::new(t_33.0) })); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPMapOperator 12864(1756) - let stream12864: Stream<_, WSet>>>> = stream12862.map(move |t_11: (&Tup0, &Tup1>>, ), | -> + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPMapOperator 13454(1796) + let stream13454: Stream<_, WSet>>>> = stream13452.map(move |t_11: (&Tup0, &Tup1>>, ), | -> Tup1>> { Tup1::new((*t_11.1).0.clone()) }); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPMapOperator 12869(1761) - let stream12869: Stream<_, WSet>>>> = stream12862.map(move |t_11: (&Tup0, &Tup1>>, ), | -> + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPMapOperator 13459(1801) + let stream13459: Stream<_, WSet>>>> = stream13452.map(move |t_11: (&Tup0, &Tup1>>, ), | -> Tup1>> { Tup1::new(vec!( )) }); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPNegateOperator 12874(1764) - let stream12874: Stream<_, WSet>>>> = stream12869.neg(); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - let stream886 = circuit.add_source(Generator::new(|| if Runtime::worker_index() == 0 {zset!( + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPNegateOperator 13464(1804) + let stream13464: Stream<_, WSet>>>> = stream13459.neg(); + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + let stream906 = circuit.add_source(Generator::new(|| if Runtime::worker_index() == 0 {zset!( Tup1::new(vec!( )) => 1, )} else {zset!( )})); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPDifferentiateOperator 1875(886) - let stream1875: Stream<_, WSet>>>> = stream886.differentiate(); - // rel#88:LogicalAggregate.(input=LogicalProject#86,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) - // DBSPSumOperator 12876(1766) - let stream12876: Stream<_, WSet>>>> = stream1875.sum([&stream12874, &stream12864]); + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPDifferentiateOperator 1915(906) + let stream1915: Stream<_, WSet>>>> = stream906.differentiate(); + // rel#87:LogicalAggregate.(input=LogicalProject#85,group={},CUST_ARRAY=ARRAY_AGG($0) WITHIN GROUP ([1])) + // DBSPSumOperator 13466(1806) + let stream13466: Stream<_, WSet>>>> = stream1915.sum([&stream13464, &stream13454]); // CREATE VIEW `CUST_AGG` AS - // SELECT ARRAY_AGG(`EXPR$0`.`C_ID` ORDER BY `EXPR$0`.`C_FIRST`) AS `CUST_ARRAY` - // FROM (SELECT `C`.`C_ID`, `C`.`C_FIRST` + // SELECT ARRAY_AGG(`EXPR$0`.`C_ID` + `EXPR$0`.`C_W_ID` + `EXPR$0`.`C_D_ID` ORDER BY `EXPR$0`.`C_FIRST`) AS `CUST_ARRAY` + // FROM (SELECT `C`.`C_ID`, `C`.`C_W_ID`, `C`.`C_D_ID`, `C`.`C_FIRST` // FROM `schema`.`CUSTOMER` AS `C`, // `schema`.`TRANSACTION_PARAMETERS` AS `T` // WHERE `C`.`C_LAST` = `T`.`C_LAST` AND `C`.`C_D_ID` = `T`.`C_D_ID` AND `C`.`C_W_ID` = `T`.`C_W_ID` // ORDER BY `C_FIRST`) AS `EXPR$0` - // DBSPSinkOperator 12878(904) - let handle12878 = stream12876.output(); + // DBSPSinkOperator 13468(924) + let handle13468 = stream13466.output(); - // rel#187:LogicalJoin.(left=LogicalTableScan#91,right=LogicalTableScan#93,condition==($0, ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) - // DBSPMapIndexOperator 1894(1779) - let stream1894: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream279.map_index(move |t_13: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#186:LogicalJoin.(left=LogicalTableScan#90,right=LogicalTableScan#92,condition==(+(+($0, $2), $1), ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) + // DBSPMapIndexOperator 1934(1819) + let stream1934: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream279.map_index(move |t_13: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> (Tup0, Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, ) { (Tup0::new(), Tup21::new((*t_13).0, (*t_13).1, (*t_13).2, (*t_13).3.clone(), (*t_13).4.clone(), (*t_13).5.clone(), (*t_13).6.clone(), (*t_13).7.clone(), (*t_13).8.clone(), (*t_13).9.clone(), (*t_13).10.clone(), (*t_13).11.clone(), (*t_13).12, (*t_13).13.clone(), (*t_13).14.clone(), (*t_13).15.clone(), (*t_13).16.clone(), (*t_13).17.clone(), (*t_13).18, (*t_13).19, (*t_13).20.clone()), ) }); - // rel#187:LogicalJoin.(left=LogicalTableScan#91,right=LogicalTableScan#93,condition==($0, ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) - // DBSPMapIndexOperator 12880(1783) - let stream12880: Stream<_, IndexedWSet>>>> = stream12876.map_index(move |t_14: &Tup1>>, | -> + // rel#186:LogicalJoin.(left=LogicalTableScan#90,right=LogicalTableScan#92,condition==(+(+($0, $2), $1), ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) + // DBSPMapIndexOperator 13470(1823) + let stream13470: Stream<_, IndexedWSet>>>> = stream13466.map_index(move |t_14: &Tup1>>, | -> (Tup0, Tup1>>, ) { (Tup0::new(), Tup1::new((*t_14).0.clone()), ) }); - // rel#187:LogicalJoin.(left=LogicalTableScan#91,right=LogicalTableScan#93,condition==($0, ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) - // DBSPJoinFlatmapOperator 12884(1789) - let stream12884: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>>> = stream1894.join_flatmap(&stream12880, move |t_16: &Tup0, t_13: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, t_14: &Tup1>>, | -> + // rel#186:LogicalJoin.(left=LogicalTableScan#90,right=LogicalTableScan#92,condition==(+(+($0, $2), $1), ITEM($21, +(/(ARRAY_LENGTH($21), 2), 1))),joinType=inner) + // DBSPJoinFilterMap 14116(1829) + let stream14116: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>>> = stream1934.join_flatmap(&stream13470, move |t_16: &Tup0, t_13: &Tup21, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>, t_14: &Tup1>>, | -> Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>> { let tmp: Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>> = Tup22::new((*t_13).0, (*t_13).1, (*t_13).2, (*t_13).3.clone(), (*t_13).4.clone(), (*t_13).5.clone(), (*t_13).6.clone(), (*t_13).7.clone(), (*t_13).8.clone(), (*t_13).9.clone(), (*t_13).10.clone(), (*t_13).11.clone(), (*t_13).12, (*t_13).13.clone(), (*t_13).14.clone(), (*t_13).15.clone(), (*t_13).16.clone(), (*t_13).17.clone(), (*t_13).18, (*t_13).19, (*t_13).20.clone(), (*t_14).0.clone()); - (if wrap_bool(eq_i32N_i32N(tmp.0, index__N_(tmp.21.clone(), cast_to_u_i32(plus_i32_i32(div_i32_i32(cardinality(tmp.21.clone()), 2i32), 1i32)) - 1))) { + (if wrap_bool(eq_i32N_i32N(plus_i32N_i32N(plus_i32N_i32N((*&tmp).0, (*&tmp).2), (*&tmp).1), index__N_((*&tmp).21.clone(), cast_to_u_i32(plus_i32_i32(div_i32_i32(cardinality((*&tmp).21.clone()), 2i32), 1i32)) - 1))) { Some(tmp) } else { None::, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>> }) }); - // rel#190:LogicalJoin.(left=LogicalJoin#187,right=LogicalTableScan#97,condition=true,joinType=inner) - // DBSPMapIndexOperator 12886(1792) - let stream12886: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>>> = stream12884.map_index(move |t_18: &Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, | -> + // rel#189:LogicalJoin.(left=LogicalJoin#186,right=LogicalTableScan#96,condition=true,joinType=inner) + // DBSPMapIndexOperator 14194(1832) + let stream14194: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>>> = stream14116.map_index(move |t_18: &Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, | -> (Tup0, Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, ) { (Tup0::new(), Tup22::new((*t_18).0, (*t_18).1, (*t_18).2, (*t_18).3.clone(), (*t_18).4.clone(), (*t_18).5.clone(), (*t_18).6.clone(), (*t_18).7.clone(), (*t_18).8.clone(), (*t_18).9.clone(), (*t_18).10.clone(), (*t_18).11.clone(), (*t_18).12, (*t_18).13.clone(), (*t_18).14.clone(), (*t_18).15.clone(), (*t_18).16.clone(), (*t_18).17.clone(), (*t_18).18, (*t_18).19, (*t_18).20.clone(), (*t_18).21.clone()), ) }); - // rel#190:LogicalJoin.(left=LogicalJoin#187,right=LogicalTableScan#97,condition=true,joinType=inner) - // DBSPMapIndexOperator 1921(1796) - let stream1921: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream337.map_index(move |t_19: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#189:LogicalJoin.(left=LogicalJoin#186,right=LogicalTableScan#96,condition=true,joinType=inner) + // DBSPMapIndexOperator 1961(1836) + let stream1961: Stream<_, IndexedWSet, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream337.map_index(move |t_19: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> (Tup0, Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, ) { (Tup0::new(), Tup10::new((*t_19).0, (*t_19).1, (*t_19).2, (*t_19).3, (*t_19).4, (*t_19).5, (*t_19).6.clone(), (*t_19).7.clone(), (*t_19).8, (*t_19).9), ) }); - // rel#190:LogicalJoin.(left=LogicalJoin#187,right=LogicalTableScan#97,condition=true,joinType=inner) - // DBSPJoinOperator 12890(1802) - let stream12890: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream12886.join(&stream1921, move |t_21: &Tup0, t_18: &Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, t_19: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> + // rel#189:LogicalJoin.(left=LogicalJoin#186,right=LogicalTableScan#96,condition=true,joinType=inner) + // DBSPJoinOperator 14302(1842) + let stream14302: Stream<_, WSet, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option>>> = stream14194.join(&stream1961, move |t_21: &Tup0, t_18: &Tup22, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Vec>>, t_19: &Tup10, Option, Option, Option, Option, Option, Option, Option, Option, Option>, | -> Tup14, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option, Option> { Tup14::new((*t_18).3.clone().clone(), (*t_18).4.clone().clone(), (*t_18).0, (*t_18).6.clone().clone(), (*t_18).7.clone().clone(), (*t_18).8.clone().clone(), (*t_18).9.clone().clone(), (*t_18).10.clone().clone(), (*t_18).11.clone().clone(), (*t_18).13.clone().clone(), (*t_18).14.clone().clone(), (*t_18).15.clone().clone(), (*t_18).16.clone().clone(), (*t_18).12) }); - // CREATE VIEW `CUST_MED` AS + // CREATE VIEW `CUST_BYNAME` AS // SELECT `C`.`C_FIRST`, `C`.`C_MIDDLE`, `C`.`C_ID`, `C`.`C_STREET_1`, `C`.`C_STREET_2`, `C`.`C_CITY`, `C`.`C_STATE`, `C`.`C_ZIP`, `C`.`C_PHONE`, `C`.`C_CREDIT`, `C`.`C_CREDIT_LIM`, `C`.`C_DISCOUNT`, `C`.`C_BALANCE`, `C`.`C_SINCE` // FROM `schema`.`CUSTOMER` AS `C`, // `schema`.`CUST_AGG` AS `A`, // `schema`.`TRANSACTION_PARAMETERS` AS `T` - // WHERE `C`.`C_ID` = `A`.`CUST_ARRAY`[ARRAY_LENGTH(`A`.`CUST_ARRAY`) / 2 + 1] - // DBSPSinkOperator 12892(1668) - let handle12892 = stream12890.output(); + // WHERE `C`.`C_ID` + `C`.`C_W_ID` + `C`.`C_D_ID` = `A`.`CUST_ARRAY`[ARRAY_LENGTH(`A`.`CUST_ARRAY`) / 2 + 1] + // DBSPSinkOperator 14321(1708) + let handle14321 = stream14302.output(); - Ok((handle49, handle67, handle120, handle143, handle166, handle279, handle337, handle12878, handle12892, )) + Ok((handle49, handle67, handle120, handle143, handle166, handle279, handle337, handle13468, handle14321, )) })?; Ok((circuit, streams)) } diff --git a/incremental_transactions/tpcc/src/lib.rs b/incremental_transactions/tpcc/src/lib.rs index d50a6cc7ac..4c37cf959f 100644 --- a/incremental_transactions/tpcc/src/lib.rs +++ b/incremental_transactions/tpcc/src/lib.rs @@ -1,18 +1,8 @@ -pub mod byname_max_sql; -pub mod byname_max_sql_incremental; pub mod byname_sql; pub mod byname_sql_incremental; pub mod payment_sql; pub mod payment_sql_incremental; -#[cfg(not(target_env = "msvc"))] -#[global_allocator] -static ALLOC: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; - -#[allow(non_upper_case_globals)] -#[export_name = "malloc_conf"] -pub static malloc_conf: &[u8] = b"prof:true,prof_active:true,lg_prof_sample:19\0"; - #[cfg(test)] mod test { use super::*; @@ -73,4 +63,52 @@ mod test { circuit.step().unwrap(); } + + #[test] + fn test_byname_sql() { + let cconf = CircuitConfig::with_workers(1); + let (mut circuit, handles) = byname_sql::circuit(cconf).unwrap(); + let ( + in_warehouse_static, + in_warehouse, + in_district_static, + in_district_next_id, + in_district_ytd, + in_customer, + in_transaction_parameters, + out_cust_agg, + out_cust_byname, + ) = handles; + in_customer.push( + ( + Some(1), + Some(43), + Some(44), + Some("Alice"), + None, + Some("Public"), + None, + None, + None, + None, + None, + None, + None, + None, + None, + None, + None, + None, + None, + None, + None, + ) + .into(), + 1, + ); + + circuit.step().unwrap(); + } + + fn customer(id: i32, w_id: i32, }