proc_vid.insert("fnE8F957BB_product_xs_decimal2", 1533297001LL); var_usage.insert(1533297002@0,1533297002@0); var_usage.insert(1533297004@0,1533297004@0); PROC fnE8F957BB_product_xs_decimal2 (bat[void,oid] loop000, bat[void,oid] outer000, bat[void,oid] order_000, bat[void,oid] inner000, bat[void,oid] v_vid000, bat[void,oid] v_iter000, bat[void,oid] v_item000, bat[void,int] v_kind000) : bat[void,bat] { # fn:product var iter; var item; var kind; var ipik; v_vid000 := [oid](v_vid000).access(BAT_WRITE); v_iter000 := [oid](v_iter000).access(BAT_WRITE); v_item000 := [oid](v_item000).access(BAT_WRITE); v_kind000 := [int](v_kind000).access(BAT_WRITE); { # translateVar (seq) var vid := v_vid000.ord_uselect(1533297001@0); vid := vid.hmark(0@0); iter := vid.leftfetchjoin(v_iter000); ipik := iter; } # end of translateVar (seq) { # translate fn:count (item*) as integer iter := iter.materialize(ipik); var iter_count := [lng]({count}(iter.reverse(),loop000.reverse(), FALSE)).tmark(0@0); item_int_ := iter_count; } # end of translate fn:count (item*) as integer { # saveResult1 () : int var item_int_001 := item_int_; # end of saveResult1 () : int iter := loop000.tmark(0@0); item_int_ := 0LL; { # '>' calculation var val_snd := item_int_; var val_fst := item_int_001; val_fst := [>](val_fst,val_snd); item := val_fst.[oid](); } # end of '>' calculation } # end of deleteResult1 () { # saveResult1 () : int var iter001 := iter; var item001 := item; # end of saveResult1 () : int { # ifthenelse-translation var selected; var skip; if (type(item001) = bat) { selected := item001.ord_uselect(1@0); var cnt := selected.count(); if (item001.count() = cnt) { skip := 2; } else { skip := int(cnt = 0); } } else { skip := 1 + int(item001); # handle constants efficiently } { # translateIfThen var loop001 := loop000; var inner001 := inner000; var outer001 := outer000; var order_001 := order_000; var v_vid001 := v_vid000; var v_iter001 := v_iter000; var v_item001 := v_item000; var v_kind001 := v_kind000; if (skip = 0) { iter := selected.mirror().join(iter001); iter := iter.tmark(0@0); outer001 := iter; order_001 := outer001.leftfetchjoin(inner000.reverse()).leftfetchjoin(order_000); iter := iter.mark(1@0); inner001 := iter; loop001 := inner001; var expOid := v_iter001.mirror(); var oidNew_expOid; { # expand () var expOid_iter := expOid.leftfetchjoin(v_iter000); var iter_expOid := expOid_iter.reverse(); var oidMap_expOid := outer001.leftjoin(iter_expOid); # FIXME: refine needed to make 'outer001.leftjoin(iter_expOid)' a stable join var temp_sort := oidMap_expOid.hmark(0@0).CTrefine(oidMap_expOid.tmark(0@0)).mirror(); oidMap_expOid := temp_sort.leftfetchjoin(oidMap_expOid.hmark(0@0)).reverse().leftfetchjoin(oidMap_expOid.tmark(0@0)) ; var expOid_oidMap := oidMap_expOid.reverse(); expOid_iter := expOid_oidMap.leftfetchjoin(inner001); v_iter001 := expOid_iter; oidNew_expOid := expOid_iter.hmark(0@0); } # end of expand () # join () var cnt := count(v_iter001)*2; var new_v_iter := v_iter001; v_iter001 := bat(void,oid,cnt).seqbase(0@0).access(BAT_APPEND).append(new_v_iter); var new_v_vid := oidNew_expOid.leftjoin(v_vid000); v_vid001 := bat(void,oid,cnt).seqbase(0@0).access(BAT_APPEND).insert(new_v_vid); var new_v_pos ; var new_v_item := oidNew_expOid.leftjoin(v_item000); v_item001 := bat(void,oid,cnt).seqbase(0@0).access(BAT_APPEND).insert(new_v_item); var new_v_kind := oidNew_expOid.leftjoin(v_kind000); v_kind001 := bat(void,int,cnt).seqbase(0@0).access(BAT_APPEND).insert(new_v_kind); # end of join () } if (skip != 1) { { var iter002; var item002; var kind002; var ipik003; var iter003; var item003; var match_outer003; var ipik004; var iter004; var item004; var match_outer004; var jouter003 ; var jorder_003 ; var jinner003 ; var jloop003 ; var jv_vid003 ; var jv_iter003; var jv_pos003 ; var jv_item003; var jv_kind003; iter := loop001.tmark(0@0); ipik := iter; item_int_ := 1LL; { var mapping := loop000.reverse().mirror(); mapping := mapping.leftjoin(outer001.reverse()); mapping := mapping.leftfetchjoin(inner001); match_outer003 := iter.leftjoin(mapping.reverse()).tmark(iter.seqbase()); } ipik003 := ipik; iter003 := iter; item003 := item_int_; jouter003 := outer001 ; jorder_003 := order_001 ; jinner003 := inner001 ; jloop003 := loop001 ; jv_vid003 := v_vid001 ; jv_iter003 := v_iter001; jv_item003 := v_item001; jv_kind003 := v_kind001; v_vid001 := v_vid000 .copy().access(BAT_WRITE); v_iter001 := v_iter000.copy().access(BAT_WRITE); v_item001 := v_item000.copy().access(BAT_WRITE); { # translateVar (seq) var vid := v_vid001.ord_uselect(1533297001@0); vid := vid.hmark(0@0); iter := vid.leftfetchjoin(v_iter001); item := vid.leftfetchjoin(v_item001); ipik := iter; } # end of translateVar (seq) { # for-translation # project () iter := iter.materialize(ipik); var outer002 := iter; iter := iter.mark(1@0); var inner002 := iter; var v_vid002; var v_iter002; var v_pos002; var v_item002; var v_kind002; iter002 := iter; item002 := item; var expOid; { # getExpanded (fid) var vu_nil := vu_fid.ord_uselect(1533297001@0); var vid_vu := vu_vid.reverse(); var oid_nil := vid_vu.leftjoin(vu_nil); expOid := v_vid001.leftjoin(oid_nil); expOid := expOid.mirror(); } # end of getExpanded (fid) if (expOid.count() != 0) { var oidNew_expOid; { # expand () var expOid_iter := expOid.leftfetchjoin(v_iter001); var iter_expOid := expOid_iter.reverse(); var oidMap_expOid := outer002.leftjoin(iter_expOid); # FIXME: refine needed to make 'outer002.leftjoin(iter_expOid)' a stable join var temp_sort := oidMap_expOid.hmark(0@0).CTrefine(oidMap_expOid.tmark(0@0)).mirror(); oidMap_expOid := temp_sort.leftfetchjoin(oidMap_expOid.hmark(0@0)).reverse().leftfetchjoin(oidMap_expOid.tmark(0@0)) ; var expOid_oidMap := oidMap_expOid.reverse(); expOid_iter := expOid_oidMap.leftfetchjoin(inner002); v_iter002 := expOid_iter; oidNew_expOid := expOid_iter.hmark(0@0); } # end of expand () # join () var cnt := count(v_iter002)*2; var new_v_iter := v_iter002; v_iter002 := bat(void,oid,cnt).seqbase(0@0).access(BAT_APPEND).append(new_v_iter); var new_v_vid := oidNew_expOid.leftjoin(v_vid001); v_vid002 := bat(void,oid,cnt).seqbase(0@0).access(BAT_APPEND).insert(new_v_vid); var new_v_pos ; var new_v_item := oidNew_expOid.leftjoin(v_item001); v_item002 := bat(void,oid,cnt).seqbase(0@0).access(BAT_APPEND).insert(new_v_item); var new_v_kind ; # end of join () } else { # createNewVarTable () v_iter002 := bat(void,oid).seqbase(0@0).access(BAT_APPEND); v_vid002 := bat(void,oid).seqbase(0@0).access(BAT_APPEND); v_item002 := bat(void,oid).seqbase(0@0).access(BAT_APPEND); } { # insertVar (vid) var vid := project(ipik,1533297002@0); { # append (vid, level) vid := vid.materialize(ipik); v_vid002 := v_vid002.append(vid); } # append (vid, level) { # append (iter, level) iter := iter.materialize(ipik); v_iter002 := v_iter002.append(iter); } # append (iter, level) # append (pos, level) { # append (item, level) item := item.materialize(ipik); v_item002 := v_item002.append(item); } # append (item, level) # append (kind, level) } # end of insertVar (vid) { # createEnumeration () var ints_cE := tmark_grp_unique(outer002, outer002).[lng](); item := int_values.addValues(ints_cE).tmark(0@0); iter := inner002.tmark(0@0); ipik := iter; } # end of createEnumeration () { # insertVar (vid) var vid := project(ipik,1533297003@0); { # append (vid, level) vid := vid.materialize(ipik); v_vid002 := v_vid002.append(vid); } # append (vid, level) { # append (iter, level) iter := iter.materialize(ipik); v_iter002 := v_iter002.append(iter); } # append (iter, level) # append (pos, level) { # append (item, level) item := item.materialize(ipik); v_item002 := v_item002.append(item); } # append (item, level) # append (kind, level) } # end of insertVar (vid) { # translateVar (#pf:pos_028) var vid := v_vid002.ord_uselect(1533297003@0); vid := vid.hmark(0@0); iter := vid.leftfetchjoin(v_iter002); item := vid.leftfetchjoin(v_item002); ipik := iter; } # end of translateVar (#pf:pos_028) ipik004 := ipik; iter004 := iter; item004 := item; match_outer004 := iter.leftfetchjoin(inner002.reverse()).leftfetchjoin(outer002); # cleanUpLevel () } # end of for-translation outer001 := jouter003 ; order_001 := jorder_003 ; inner001 := jinner003 ; loop001 := jloop003 ; v_vid001 := jv_vid003 ; v_iter001 := jv_iter003; v_item001 := jv_item003; v_kind001 := jv_kind003; var join_item1 := item003; var join_item2 := item004.leftfetchjoin(int_values); join_item1 := join_item1.materialize(ipik003); join_item1 := join_item1.reverse().leftfetchjoin(iter003).reverse(); join_item2 := join_item2.materialize(ipik004); join_item2 := join_item2.reverse().leftfetchjoin(iter004).reverse(); var join_result := ll_htordered_unique_thetajoin(EQ, join_item1, join_item2, match_outer003, match_outer004,nil,iter002.reverse()); var snd_iter := join_result.tmark(0@0); var fst_iter := join_result.hmark(0@0); # order_fst isn't needed until now # (cannot be pushed below the theta-join due to the 'iter := fst_iter;' hereafter) # var order_fst := fst_iter.leftfetchjoin(inner001.reverse()); var order_snd := snd_iter; #.leftfetchjoin(iter002.reverse()); pushed below theta-join # could also be pushed below theta-join, if order_snd wasn't needed for kind (below) ... item := order_snd.leftfetchjoin(item002); iter := fst_iter; } # end of evaluate_join if (iter.tunique().count() != loop001.count()) { ERROR ("err:FORG0005: function fn:exactly-one expects exactly one value."); } { # saveResult2 () : int var item002 := item; # end of saveResult2 () : int { # begin of UDF - function call # begin of add args in UDF function call var fun_base003 := proc_vid.find("fnE8F957BB_product_xs_decimal2"); var fun_vid003 := bat(void,oid); var fun_iter003 := bat(void,oid); var fun_item003 := bat(void,oid); var fun_kind003 := bat(void,int); { var iter004; var item004; var kind004; var ipik005; var iter005; var item005; var match_outer005; var ipik006; var iter006; var item006; var match_outer006; var jouter005 ; var jorder_005 ; var jinner005 ; var jloop005 ; var jv_vid005 ; var jv_iter005; var jv_pos005 ; var jv_item005; var jv_kind005; iter := loop001.tmark(0@0); ipik := iter; item_int_ := 1LL; { var mapping := loop000.reverse().mirror(); mapping := mapping.leftjoin(outer001.reverse()); mapping := mapping.leftfetchjoin(inner001); match_outer005 := iter.leftjoin(mapping.reverse()).tmark(iter.seqbase()); } ipik005 := ipik; iter005 := iter; item005 := item_int_; jouter005 := outer001 ; jorder_005 := order_001 ; jinner005 := inner001 ; jloop005 := loop001 ; jv_vid005 := v_vid001 ; jv_iter005 := v_iter001; jv_item005 := v_item001; jv_kind005 := v_kind001; v_vid001 := v_vid000 .copy().access(BAT_WRITE); v_iter001 := v_iter000.copy().access(BAT_WRITE); v_item001 := v_item000.copy().access(BAT_WRITE); v_kind001 := v_kind000.copy().access(BAT_WRITE); { # translateVar (seq) var vid := v_vid001.ord_uselect(1533297001@0); vid := vid.hmark(0@0); iter := vid.leftfetchjoin(v_iter001); item := vid.leftfetchjoin(v_item001); kind := vid.leftfetchjoin(v_kind001); ipik := iter; } # end of translateVar (seq) { # for-translation # project () iter := iter.materialize(ipik); var outer002 := iter; iter := iter.mark(1@0); var inner002 := iter; var v_vid002; var v_iter002; var v_pos002; var v_item002; var v_kind002; iter004 := iter; item004 := item; kind004 := kind; var expOid; { # getExpanded (fid) var vu_nil := vu_fid.ord_uselect(1533297003@0); var vid_vu := vu_vid.reverse(); var oid_nil := vid_vu.leftjoin(vu_nil); expOid := v_vid001.leftjoin(oid_nil); expOid := expOid.mirror(); } # end of getExpanded (fid) if (expOid.count() != 0) { var oidNew_expOid; { # expand () var expOid_iter := expOid.leftfetchjoin(v_iter001); var iter_expOid := expOid_iter.reverse(); var oidMap_expOid := outer002.leftjoin(iter_expOid); # FIXME: refine needed to make 'outer002.leftjoin(iter_expOid)' a stable join var temp_sort := oidMap_expOid.hmark(0@0).CTrefine(oidMap_expOid.tmark(0@0)).mirror(); oidMap_expOid := temp_sort.leftfetchjoin(oidMap_expOid.hmark(0@0)).reverse().leftfetchjoin(oidMap_expOid.tmark(0@0)) ; var expOid_oidMap := oidMap_expOid.reverse(); expOid_iter := expOid_oidMap.leftfetchjoin(inner002); v_iter002 := expOid_iter; oidNew_expOid := expOid_iter.hmark(0@0); } # end of expand () # join () var cnt := count(v_iter002)*2; var new_v_iter := v_iter002; v_iter002 := bat(void,oid,cnt).seqbase(0@0).access(BAT_APPEND).append(new_v_iter); var new_v_vid := oidNew_expOid.leftjoin(v_vid001); v_vid002 := bat(void,oid,cnt).seqbase(0@0).access(BAT_APPEND).insert(new_v_vid); var new_v_pos ; var new_v_item := oidNew_expOid.leftjoin(v_item001); v_item002 := bat(void,oid,cnt).seqbase(0@0).access(BAT_APPEND).insert(new_v_item); var new_v_kind ; # end of join () } else { # createNewVarTable () v_iter002 := bat(void,oid).seqbase(0@0).access(BAT_APPEND); v_vid002 := bat(void,oid).seqbase(0@0).access(BAT_APPEND); v_item002 := bat(void,oid).seqbase(0@0).access(BAT_APPEND); } { # insertVar (vid) var vid := project(ipik,1533297004@0); { # append (vid, level) vid := vid.materialize(ipik); v_vid002 := v_vid002.append(vid); } # append (vid, level) { # append (iter, level) iter := iter.materialize(ipik); v_iter002 := v_iter002.append(iter); } # append (iter, level) # append (pos, level) { # append (item, level) item := item.materialize(ipik); v_item002 := v_item002.append(item); } # append (item, level) # append (kind, level) } # end of insertVar (vid) { # createEnumeration () var ints_cE := tmark_grp_unique(outer002, outer002).[lng](); item := int_values.addValues(ints_cE).tmark(0@0); iter := inner002.tmark(0@0); ipik := iter; } # end of createEnumeration () { # insertVar (vid) var vid := project(ipik,1533297005@0); { # append (vid, level) vid := vid.materialize(ipik); v_vid002 := v_vid002.append(vid); } # append (vid, level) { # append (iter, level) iter := iter.materialize(ipik); v_iter002 := v_iter002.append(iter); } # append (iter, level) # append (pos, level) { # append (item, level) item := item.materialize(ipik); v_item002 := v_item002.append(item); } # append (item, level) # append (kind, level) } # end of insertVar (vid) { # translateVar (#pf:pos_054) var vid := v_vid002.ord_uselect(1533297005@0); vid := vid.hmark(0@0); iter := vid.leftfetchjoin(v_iter002); item := vid.leftfetchjoin(v_item002); ipik := iter; } # end of translateVar (#pf:pos_054) ipik006 := ipik; iter006 := iter; item006 := item; match_outer006 := iter.leftfetchjoin(inner002.reverse()).leftfetchjoin(outer002); # cleanUpLevel () } # end of for-translation outer001 := jouter005 ; order_001 := jorder_005 ; inner001 := jinner005 ; loop001 := jloop005 ; v_vid001 := jv_vid005 ; v_iter001 := jv_iter005; v_item001 := jv_item005; v_kind001 := jv_kind005; var join_item1 := item005; var join_item2 := item006.leftfetchjoin(int_values); join_item1 := join_item1.materialize(ipik005); join_item1 := join_item1.reverse().leftfetchjoin(iter005).reverse(); join_item2 := join_item2.materialize(ipik006); join_item2 := join_item2.reverse().leftfetchjoin(iter006).reverse(); var join_result := ll_htordered_unique_thetajoin(LT, join_item1, join_item2, match_outer005, match_outer006,nil,iter004.reverse()); var snd_iter := join_result.tmark(0@0); var fst_iter := join_result.hmark(0@0); ipik := fst_iter; # order_fst isn't needed until now # (cannot be pushed below the theta-join due to the 'iter := fst_iter;' hereafter) # var order_fst := fst_iter.leftfetchjoin(inner001.reverse()); var order_snd := snd_iter; #.leftfetchjoin(iter004.reverse()); pushed below theta-join # could also be pushed below theta-join, if order_snd wasn't needed for kind (below) ... item := order_snd.leftfetchjoin(item004); iter := fst_iter; # could also be pushed below theta-join, if order_snd wasn't needed for item (above) ... kind := order_snd.leftfetchjoin(kind004); } # end of evaluate_join iter := iter.materialize(ipik); item := item.materialize(ipik); kind := kind.materialize(ipik); fun_vid003 := fun_vid003.append(item.project(oid(fun_base003 + 0LL))); fun_iter003 := fun_iter003.append(iter); fun_item003 := fun_item003.append(item); kind := kind.materialize(ipik); fun_kind003 := fun_kind003.append(kind); # end of add arg in UDF function call var expOid; { # getExpanded (fid) var vu_nil := vu_fid.ord_uselect(1533297005@0); var vid_vu := vu_vid.reverse(); var oid_nil := vid_vu.leftjoin(vu_nil); expOid := v_vid001.leftjoin(oid_nil); expOid := expOid.mirror(); } # end of getExpanded (fid) var vid := expOid.leftfetchjoin(v_vid001); iter := expOid.leftfetchjoin(v_iter001); item := expOid.leftfetchjoin(v_item001); kind := expOid.leftfetchjoin(v_kind001); fun_vid003 := fun_vid003.append(vid); fun_iter003 := fun_iter003.append(iter); fun_item003 := fun_item003.append(item); fun_kind003 := fun_kind003.append(kind); fun_vid003 := fun_vid003.tmark(0@0); fun_iter003 := fun_iter003.tmark(0@0); fun_item003 := fun_item003.tmark(0@0); fun_kind003 := fun_kind003.tmark(0@0); { var proc_res := fnE8F957BB_product_xs_decimal2(loop001, outer001, order_001, inner001, fun_vid003, fun_iter003, fun_item003, fun_kind003); #product iter := proc_res.fetch(0); item := proc_res.fetch(1); kind := proc_res.fetch(2); if (type(iter) = bat) { ipik := iter; } else { if (type(item) = bat) { ipik := item; } else { ipik := kind; } } } } # end of UDF - function call { # '*' calculation var val_snd := item.leftfetchjoin(dec_values); var val_fst := item002.leftfetchjoin(dec_values); val_fst := [*](val_fst,val_snd); item := dec_values.addValues(val_fst).tmark(0@0); } # end of '*' calculation } # end of deleteResult2 () } else { # translateEmpty () ipik := empty_bat; iter := empty_bat; item := empty_bat; kind := empty_kind_bat; } if (skip = 0) { { # mapBack () var iter_oidMap := inner001.reverse(); var oid_oidMap := iter.leftfetchjoin(iter_oidMap); iter := oid_oidMap.leftfetchjoin(outer001); # item := item; # kind := kind; # ipik := ipik; } # end of mapBack () } # cleanUpLevel () } # end of translateIfThen { # saveResult2 () : int var ipik002 := ipik; var iter002 := iter; var pos002 ; var item002 := item; var kind002 := kind; # end of saveResult2 () : int { # translateIfThen var loop001 := loop000; var inner001 := inner000; var outer001 := outer000; if (skip = 0) { selected := item001.ord_uselect(0@0); iter := selected.mirror().join(iter001); iter := iter.tmark(0@0); outer001 := iter; iter := iter.mark(1@0); inner001 := iter; loop001 := inner001; var expOid ; var oidNew_expOid; { # expand () var expOid_iter ; var iter_expOid ; var oidMap_expOid ; # FIXME: refine needed to make 'outer001.leftjoin(iter_expOid)' a stable join var temp_sort ; var expOid_oidMap ; } # end of expand () # join () var cnt ; var new_v_iter ; var new_v_vid ; var new_v_pos ; var new_v_item ; var new_v_kind ; # end of join () } if (skip != 2) { { dec_values.append(dbl(1LL)); var itemID := dec_values.reverse().find(dbl(1LL)); # translateConst (kind) iter := loop001.tmark(0@0); ipik := iter; item := itemID; kind := DEC; } } else { # translateEmpty () ipik := empty_bat; iter := empty_bat; item := empty_bat; kind := empty_kind_bat; } if (skip = 0) { { # mapBack () var iter_oidMap := inner001.reverse(); var oid_oidMap := iter.leftfetchjoin(iter_oidMap); iter := oid_oidMap.leftfetchjoin(outer001); # item := item; # kind := kind; # ipik := ipik; } # end of mapBack () } # cleanUpLevel () } # end of translateIfThen if (ipik.count() = 0) { iter := iter002; item := item002; kind := kind002; } else { if (ipik002.count() != 0) { # translateSeq (counter) var merged_result := merged_union (iter002.chk_order(), iter.chk_order(), item002, item, kind002, kind); iter := merged_result.fetch(0); item := merged_result.fetch(1); kind := merged_result.fetch(2); } # end of translateSeq (counter) } } # end of deleteResult2 () } # end of ifthenelse-translation } # end of deleteResult1 () return bat(void,bat,4).append(iter).append(item).append(kind).access(BAT_READ); } # end of PROC fnE8F957BB_product_xs_decimal2