📄 tst4730.mal
字号:
#TPCH query 1# the basis for further optimizer tests#don;t depend on SQL libraryfunction user.bind(s:str,t:str,c:str,i:int):bat[:any_1,:any_2]; return bat.new(:any_1,:any_2);end bind;function user.bind_dbat(s:str,t:str,i:int):bat[:any_1,:any_2]; return bat.new(:any_1,:any_2);end bind_dbat;function user.column(b:bat[:oid,:any_1],s:str,t:str,i:int,j:int):void;end column;factory qry1(A0:sht,A1:sht,A2:sht,A3:date,A4:int):bit; V6:bat[:oid,:date]{rows=1000} := user.bind("sys","lineitem","l_shipdate",0); V11:bat[:oid,:oid]{rows=1000} := user.bind_dbat("sys","lineitem",0); V22:bat[:oid,:bit]{rows=1000} := user.bind("sys","lineitem","l_returnflag",0); V29:bat[:oid,:bit]{rows=1000} := user.bind("sys","lineitem","l_linestatus",0); V53:bat[:oid,:int]{rows=1000} := user.bind("sys","lineitem","l_quantity",0); V60:bat[:oid,:flt]{rows=1000} := user.bind("sys","lineitem","l_extendedprice",0); V75:bat[:oid,:flt]{rows=1000} := user.bind("sys","lineitem","l_discount",0); V105:bat[:oid,:flt]{rows=1000} := user.bind("sys","lineitem","l_tax",0);barrier always := true; V12 := bat.reverse(V11); V13 := algebra.kdifference(V6,V12); V16 := mtime.date_sub_sec_interval(A3,A4); a := mtime.date(nil); V17 := algebra.uselect(V13,a,V16); V20 := algebra.markT(V17,0@0); V21 := bat.reverse(V20); V26 := algebra.kdifference(V22,V12); V27 := algebra.join(V21,V26); (h,V28) := group.new(V27); V33 := algebra.kdifference(V29,V12); V34 := algebra.join(V21,V33); (Ext,V35) := group.derive(h,V28,V34); V36 := algebra.tunique(Ext); V37 := bat.mirror(V36); V42 := algebra.join(V37,V27); V43 := algebra.sort(V42); V51 := algebra.join(V37,V34); V52 := group.refine(V43,V51); V57 := algebra.kdifference(V53,V12); V58 := algebra.join(V21,V57); V59 := aggr.sum(V58,V35,V37); V64 := algebra.kdifference(V60,V12); V65 := algebra.join(V21,V64); V66 := aggr.sum(V65,V35,V37); V72 := calc.lng(A0); V74 := calc.*(V72,100); V82 := algebra.kdifference(V75,V12); V83 := algebra.join(V21,V82); V84:bat[:oid,:flt] := optimizer.multiplex("calc.-",V74,V83); V86 := batcalc.*(V65,V84); V88 := aggr.sum(V86,V35,V37); V94 := calc.lng(A1); V95 := calc.*(V94,100); V100:bat[:oid,:flt] := optimizer.multiplex("calc.-",V95,V83); V101 := batcalc.*(V65,V100); V103 := calc.lng(A2); V104 := calc.*(V103,100); V109 := algebra.kdifference(V105,V12); V110 := algebra.join(V21,V109); V111:bat[:oid,:flt] := optimizer.multiplex("calc.+",V104,V110); V113 := batcalc.*(V101,V111); V114 := aggr.sum(V113,V35,V37); V122 := aggr.avg(V58,V35,V37); V127 := aggr.avg(V65,V35,V37); V129 := optimizer.multiplex("calc.round",V127,100); V135 := aggr.avg(V83,V35,V37); V136 := optimizer.multiplex("calc.round",V135,100); V137 := aggr.count(V35,V35,V37); #sql.column(V42,"l_returnflag","varchar",1,0); #sql.column(V51,"l_linestatus","varchar",1,0); #sql.column(V59,"sum_qty","bigint",0,0); #sql.column(V66,"sum_base_price","decimal",19,2); #sql.column(V88,"sum_disc_price","decimal",19,4); #sql.column(V114,"sum_charge","decimal",19,6); #sql.column(V122,"avg_qty","double",53,0); #sql.column(V129,"avg_price","double",53,0); #sql.column(V136,"avg_disc","double",53,0); #sql.column(V137,"count_order","int",0,0); #sql.output(V52,V42,V51,V59,V66,V88,V114,V122,V129,V136,V137); yield always; redo always;exit always; return always;end qry1;optimizer.costModel("user","qry1");mdb.list("user","qry1");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -