Changeset: 0112beceb275 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0112beceb275
Modified Files:
        monetdb5/optimizer/opt_candidates.c
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128
Branch: Dec2016
Log Message:

group.subgroup(done)'s second return value is a candidate list.


diffs (65 lines):

diff --git a/monetdb5/optimizer/opt_candidates.c 
b/monetdb5/optimizer/opt_candidates.c
--- a/monetdb5/optimizer/opt_candidates.c
+++ b/monetdb5/optimizer/opt_candidates.c
@@ -63,6 +63,10 @@ OPTcandidatesImplementation(Client cntxt
                        if (getFunctionId(p) == subuniformRef)
                                setVarCList(mb, getArg(p, 0));
                }
+               else if (getModuleId(p) == groupRef && p->retc > 1) {
+                       if (getFunctionId(p) == subgroupRef || getFunctionId(p) 
== subgroupdoneRef)
+                               setVarCList(mb, getArg(p, 1));
+               }
        }
 
     /* Defense line against incorrect plans */
diff --git 
a/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out 
b/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
--- a/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
+++ b/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
@@ -59,10 +59,10 @@ function user.s10_1():void;
     X_23 := algebra.projection(C_4,X_17);
     X_24:bat[:int] := sql.bind(X_3,"sys","t2564","c2",0:int);
     X_30 := algebra.projection(C_4,X_24);
-    (X_31,r1_32,r2_32) := group.subgroup(X_30);
-    (X_34,r1_35,r2_35) := group.subgroup(X_23,X_31);
-    (X_37,r1_38,r2_38) := group.subgroupdone(X_16,X_34);
-    X_40:bat[:lng] := aggr.subcount(X_37,X_37,r1_38,false);
+    (X_31,C1_32,r2_32) := group.subgroup(X_30);
+    (X_34,C1_35,r2_35) := group.subgroup(X_23,X_31);
+    (X_37,C1_38,r2_38) := group.subgroupdone(X_16,X_34);
+    X_40:bat[:lng] := aggr.subcount(X_37,X_37,C1_38,false);
     sql.resultSet(X_50,X_52,X_54,X_56,X_58,X_40);
 end user.s10_1;
 #inline               actions= 0 time=2 usec 
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
@@ -69,11 +69,11 @@ function user.s8_1():void;
     C_4:bat[:oid] := sql.tid(X_3,"sys","dbg");
     X_7:bat[:int] := sql.bind(X_3,"sys","dbg","a",0:int);
     X_10 := algebra.projection(C_4,X_7);
-    (X_11,r1_14,r2_14) := group.subgroupdone(X_10);
-    X_14 := algebra.projection(r1_14,X_10);
+    (X_11,C1_14,r2_14) := group.subgroupdone(X_10);
+    X_14 := algebra.projection(C1_14,X_10);
     X_17:bat[:int] := sql.bind(X_3,"sys","dbg","b",0:int);
     X_19 := algebra.projection(C_4,X_17);
-    X_20:bat[:hge] := aggr.subsum(X_19,X_11,r1_14,true,true);
+    X_20:bat[:hge] := aggr.subsum(X_19,X_11,C1_14,true,true);
     X_15 := bat.setKey(X_14,true);
     X_22:bat[:hge] := batcalc./(X_20,2:bte);
     X_26:bat[:hge] := batcalc.*(X_22,2:bte);
@@ -158,11 +158,11 @@ function user.s20_1():void;
     C_4:bat[:oid] := sql.tid(X_3,"sys","dbg");
     X_7:bat[:int] := sql.bind(X_3,"sys","dbg","a",0:int);
     X_10 := algebra.projection(C_4,X_7);
-    (X_11,r1_14,r2_14) := group.subgroupdone(X_10);
-    X_14 := algebra.projection(r1_14,X_10);
+    (X_11,C1_14,r2_14) := group.subgroupdone(X_10);
+    X_14 := algebra.projection(C1_14,X_10);
     X_17:bat[:int] := sql.bind(X_3,"sys","dbg","b",0:int);
     X_19 := algebra.projection(C_4,X_17);
-    X_20:bat[:hge] := aggr.subsum(X_19,X_11,r1_14,true,true);
+    X_20:bat[:hge] := aggr.subsum(X_19,X_11,C1_14,true,true);
     X_15 := bat.setKey(X_14,true);
     X_22:bat[:hge] := batcalc./(X_20,2:bte);
     X_26:bat[:hge] := batcalc.*(X_22,2:bte);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to