Changeset: 3273642fac4c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3273642fac4c
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/tomograph.c
        monetdb5/ChangeLog
        monetdb5/extras/rapi/Tests/rapi08.malC
        monetdb5/mal/Tests/tst1500.malC
        monetdb5/mal/Tests/tst1503.malC
        monetdb5/modules/kernel/group.c
        monetdb5/modules/kernel/group.h
        monetdb5/modules/kernel/group.mal
        monetdb5/modules/mal/groupby.c
        monetdb5/optimizer/opt_candidates.c
        monetdb5/optimizer/opt_costModel.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_volcano.c
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_statement.c
        sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out.32bit
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
Branch: default
Log Message:

Renamed some versions of group.subgroup to group.group; added optional 
candidate lists.


diffs (truncated from 533 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -7691,13 +7691,19 @@ Ready.
 [ "geom",      "mbrRight",     "command geom.mbrRight(geom1:wkb,geom2:wkb):bit 
",      "mbrRight_wkb;",        "Returns true if the mbr of geom1 is right of 
the mbr of geom2" ]
 [ "geom",      "prelude",      "command geom.prelude():void ", 
"geom_prelude;",        ""      ]
 [ "geom",      "setSRID",      "command geom.setSRID(w:wkb,srid:int):wkb ",    
"wkbSetSRID;",  "Sets the Reference System ID for this Geometry."       ]
+[ "group",     "group",        "command group.group(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",     "GRPgroup1;",   ""  
    ]
+[ "group",     "group",        "command group.group(b:bat[:any_1],s:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ", "GRPgroup2;",   ""      
]
+[ "group",     "groupdone",    "command group.groupdone(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ", "GRPgroup1;",   ""      
]
+[ "group",     "groupdone",    "command 
group.groupdone(b:bat[:any_1],s:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",     "GRPgroup2;",   ""  
    ]
 [ "group",     "multicolumn",  "pattern group.multicolumn(b:bat[:any]...) 
(ref:bat[:oid],grp:bat[:oid],hist:bat[:any]) ",      "GROUPmulticolumngroup;",  
     "Derivation of a group index over multiple columns."    ]
-[ "group",     "subgroup",     "command group.subgroup(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup1;",       
 ""      ]
 [ "group",     "subgroup",     "command 
group.subgroup(b:bat[:any_1],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup2;",   
     ""      ]
-[ "group",     "subgroup",     "command 
group.subgroup(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup3;",   
     ""      ]
-[ "group",     "subgroupdone", "command group.subgroupdone(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup1;",   
     ""      ]
+[ "group",     "subgroup",     "command 
group.subgroup(b:bat[:any_1],s:bat[:oid],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup3;",       
 ""      ]
+[ "group",     "subgroup",     "command 
group.subgroup(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup4;",   
     ""      ]
+[ "group",     "subgroup",     "command 
group.subgroup(b:bat[:any_1],s:bat[:oid],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup5;",       
 ""      ]
 [ "group",     "subgroupdone", "command 
group.subgroupdone(b:bat[:any_1],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup2;",       
 ""      ]
-[ "group",     "subgroupdone", "command 
group.subgroupdone(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup3;",       
 ""      ]
+[ "group",     "subgroupdone", "command 
group.subgroupdone(b:bat[:any_1],s:bat[:oid],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup3;",   
     ""      ]
+[ "group",     "subgroupdone", "command 
group.subgroupdone(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup4;",       
 ""      ]
+[ "group",     "subgroupdone", "command 
group.subgroupdone(b:bat[:any_1],s:bat[:oid],g:bat[:oid],e:bat[:oid],h:bat[:lng])
 (groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup5;",  
      ""      ]
 [ "gsl",       "chi2prob",     "command gsl.chi2prob(d:dbl,i:dbl):dbl ",       
"GSLchisqProb;",        "Chi Squared probability"       ]
 [ "identifier",        "#fromstr",     "command identifier.#fromstr():void ",  
"IDfromString;",        "Convert a string to an identifier without any check"   
]
 [ "identifier",        "#tostr",       "command identifier.#tostr():void ",    
"IDtoString;",  "Convert identifier to string equivalent"       ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -10047,13 +10047,19 @@ Ready.
 [ "geom",      "mbrRight",     "command geom.mbrRight(geom1:wkb,geom2:wkb):bit 
",      "mbrRight_wkb;",        "Returns true if the mbr of geom1 is right of 
the mbr of geom2" ]
 [ "geom",      "prelude",      "command geom.prelude():void ", 
"geom_prelude;",        ""      ]
 [ "geom",      "setSRID",      "command geom.setSRID(w:wkb,srid:int):wkb ",    
"wkbSetSRID;",  "Sets the Reference System ID for this Geometry."       ]
+[ "group",     "group",        "command group.group(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",     "GRPgroup1;",   ""  
    ]
+[ "group",     "group",        "command group.group(b:bat[:any_1],s:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ", "GRPgroup2;",   ""      
]
+[ "group",     "groupdone",    "command group.groupdone(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ", "GRPgroup1;",   ""      
]
+[ "group",     "groupdone",    "command 
group.groupdone(b:bat[:any_1],s:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",     "GRPgroup2;",   ""  
    ]
 [ "group",     "multicolumn",  "pattern group.multicolumn(b:bat[:any]...) 
(ref:bat[:oid],grp:bat[:oid],hist:bat[:any]) ",      "GROUPmulticolumngroup;",  
     "Derivation of a group index over multiple columns."    ]
-[ "group",     "subgroup",     "command group.subgroup(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup1;",       
 ""      ]
 [ "group",     "subgroup",     "command 
group.subgroup(b:bat[:any_1],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup2;",   
     ""      ]
-[ "group",     "subgroup",     "command 
group.subgroup(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup3;",   
     ""      ]
-[ "group",     "subgroupdone", "command group.subgroupdone(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup1;",   
     ""      ]
+[ "group",     "subgroup",     "command 
group.subgroup(b:bat[:any_1],s:bat[:oid],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup3;",       
 ""      ]
+[ "group",     "subgroup",     "command 
group.subgroup(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup4;",   
     ""      ]
+[ "group",     "subgroup",     "command 
group.subgroup(b:bat[:any_1],s:bat[:oid],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup5;",       
 ""      ]
 [ "group",     "subgroupdone", "command 
group.subgroupdone(b:bat[:any_1],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup2;",       
 ""      ]
-[ "group",     "subgroupdone", "command 
group.subgroupdone(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup3;",       
 ""      ]
+[ "group",     "subgroupdone", "command 
group.subgroupdone(b:bat[:any_1],s:bat[:oid],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup3;",   
     ""      ]
+[ "group",     "subgroupdone", "command 
group.subgroupdone(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",  "GRPsubgroup4;",       
 ""      ]
+[ "group",     "subgroupdone", "command 
group.subgroupdone(b:bat[:any_1],s:bat[:oid],g:bat[:oid],e:bat[:oid],h:bat[:lng])
 (groups:bat[:oid],extents:bat[:oid],histo:bat[:lng]) ",      "GRPsubgroup5;",  
      ""      ]
 [ "gsl",       "chi2prob",     "command gsl.chi2prob(d:dbl,i:dbl):dbl ",       
"GSLchisqProb;",        "Chi Squared probability"       ]
 [ "identifier",        "#fromstr",     "command identifier.#fromstr():void ",  
"IDfromString;",        "Convert a string to an identifier without any check"   
]
 [ "identifier",        "#tostr",       "command identifier.#tostr():void ",    
"IDtoString;",  "Convert identifier to string equivalent"       ]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1142,10 +1142,12 @@ str FCTgetOwners(bat *ret);
 str FCTgetPlants(bat *ret, bat *ret2);
 str FCTshutdown(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str GROUPmulticolumngroup(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
-str GRPsubgroup1(bat *ngid, bat *next, bat *nhis, const bat *bid);
+str GRPgroup1(bat *ngid, bat *next, bat *nhis, const bat *bid);
+str GRPgroup2(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *sid);
 str GRPsubgroup2(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat 
*gid);
-str GRPsubgroup3(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat 
*gid, const bat *eid, const bat *hid);
-str GRPsubgroup4(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat 
*sid, const bat *gid, const bat *eid, const bat *hid);
+str GRPsubgroup3(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat 
*sid, const bat *gid);
+str GRPsubgroup4(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat 
*gid, const bat *eid, const bat *hid);
+str GRPsubgroup5(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat 
*sid, const bat *gid, const bat *eid, const bat *hid);
 str IDentifier(identifier *retval, str *in);
 int IDfromString(str src, int *len, identifier *retval);
 str IDprelude(void *ret);
@@ -2110,6 +2112,7 @@ int getprofilerlimit(void);
 str grabRef;
 str groupRef;
 str groupbyRef;
+str groupdoneRef;
 int hasCommonResults(InstrPtr p, InstrPtr q);
 int hasSameArguments(MalBlkPtr mb, InstrPtr p, InstrPtr q);
 int hasSameSignature(MalBlkPtr mb, InstrPtr p, InstrPtr q, int stop);
diff --git a/clients/mapiclient/tomograph.c b/clients/mapiclient/tomograph.c
--- a/clients/mapiclient/tomograph.c
+++ b/clients/mapiclient/tomograph.c
@@ -294,11 +294,13 @@ base_colors[NUM_COLORS] = {
 /*   766 */    { 0, 0, "aggr", "subsum", 0 },
 /*   610 */    { 0, 0, "batcalc", "*", 0 },
 /*   577 */    { 0, 0, "group", "subgroupdone", 0 },
+/*   577 */    { 0, 0, "group", "groupdone", 0 },
 /*   481 */    { 0, 0, "sql", "subdelta", 0 },
 /*   481 */    { 0, 0, "sql", "subsort", 0 },
 /*   448 */    { 0, 0, "batcalc", "-", 0 },
 /*   334 */    { 0, 0, "bat", "mirror", 0 },
 /*   300 */    { 0, 0, "group", "subgroup", 0 },
+/*   300 */    { 0, 0, "group", "group", 0 },
 /*   264 */    { 0, 0, "batcalc", "==", 0 },
 /*   260 */    { 0, 0, "batcalc", "ifthenelse", 0 },
 /*   209 */    { 0, 0, "batcalc", "hge", 0 },
diff --git a/monetdb5/ChangeLog b/monetdb5/ChangeLog
--- a/monetdb5/ChangeLog
+++ b/monetdb5/ChangeLog
@@ -1,6 +1,11 @@
 # ChangeLog file for MonetDB5
 # This file is updated with Maddlog
 
+* Tue Dec 13 2016 Sjoerd Mullender <[email protected]>
+- group.subgroup is now called group.group if it is not refining a group.
+  Both group.group and group.subgroup now also have variants with a
+  candidate list.
+
 * Tue Nov  8 2016 Martin Kersten <[email protected]>
 - The allocation schemes for MAL blocks and Variables has been turned
   into block-based.  This reduces the number of malloc()/free() calls.
diff --git a/monetdb5/extras/rapi/Tests/rapi08.malC 
b/monetdb5/extras/rapi/Tests/rapi08.malC
--- a/monetdb5/extras/rapi/Tests/rapi08.malC
+++ b/monetdb5/extras/rapi/Tests/rapi08.malC
@@ -18,7 +18,7 @@ ti:= bat.append(ti,2:oid);
 ti:= bat.append(ti,3:oid);
 
 ti_gv:bat[:int] := algebra.projection(ti,gv);
-(grp:bat[:oid],r1_9:bat[:oid],r2_9:bat[:lng]) := group.subgroupdone(ti_gv);
+(grp:bat[:oid],r1_9:bat[:oid],r2_9:bat[:lng]) := group.groupdone(ti_gv);
 ti_dv:bat[:int] := algebra.projection(ti,dv); 
 
 io.print(grp);
diff --git a/monetdb5/mal/Tests/tst1500.malC b/monetdb5/mal/Tests/tst1500.malC
--- a/monetdb5/mal/Tests/tst1500.malC
+++ b/monetdb5/mal/Tests/tst1500.malC
@@ -8,7 +8,7 @@
        je_a := bat.append(x,3:bte);
        ke_a := bat.append(x,3:bte);
        io.print("group x"); io.print(x);
-       (g1,e1,h1) := group.subgroup(x);
+       (g1,e1,h1) := group.group(x);
 io.print("g1 becomes"); io.print(g1);
 io.print("e1 becomes"); io.print(e1);
 io.print("h1 becomes"); io.print(h1);
diff --git a/monetdb5/mal/Tests/tst1503.malC b/monetdb5/mal/Tests/tst1503.malC
--- a/monetdb5/mal/Tests/tst1503.malC
+++ b/monetdb5/mal/Tests/tst1503.malC
@@ -36,7 +36,7 @@
        if_a := bat.append(z,"c");
        jf_a := bat.append(z,"a");
 io.print("group x");io.print(x,y,z);
-       (g1,e1,h1) := group.subgroup(x);
+       (g1,e1,h1) := group.group(x);
 io.print("g1 becomes"); io.print(g1);
 io.print("e1 becomes"); io.print(e1);
 io.print("h1 becomes"); io.print(h1);
diff --git a/monetdb5/modules/kernel/group.c b/monetdb5/modules/kernel/group.c
--- a/monetdb5/modules/kernel/group.c
+++ b/monetdb5/modules/kernel/group.c
@@ -13,7 +13,7 @@
 #include "algebra.h"
 
 str
-GRPsubgroup4(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *sid, 
const bat *gid, const bat *eid, const bat *hid)
+GRPsubgroup5(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *sid, 
const bat *gid, const bat *eid, const bat *hid)
 {
        BAT *b, *s, *g, *e, *h, *gn, *en, *hn;
        gdk_return r;
@@ -35,7 +35,7 @@ GRPsubgroup4(bat *ngid, bat *next, bat *
                        BBPunfix(e->batCacheid);
                if (h)
                        BBPunfix(h->batCacheid);
-               throw(MAL, "group.subgroup", RUNTIME_OBJECT_MISSING);
+               throw(MAL, gid ? "group.subgroup" : "group.group", 
RUNTIME_OBJECT_MISSING);
        }
        if ((r = BATgroup(&gn, &en, &hn, b, s, g, e, h)) == GDK_SUCCEED) {
                *ngid = gn->batCacheid;
@@ -54,23 +54,35 @@ GRPsubgroup4(bat *ngid, bat *next, bat *
                BBPunfix(e->batCacheid);
        if (h)
                BBPunfix(h->batCacheid);
-       return r == GDK_SUCCEED ? MAL_SUCCEED : createException(MAL, 
"group.subgroup", GDK_EXCEPTION);
+       return r == GDK_SUCCEED ? MAL_SUCCEED : createException(MAL, gid ? 
"group.subgroup" : "group.group", GDK_EXCEPTION);
 }
 
 str
-GRPsubgroup3(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *gid, 
const bat *eid, const bat *hid)
+GRPsubgroup4(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *gid, 
const bat *eid, const bat *hid)
 {
-       return GRPsubgroup4(ngid, next, nhis, bid, NULL, gid, eid, hid);
+       return GRPsubgroup5(ngid, next, nhis, bid, NULL, gid, eid, hid);
+}
+
+str
+GRPsubgroup3(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *sid, 
const bat *gid)
+{
+       return GRPsubgroup5(ngid, next, nhis, bid, sid, gid, NULL, NULL);
 }
 
 str
 GRPsubgroup2(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *gid)
 {
-       return GRPsubgroup4(ngid, next, nhis, bid, NULL, gid, NULL, NULL);
+       return GRPsubgroup5(ngid, next, nhis, bid, NULL, gid, NULL, NULL);
 }
 
 str
-GRPsubgroup1(bat *ngid, bat *next, bat *nhis, const bat *bid)
+GRPgroup2(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *sid)
 {
-       return GRPsubgroup4(ngid, next, nhis, bid, NULL, NULL, NULL, NULL);
+       return GRPsubgroup5(ngid, next, nhis, bid, sid, NULL, NULL, NULL);
 }
+
+str
+GRPgroup1(bat *ngid, bat *next, bat *nhis, const bat *bid)
+{
+       return GRPsubgroup5(ngid, next, nhis, bid, NULL, NULL, NULL, NULL);
+}
diff --git a/monetdb5/modules/kernel/group.h b/monetdb5/modules/kernel/group.h
--- a/monetdb5/modules/kernel/group.h
+++ b/monetdb5/modules/kernel/group.h
@@ -10,15 +10,19 @@
 #define _GROUP_H_
 #include "gdk.h"
 
-mal_export str GRPsubgroup1(bat *ngid, bat *next, bat *nhis,
-                                                       const bat *bid);
+mal_export str GRPgroup1(bat *ngid, bat *next, bat *nhis, const bat *bid);
+mal_export str GRPgroup2(bat *ngid, bat *next, bat *nhis,
+                                                const bat *bid, const bat 
*sid);
 mal_export str GRPsubgroup2(bat *ngid, bat *next, bat *nhis,
                                                        const bat *bid, const 
bat *gid);
 mal_export str GRPsubgroup3(bat *ngid, bat *next, bat *nhis,
+                                                       const bat *bid, const 
bat *sid,
+                                                       const bat *gid);
+mal_export str GRPsubgroup4(bat *ngid, bat *next, bat *nhis,
                                                        const bat *bid, const 
bat *gid,
                                                        const bat *eid, const 
bat *hid);
-mal_export str GRPsubgroup4(bat *ngid, bat *next, bat *nhis,
-                                                       const bat *bid, const 
bat *sid, const bat *gid,
-                                                       const bat *eid, const 
bat *hid);
+mal_export str GRPsubgroup5(bat *ngid, bat *next, bat *nhis,
+                                                       const bat *bid, const 
bat *sid,
+                                                       const bat *gid, const 
bat *eid, const bat *hid);
 
 #endif /* _GROUP_H_ */
diff --git a/monetdb5/modules/kernel/group.mal 
b/monetdb5/modules/kernel/group.mal
--- a/monetdb5/modules/kernel/group.mal
+++ b/monetdb5/modules/kernel/group.mal
@@ -6,16 +6,28 @@
 
 module group;
 
-command subgroup(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
-address GRPsubgroup1;
+command group(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
+address GRPgroup1;
+command group(b:bat[:any_1],s:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
+address GRPgroup2;
 command subgroup(b:bat[:any_1],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
 address GRPsubgroup2;
+command subgroup(b:bat[:any_1],s:bat[:oid],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
+address GRPsubgroup3;
 command subgroup(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
-address GRPsubgroup3;
+address GRPsubgroup4;
+command 
subgroup(b:bat[:any_1],s:bat[:oid],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
+address GRPsubgroup5;
 
-command subgroupdone(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
-address GRPsubgroup1;
+command groupdone(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
+address GRPgroup1;
+command groupdone(b:bat[:any_1],s:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
+address GRPgroup2;
 command subgroupdone(b:bat[:any_1],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
 address GRPsubgroup2;
+command subgroupdone(b:bat[:any_1],s:bat[:oid],g:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
+address GRPsubgroup3;
 command subgroupdone(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
-address GRPsubgroup3;
+address GRPsubgroup4;
+command 
subgroupdone(b:bat[:any_1],s:bat[:oid],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
+address GRPsubgroup5;
diff --git a/monetdb5/modules/mal/groupby.c b/monetdb5/modules/mal/groupby.c
--- a/monetdb5/modules/mal/groupby.c
+++ b/monetdb5/modules/mal/groupby.c
@@ -175,12 +175,12 @@ GROUPmulticolumngroup(Client cntxt, MalB
                throw(MAL,"group.subgroup",MAL_MALLOC_FAIL);
        GROUPcollectSort(aggr, 0, aggr->last);
 
-       /* (grp,ext,hist) := group.subgroup(..) */
+       /* (grp,ext,hist) := group.group(..) */
        /* use the old pattern to perform the incremental grouping */
        *grp = 0;
        *ext = 0;
        *hist = 0;
-       msg = GRPsubgroup1(grp, ext, hist, &aggr->bid[0]);
+       msg = GRPgroup1(grp, ext, hist, &aggr->bid[0]);
        i = 1;
        if (msg == MAL_SUCCEED && aggr->last > 1)
                do {
@@ -200,7 +200,7 @@ GROUPmulticolumngroup(Client cntxt, MalB
                        *grp = 0;
                        *ext = 0;
                        *hist = 0;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to