Changeset: 63038f6a6091 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=63038f6a6091
Modified Files:
        monetdb5/optimizer/opt_coercion.c
        sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128
Branch: default
Log Message:

Minor typos to opt_coercion and approvals
and enabled again de batcalc.dbl()


diffs (285 lines):

diff --git a/monetdb5/optimizer/opt_coercion.c 
b/monetdb5/optimizer/opt_coercion.c
--- a/monetdb5/optimizer/opt_coercion.c
+++ b/monetdb5/optimizer/opt_coercion.c
@@ -18,11 +18,6 @@ typedef struct{
        int fromtype;
        int totype;
        int src;
-/* not used, yet !?? Indeed
-       int digits;
-       int fromscale;
-       int scale;
-*/
 } Coercion;
 
 static int
@@ -71,27 +66,27 @@ coercionOptimizerCalcStep(Client cntxt, 
 
        a = getColumnType(getVarType(mb, getArg(p,1)));
        b = getColumnType(getVarType(mb, getArg(p,2)));
-       if ( a == r && coerce[getArg(p,1)].src && coerce[getArg(p,1)].fromtype 
< r ) 
+       varid = getArg(p,1);
+       if ( a == r && coerce[varid].src && coerce[varid].fromtype < r ) 
        {
 #ifdef _DEBUG_COERCION_
                mnstr_printf(cntxt->fdout,"#remove upcast on first argument 
%d\n", getArg(p,1));
                printInstruction(cntxt->fdout, mb, 0, p, LIST_MAL_ALL);
 #endif
-               varid = getArg(p,1);
-               getArg(p,1) = coerce[getArg(p,1)].src;
-               if ( chkInstruction(NULL, cntxt->nspace, mb, p))
-                       p->argv[1] = varid;
+               getArg(p,1) = coerce[varid].src;
+               if ( chkInstruction(NULL, cntxt->nspace, mb, p) || p->typechk 
== TYPE_UNKNOWN)
+                       getArg(p,1)= varid;
        }
-       if ( b == r && coerce[getArg(p,2)].src &&  coerce[getArg(p,2)].fromtype 
< r ) 
+       varid = getArg(p,2);
+       if ( b == r && coerce[varid].src &&  coerce[varid].fromtype < r ) 
        {
 #ifdef _DEBUG_COERCION_
                mnstr_printf(cntxt->fdout,"#remove upcast on second argument 
%d\n", getArg(p,2));
                printInstruction(cntxt->fdout, mb, 0, p, LIST_MAL_ALL);
 #endif
-               varid = getArg(p,2);
-               getArg(p,2) = coerce[getArg(p,2)].src;
-               if ( chkInstruction(NULL, cntxt->nspace, mb, p))
-                       p->argv[2] = varid;
+               getArg(p,2) = coerce[varid].src;
+               if ( chkInstruction(NULL, cntxt->nspace, mb, p) || p->typechk 
== TYPE_UNKNOWN)
+                       getArg(p,2) = varid;
        }
 #ifdef _DEBUG_COERCION_
                mnstr_printf(cntxt->fdout,"#final instruction\n");
@@ -114,8 +109,11 @@ coercionOptimizerAggrStep(Client cntxt, 
 
        r = getColumnType(getVarType(mb, getArg(p,0)));
        k = getArg(p,1);
-       if( r == TYPE_dbl &&  coerce[k].src )
+       if( r == TYPE_dbl &&  coerce[k].src ){
                getArg(p,1) = coerce[getArg(p,1)].src;
+               if ( chkInstruction(NULL, cntxt->nspace, mb, p) || p->typechk 
== TYPE_UNKNOWN)
+                       getArg(p,1)= k;
+       }
        return;
 }
 
@@ -158,14 +156,8 @@ OPTcoercionImplementation(Client cntxt,M
                        coerce[k].totype= TYPE_hge;
                        coerce[k].src= getArg(p,2);
                        coerce[k].fromtype= getColumnType(getArgType(mb,p,2));
-/* not used, yet !?? indeed
-                       coerce[k].fromscale= 
getVarConstant(mb,getArg(p,1)).val.ival;
-                       coerce[k].digits= 
getVarConstant(mb,getArg(p,3)).val.ival;
-                       coerce[k].scale= 
getVarConstant(mb,getArg(p,4)).val.ival;
-*/
                }
 #endif
-/*
                if ( getModuleId(p) == batcalcRef
                     && getFunctionId(p) == dblRef
                     && p->retc == 1
@@ -181,7 +173,6 @@ OPTcoercionImplementation(Client cntxt,M
                        coerce[k].src= getArg(p,1 + (p->argc ==3));
                        coerce[k].fromtype= getColumnType(getArgType(mb,p,1 + 
(p->argc ==3)));
                }
-*/
                coercionOptimizerAggrStep(cntxt,mb, i, coerce);
                coercionOptimizerCalcStep(cntxt,mb, i, coerce);
                if (getModuleId(p)==calcRef && p->argc == 2) {
diff --git a/sql/benchmarks/tpch/Tests/01-explain.stable.out.int128 
b/sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
--- a/sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
+++ b/sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
@@ -52,17 +52,17 @@ Ready.
 % clob # type
 % 622 # length
 function user.s2_1{autoCommit=true}(A0:bte,A1:bte,A2:bte,A3:date,A4:lng):void;
-    X_168:void := querylog.define("explain 
select\n\tl_returnflag,\n\tl_linestatus,\n\tsum(l_quantity) as 
sum_qty,\n\tsum(l_extendedprice) as sum_base_price,\n\tsum(l_extendedprice * (1 
- l_discount)) as sum_disc_price,\n\tsum(l_extendedprice * (1 - l_discount) * 
(1 + l_tax)) as sum_charge,\n\tavg(l_quantity) as 
avg_qty,\n\tavg(l_extendedprice) as avg_price,\n\tavg(l_discount) as 
avg_disc,\n\tcount(*) as count_order\nfrom\n\tlineitem\nwhere\n\tl_shipdate <= 
date \\'1998-12-01\\' - interval \\'90\\' day (3)\ngroup 
by\n\tl_returnflag,\n\tl_linestatus\norder 
by\n\tl_returnflag,\n\tl_linestatus;","sequential_pipe",86);
+    X_167:void := querylog.define("explain 
select\n\tl_returnflag,\n\tl_linestatus,\n\tsum(l_quantity) as 
sum_qty,\n\tsum(l_extendedprice) as sum_base_price,\n\tsum(l_extendedprice * (1 
- l_discount)) as sum_disc_price,\n\tsum(l_extendedprice * (1 - l_discount) * 
(1 + l_tax)) as sum_charge,\n\tavg(l_quantity) as 
avg_qty,\n\tavg(l_extendedprice) as avg_price,\n\tavg(l_discount) as 
avg_disc,\n\tcount(*) as count_order\nfrom\n\tlineitem\nwhere\n\tl_shipdate <= 
date \\'1998-12-01\\' - interval \\'90\\' day (3)\ngroup 
by\n\tl_returnflag,\n\tl_linestatus\norder 
by\n\tl_returnflag,\n\tl_linestatus;","sequential_pipe",85);
     X_7 := sql.mvc();
     X_11:bat[:oid,:date]  := sql.bind(X_7,"sys","lineitem","l_shipdate",0);
     X_8:bat[:oid,:oid]  := sql.tid(X_7,"sys","lineitem");
     X_19 := mtime.date_sub_msec_interval(A3,A4);
-    X_187 := algebra.thetasubselect(X_11,X_8,X_19,"<=");
+    X_186 := algebra.thetasubselect(X_11,X_8,X_19,"<=");
     (X_14,r1_14) := sql.bind(X_7,"sys","lineitem","l_shipdate",2);
-    X_188 := algebra.thetasubselect(r1_14,nil:bat[:oid,:oid],X_19,"<=");
+    X_187 := algebra.thetasubselect(r1_14,nil:bat[:oid,:oid],X_19,"<=");
     X_17:bat[:oid,:date]  := sql.bind(X_7,"sys","lineitem","l_shipdate",1);
-    X_190 := algebra.thetasubselect(X_17,X_8,X_19,"<=");
-    X_20 := sql.subdelta(X_187,X_8,X_14,X_188,X_190);
+    X_189 := algebra.thetasubselect(X_17,X_8,X_19,"<=");
+    X_20 := sql.subdelta(X_186,X_8,X_14,X_187,X_189);
     X_22:bat[:oid,:str]  := sql.bind(X_7,"sys","lineitem","l_linestatus",0);
     (X_24,r1_28) := sql.bind(X_7,"sys","lineitem","l_linestatus",2);
     X_26:bat[:oid,:str]  := sql.bind(X_7,"sys","lineitem","l_linestatus",1);
@@ -104,38 +104,37 @@ function user.s2_1{autoCommit=true}(A0:b
     X_101:bat[:oid,:lng] := batcalc.+(X_94,X_100);
     X_102:bat[:oid,:hge] := batcalc.*(X_93,X_101);
     X_103:bat[:oid,:hge] := aggr.subsum(X_102,X_37,r1_45,true,true);
-    X_105 := batcalc.dbl(X_61);
-    X_106:bat[:oid,:dbl] := aggr.subavg(X_105,X_37,r1_45,true,true);
-    X_108:bat[:oid,:dbl] := batcalc.dbl(2,X_70);
-    X_110:bat[:oid,:dbl] := aggr.subavg(X_108,X_37,r1_45,true,true);
-    X_112:bat[:oid,:dbl] := batcalc.dbl(2,X_85);
-    X_113:bat[:oid,:dbl] := aggr.subavg(X_112,X_37,r1_45,true,true);
-    X_116:bat[:oid,:wrd] := aggr.subcount(X_37,X_37,r1_45,false);
+    X_105:bat[:oid,:dbl] := aggr.subavg(X_61,X_37,r1_45,true,true);
+    X_107:bat[:oid,:dbl] := batcalc.dbl(2,X_70);
+    X_109:bat[:oid,:dbl] := aggr.subavg(X_107,X_37,r1_45,true,true);
+    X_111:bat[:oid,:dbl] := batcalc.dbl(2,X_85);
+    X_112:bat[:oid,:dbl] := aggr.subavg(X_111,X_37,r1_45,true,true);
+    X_115:bat[:oid,:wrd] := aggr.subcount(X_37,X_37,r1_45,false);
     (X_42,r1_50,r2_50) := algebra.subsort(X_41,false,false);
     (X_46,r1_54,r2_54) := algebra.subsort(X_40,r1_50,r2_50,false,false);
     X_49 := algebra.leftfetchjoin(r1_54,X_41);
-    X_118 := algebra.leftfetchjoin(r1_54,X_116);
-    X_115 := algebra.leftfetchjoin(r1_54,X_113);
-    X_111 := algebra.leftfetchjoin(r1_54,X_110);
-    X_107 := algebra.leftfetchjoin(r1_54,X_106);
+    X_117 := algebra.leftfetchjoin(r1_54,X_115);
+    X_114 := algebra.leftfetchjoin(r1_54,X_112);
+    X_110 := algebra.leftfetchjoin(r1_54,X_109);
+    X_106 := algebra.leftfetchjoin(r1_54,X_105);
     X_104 := algebra.leftfetchjoin(r1_54,X_103);
     X_90 := algebra.leftfetchjoin(r1_54,X_88);
     X_72 := algebra.leftfetchjoin(r1_54,X_71);
     X_64 := algebra.leftfetchjoin(r1_54,X_62);
     X_50 := algebra.leftfetchjoin(r1_54,X_40);
-    X_119 := sql.resultSet(10,1,X_49);
-    sql.rsColumn(X_119,"sys.lineitem","l_returnflag","varchar",1,0,X_49);
-    sql.rsColumn(X_119,"sys.lineitem","l_linestatus","varchar",1,0,X_50);
-    sql.rsColumn(X_119,"sys.L1","sum_qty","hugeint",128,0,X_64);
-    sql.rsColumn(X_119,"sys.L2","sum_base_price","decimal",15,2,X_72);
-    sql.rsColumn(X_119,"sys.L3","sum_disc_price","decimal",33,4,X_90);
-    sql.rsColumn(X_119,"sys.L4","sum_charge","decimal",39,6,X_104);
-    sql.rsColumn(X_119,"sys.L5","avg_qty","double",53,0,X_107);
-    sql.rsColumn(X_119,"sys.L6","avg_price","double",53,0,X_111);
-    sql.rsColumn(X_119,"sys.L7","avg_disc","double",53,0,X_115);
-    sql.rsColumn(X_119,"sys.L10","count_order","wrd",64,0,X_118);
-    X_166 := io.stdout();
-    sql.exportResult(X_166,X_119);
+    X_118 := sql.resultSet(10,1,X_49);
+    sql.rsColumn(X_118,"sys.lineitem","l_returnflag","varchar",1,0,X_49);
+    sql.rsColumn(X_118,"sys.lineitem","l_linestatus","varchar",1,0,X_50);
+    sql.rsColumn(X_118,"sys.L1","sum_qty","hugeint",128,0,X_64);
+    sql.rsColumn(X_118,"sys.L2","sum_base_price","decimal",15,2,X_72);
+    sql.rsColumn(X_118,"sys.L3","sum_disc_price","decimal",33,4,X_90);
+    sql.rsColumn(X_118,"sys.L4","sum_charge","decimal",39,6,X_104);
+    sql.rsColumn(X_118,"sys.L5","avg_qty","double",53,0,X_106);
+    sql.rsColumn(X_118,"sys.L6","avg_price","double",53,0,X_110);
+    sql.rsColumn(X_118,"sys.L7","avg_disc","double",53,0,X_114);
+    sql.rsColumn(X_118,"sys.L10","count_order","wrd",64,0,X_117);
+    X_165 := io.stdout();
+    sql.exportResult(X_165,X_118);
 end user.s2_1;
 
 # 22:53:25 >  
diff --git a/sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 
b/sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
--- a/sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
+++ b/sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
@@ -48,7 +48,7 @@ Ready.
 % clob # type
 % 378 # length
 function user.s2_1{autoCommit=true}(A0:bte,A1:str,A2:str,A3:dbl):void;
-    X_119:void  := querylog.define("explain select\n\tsum(l_extendedprice) / 
7.0 as avg_yearly\nfrom\n\tlineitem,\n\tpart\nwhere\n\tp_partkey = 
l_partkey\n\tand p_brand = \\'Brand#23\\'\n\tand p_container = \\'MED 
BOX\\'\n\tand l_quantity < (\n\t\tselect\n\t\t\t0.2 * 
avg(l_quantity)\n\t\tfrom\n\t\t\tlineitem\n\t\twhere\n\t\t\tl_partkey = 
p_partkey\n\t);","sequential_pipe",68);
+    X_118:void := querylog.define("explain select\n\tsum(l_extendedprice) / 
7.0 as avg_yearly\nfrom\n\tlineitem,\n\tpart\nwhere\n\tp_partkey = 
l_partkey\n\tand p_brand = \\'Brand#23\\'\n\tand p_container = \\'MED 
BOX\\'\n\tand l_quantity < (\n\t\tselect\n\t\t\t0.2 * 
avg(l_quantity)\n\t\tfrom\n\t\t\tlineitem\n\t\twhere\n\t\t\tl_partkey = 
p_partkey\n\t);","sequential_pipe",67);
     X_6 := sql.mvc();
     X_7:bat[:oid,:oid]  := sql.tid(X_6,"sys","lineitem");
     X_10:bat[:oid,:int]  := sql.bind(X_6,"sys","lineitem","l_partkey",0);
@@ -62,18 +62,18 @@ function user.s2_1{autoCommit=true}(A0:b
     X_27:bat[:oid,:str]  := sql.bind(X_6,"sys","part","p_container",0);
     X_32:bat[:oid,:str]  := sql.bind(X_6,"sys","part","p_brand",0);
     X_25:bat[:oid,:oid]  := sql.tid(X_6,"sys","part");
-    X_142 := algebra.subselect(X_32,X_25,A1,A1,true,true,false);
+    X_141 := algebra.subselect(X_32,X_25,A1,A1,true,true,false);
     (X_34,r1_40) := sql.bind(X_6,"sys","part","p_brand",2);
-    X_143 := algebra.subselect(r1_40,nil:bat[:oid,:oid],A1,A1,true,true,false);
+    X_142 := algebra.subselect(r1_40,nil:bat[:oid,:oid],A1,A1,true,true,false);
     X_37:bat[:oid,:str]  := sql.bind(X_6,"sys","part","p_brand",1);
-    X_145 := algebra.subselect(X_37,X_25,A1,A1,true,true,false);
-    X_38 := sql.subdelta(X_142,X_25,X_34,X_143,X_145);
-    X_146 := algebra.subselect(X_27,X_38,A2,A2,true,true,false);
+    X_144 := algebra.subselect(X_37,X_25,A1,A1,true,true,false);
+    X_38 := sql.subdelta(X_141,X_25,X_34,X_142,X_144);
+    X_145 := algebra.subselect(X_27,X_38,A2,A2,true,true,false);
     (X_29,r1_32) := sql.bind(X_6,"sys","part","p_container",2);
-    X_147 := algebra.subselect(r1_32,nil:bat[:oid,:oid],A2,A2,true,true,false);
+    X_146 := algebra.subselect(r1_32,nil:bat[:oid,:oid],A2,A2,true,true,false);
     X_31:bat[:oid,:str]  := sql.bind(X_6,"sys","part","p_container",1);
-    X_149 := algebra.subselect(X_31,X_38,A2,A2,true,true,false);
-    X_41 := sql.subdelta(X_146,X_38,X_29,X_147,X_149);
+    X_148 := algebra.subselect(X_31,X_38,A2,A2,true,true,false);
+    X_41 := sql.subdelta(X_145,X_38,X_29,X_146,X_148);
     X_42 := X_41;
     (X_43,r1_52) := algebra.subjoin(X_24,X_42,nil:BAT,nil:BAT,false,nil:lng);
     X_47:bat[:oid,:int]  := sql.bind(X_6,"sys","part","p_partkey",0);
@@ -90,30 +90,29 @@ function user.s2_1{autoCommit=true}(A0:b
     X_69:bat[:oid,:oid]  := batcalc.identity(X_68);
     X_70 := algebra.leftfetchjoin(r1_69,X_69);
     (X_71,r1_85,r2_85) := group.subgroupdone(X_70);
-    X_150 := algebra.leftfetchjoin(r1_85,r1_69);
+    X_149 := algebra.leftfetchjoin(r1_85,r1_69);
     X_74:bat[:oid,:int]  := sql.bind(X_6,"sys","lineitem","l_quantity",0);
     (X_76,r1_90) := sql.bind(X_6,"sys","lineitem","l_quantity",2);
     X_78:bat[:oid,:int]  := sql.bind(X_6,"sys","lineitem","l_quantity",1);
     X_79 := sql.projectdelta(X_7,X_74,X_76,r1_90,X_78);
     X_86 := algebra.leftfetchjoin(X_58,X_79);
-    X_87 := batcalc.dbl(X_86);
-    X_88:bat[:oid,:dbl]  := aggr.subavg(X_87,X_71,r1_85,true,true);
-    X_80:bat[:oid,:int]  := algebra.leftfetchjoinPath(X_150,X_43,X_79);
+    X_87:bat[:oid,:dbl] := aggr.subavg(X_86,X_71,r1_85,true,true);
+    X_80:bat[:oid,:int] := algebra.leftfetchjoinPath(X_149,X_43,X_79);
     X_81 := batcalc.dbl(X_80);
-    X_90:bat[:oid,:dbl] := batcalc.*(A3,X_88);
-    X_91:bat[:oid,:bit] := batcalc.<(X_81,X_90);
-    X_92 := algebra.subselect(X_91,true,true,true,true,false);
-    X_94:bat[:oid,:lng]  := sql.bind(X_6,"sys","lineitem","l_extendedprice",0);
-    (X_97,r1_124) := sql.bind(X_6,"sys","lineitem","l_extendedprice",2);
-    X_99:bat[:oid,:lng]  := sql.bind(X_6,"sys","lineitem","l_extendedprice",1);
-    X_100 := sql.projectdelta(X_7,X_94,X_97,r1_124,X_99);
-    X_101:bat[:oid,:lng]  := algebra.leftfetchjoinPath(X_92,X_150,X_43,X_100);
-    X_102:hge := aggr.sum(X_101);
-    X_103 := calc.lng(2,X_102,15,2);
-    X_105 := calc.lng(2,X_103,18,5);
-    X_109 := calc.lng(1,A0,15,2);
-    X_111 := calc./(X_105,X_109);
-    sql.exportValue(1,"sys.L3","avg_yearly","decimal",18,3,10,X_111,"");
+    X_89:bat[:oid,:dbl] := batcalc.*(A3,X_87);
+    X_90:bat[:oid,:bit] := batcalc.<(X_81,X_89);
+    X_91 := algebra.subselect(X_90,true,true,true,true,false);
+    X_93:bat[:oid,:lng] := sql.bind(X_6,"sys","lineitem","l_extendedprice",0);
+    (X_96,r1_124) := sql.bind(X_6,"sys","lineitem","l_extendedprice",2);
+    X_98:bat[:oid,:lng] := sql.bind(X_6,"sys","lineitem","l_extendedprice",1);
+    X_99 := sql.projectdelta(X_7,X_93,X_96,r1_124,X_98);
+    X_100:bat[:oid,:lng] := algebra.leftfetchjoinPath(X_91,X_149,X_43,X_99);
+    X_101:hge := aggr.sum(X_100);
+    X_102 := calc.lng(2,X_101,15,2);
+    X_104 := calc.lng(2,X_102,18,5);
+    X_108 := calc.lng(1,A0,15,2);
+    X_110 := calc./(X_104,X_108);
+    sql.exportValue(1,"sys.L3","avg_yearly","decimal",18,3,10,X_110,"");
 end user.s2_1;
 
 # 22:53:29 >  
diff --git 
a/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128 
b/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128
--- a/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128
+++ b/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128
@@ -63,7 +63,7 @@ function user.s4_1(A0:hge,A1:bte):void;
     X_24:bat[:oid,:hge]  := batcalc.*(A0,X_23);
     X_25 := sql.resultSet(3,1,X_14);
     sql.rsColumn(X_25,"sys.dbg","d","int",32,0,X_14);
-    sql.rsColumn(X_25,"sys.L1","L1","hugeint",32,0,X_18);
+    sql.rsColumn(X_25,"sys.L1","L1","hugeint",128,0,X_18);
     sql.rsColumn(X_25,".L3","f","hugeint",128,0,X_24);
     X_42 := io.stdout();
     sql.exportResult(X_42,X_25);
@@ -116,7 +116,7 @@ function user.s10_1(A0:hge,A1:bte):void;
     X_24:bat[:oid,:hge]  := batcalc.*(A0,X_23);
     X_25 := sql.resultSet(3,1,X_14);
     sql.rsColumn(X_25,"sys.dbg","d","int",32,0,X_14);
-    sql.rsColumn(X_25,"sys.L1","e","hugeint",32,0,X_18);
+    sql.rsColumn(X_25,"sys.L1","e","hugeint",128,0,X_18);
     sql.rsColumn(X_25,".L3","f","hugeint",128,0,X_24);
     X_42 := io.stdout();
     sql.exportResult(X_42,X_25);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to