Changeset: 917d071d8fd0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=917d071d8fd0
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        monetdb5/ChangeLog
        monetdb5/modules/kernel/group.c
        monetdb5/modules/kernel/group.h
        monetdb5/modules/kernel/group.mal
Branch: default
Log Message:

Implemented group.(sub)group(done) with a single output.


diffs (254 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
@@ -11069,26 +11069,38 @@ stdout of test 'MAL-signatures` in direc
 [ "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]):bat[:oid] 
",        "GRPgroup11;",  ""      ]
 [ "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]):bat[:oid] ",   "GRPgroup21;",  ""      ]
 [ "group",     "group",        "command group.group(b:bat[:any_1], 
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ",      
"GRPgroup2;",   ""      ]
 [ "group",     "group",        "command group.group(b:bat[:any_1]) 
(groups:bat[:oid], extents:bat[:oid]) ",    "GRPgroup3;",   ""      ]
 [ "group",     "group",        "command group.group(b:bat[:any_1], 
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",       "GRPgroup4;",   ""  
    ]
+[ "group",     "groupdone",    "command 
group.groupdone(b:bat[:any_1]):bat[:oid] ",    "GRPgroup11;",  ""      ]
 [ "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]):bat[:oid] ",       "GRPgroup21;",  ""      ]
 [ "group",     "groupdone",    "command group.groupdone(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]) ",        "GRPgroup3;",   ""      ]
 [ "group",     "groupdone",    "command group.groupdone(b:bat[:any_1], 
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",   "GRPgroup4;",   ""      
]
 [ "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], 
g:bat[:oid]):bat[:oid] ",        "GRPsubgroup21;",       ""      ]
 [ "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], 
s:bat[:oid], g:bat[:oid]):bat[:oid] ",   "GRPsubgroup31;",       ""      ]
 [ "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]):bat[:oid] ",      "GRPsubgroup41;",      
 ""      ]
 [ "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]):bat[:oid] ", 
"GRPsubgroup51;",       ""      ]
 [ "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",     "subgroup",     "command group.subgroup(b:bat[:any_1], 
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",    "GRPsubgroup6;",       
 ""      ]
 [ "group",     "subgroup",     "command group.subgroup(b:bat[:any_1], 
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",       
"GRPsubgroup7;",        ""      ]
 [ "group",     "subgroup",     "command group.subgroup(b:bat[:any_1], 
g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid], extents:bat[:oid]) ", 
 "GRPsubgroup8;",        ""      ]
 [ "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]) ",     "GRPsubgroup9;",        ""      ]
+[ "group",     "subgroupdone", "command group.subgroupdone(b:bat[:any_1], 
g:bat[:oid]):bat[:oid] ",    "GRPsubgroup21;",       ""      ]
 [ "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], 
s:bat[:oid], g:bat[:oid]):bat[:oid] ",       "GRPsubgroup31;",       ""      ]
 [ "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]):bat[:oid] ",  "GRPsubgroup41;",       "" 
     ]
 [ "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]):bat[:oid] ",     
"GRPsubgroup51;",       ""      ]
 [ "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;",        ""      ]
 [ "group",     "subgroupdone", "command group.subgroupdone(b:bat[:any_1], 
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",        "GRPsubgroup6;",   
     ""      ]
 [ "group",     "subgroupdone", "command group.subgroupdone(b:bat[:any_1], 
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",   
"GRPsubgroup7;",        ""      ]
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
@@ -15467,26 +15467,38 @@ stdout of test 'MAL-signatures` in direc
 [ "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]):bat[:oid] 
",        "GRPgroup11;",  ""      ]
 [ "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]):bat[:oid] ",   "GRPgroup21;",  ""      ]
 [ "group",     "group",        "command group.group(b:bat[:any_1], 
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ",      
"GRPgroup2;",   ""      ]
 [ "group",     "group",        "command group.group(b:bat[:any_1]) 
(groups:bat[:oid], extents:bat[:oid]) ",    "GRPgroup3;",   ""      ]
 [ "group",     "group",        "command group.group(b:bat[:any_1], 
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",       "GRPgroup4;",   ""  
    ]
+[ "group",     "groupdone",    "command 
group.groupdone(b:bat[:any_1]):bat[:oid] ",    "GRPgroup11;",  ""      ]
 [ "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]):bat[:oid] ",       "GRPgroup21;",  ""      ]
 [ "group",     "groupdone",    "command group.groupdone(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]) ",        "GRPgroup3;",   ""      ]
 [ "group",     "groupdone",    "command group.groupdone(b:bat[:any_1], 
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",   "GRPgroup4;",   ""      
]
 [ "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], 
g:bat[:oid]):bat[:oid] ",        "GRPsubgroup21;",       ""      ]
 [ "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], 
s:bat[:oid], g:bat[:oid]):bat[:oid] ",   "GRPsubgroup31;",       ""      ]
 [ "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]):bat[:oid] ",      "GRPsubgroup41;",      
 ""      ]
 [ "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]):bat[:oid] ", 
"GRPsubgroup51;",       ""      ]
 [ "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",     "subgroup",     "command group.subgroup(b:bat[:any_1], 
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",    "GRPsubgroup6;",       
 ""      ]
 [ "group",     "subgroup",     "command group.subgroup(b:bat[:any_1], 
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",       
"GRPsubgroup7;",        ""      ]
 [ "group",     "subgroup",     "command group.subgroup(b:bat[:any_1], 
g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid], extents:bat[:oid]) ", 
 "GRPsubgroup8;",        ""      ]
 [ "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]) ",     "GRPsubgroup9;",        ""      ]
+[ "group",     "subgroupdone", "command group.subgroupdone(b:bat[:any_1], 
g:bat[:oid]):bat[:oid] ",    "GRPsubgroup21;",       ""      ]
 [ "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], 
s:bat[:oid], g:bat[:oid]):bat[:oid] ",       "GRPsubgroup31;",       ""      ]
 [ "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]):bat[:oid] ",  "GRPsubgroup41;",       "" 
     ]
 [ "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]):bat[:oid] ",     
"GRPsubgroup51;",       ""      ]
 [ "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;",        ""      ]
 [ "group",     "subgroupdone", "command group.subgroupdone(b:bat[:any_1], 
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",        "GRPsubgroup6;",   
     ""      ]
 [ "group",     "subgroupdone", "command group.subgroupdone(b:bat[:any_1], 
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",   
"GRPsubgroup7;",        ""      ]
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
@@ -1221,13 +1221,19 @@ 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 GRPgroup1(bat *ngid, bat *next, bat *nhis, const bat *bid);
+str GRPgroup11(bat *ngid, const bat *bid);
 str GRPgroup2(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *sid);
+str GRPgroup21(bat *ngid, const bat *bid, const bat *sid);
 str GRPgroup3(bat *ngid, bat *next, const bat *bid);
 str GRPgroup4(bat *ngid, bat *next, const bat *bid, const bat *sid);
 str GRPsubgroup2(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat 
*gid);
+str GRPsubgroup21(bat *ngid, const bat *bid, const bat *gid);
 str GRPsubgroup3(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat 
*sid, const bat *gid);
+str GRPsubgroup31(bat *ngid, 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 GRPsubgroup41(bat *ngid, 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 GRPsubgroup51(bat *ngid, const bat *bid, const bat *sid, const bat *gid, 
const bat *eid, const bat *hid);
 str GRPsubgroup6(bat *ngid, bat *next, const bat *bid, const bat *gid);
 str GRPsubgroup7(bat *ngid, bat *next, const bat *bid, const bat *sid, const 
bat *gid);
 str GRPsubgroup8(bat *ngid, bat *next, const bat *bid, const bat *gid, const 
bat *eid, const bat *hid);
diff --git a/monetdb5/ChangeLog b/monetdb5/ChangeLog
--- a/monetdb5/ChangeLog
+++ b/monetdb5/ChangeLog
@@ -2,6 +2,8 @@
 # This file is updated with Maddlog
 
 * Wed Nov 13 2019 Sjoerd Mullender <[email protected]>
+- There are now versions of group.(sub)group(done) that produce a single
+  output containing just the groups.
 - algebra.join and algebra.leftjoin now have forms which return a single
   column.  The column that is returned is the left column of the two
   column version.
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
@@ -40,15 +40,17 @@ GRPsubgroup5(bat *ngid, bat *next, bat *
                        BBPunfix(h->batCacheid);
                throw(MAL, gid ? "group.subgroup" : "group.group", 
SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
        }
-       if ((r = BATgroup(&gn, &en, nhis ? &hn : NULL, b, s, g, e, h)) == 
GDK_SUCCEED) {
+       if ((r = BATgroup(&gn, next ? &en : NULL, nhis ? &hn : NULL, b, s, g, 
e, h)) == GDK_SUCCEED) {
                *ngid = gn->batCacheid;
-               *next = en->batCacheid;
+               BBPkeepref(*ngid);
+               if (next) {
+                       *next = en->batCacheid;
+                       BBPkeepref(*next);
+               }
                if (nhis){
                        *nhis = hn->batCacheid;
                        BBPkeepref(*nhis);
                }
-               BBPkeepref(*ngid);
-               BBPkeepref(*next);
        }
        BBPunfix(b->batCacheid);
        if (s)
@@ -127,3 +129,39 @@ GRPgroup1(bat *ngid, bat *next, bat *nhi
 {
        return GRPsubgroup5(ngid, next, nhis, bid, NULL, NULL, NULL, NULL);
 }
+
+str
+GRPgroup11(bat *ngid, const bat *bid)
+{
+       return GRPsubgroup5(ngid, NULL, NULL, bid, NULL, NULL, NULL, NULL);
+}
+
+str
+GRPgroup21(bat *ngid, const bat *bid, const bat *sid)
+{
+       return GRPsubgroup5(ngid, NULL, NULL, bid, sid, NULL, NULL, NULL);
+}
+
+str
+GRPsubgroup51(bat *ngid, const bat *bid, const bat *sid, const bat *gid, const 
bat *eid, const bat *hid)
+{
+       return GRPsubgroup5(ngid, NULL, NULL, bid, sid, gid, eid, hid);
+}
+
+str
+GRPsubgroup41(bat *ngid, const bat *bid, const bat *gid, const bat *eid, const 
bat *hid)
+{
+       return GRPsubgroup5(ngid, NULL, NULL, bid, NULL, gid, eid, hid);
+}
+
+str
+GRPsubgroup31(bat *ngid, const bat *bid, const bat *sid, const bat *gid)
+{
+       return GRPsubgroup5(ngid, NULL, NULL, bid, sid, gid, NULL, NULL);
+}
+
+str
+GRPsubgroup21(bat *ngid, const bat *bid, const bat *gid)
+{
+       return GRPsubgroup5(ngid, NULL, NULL, bid, NULL, gid, 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
@@ -38,5 +38,14 @@ mal_export str GRPsubgroup8(bat *ngid, b
 mal_export str GRPsubgroup9(bat *ngid, bat *next,
                                                        const bat *bid, const 
bat *sid,
                                                        const bat *gid, const 
bat *eid, const bat *hid);
+mal_export str GRPgroup11(bat *ngid, const bat *bid);
+mal_export str GRPgroup21(bat *ngid, const bat *bid, const bat *sid);
+mal_export str GRPsubgroup51(bat *ngid, const bat *bid, const bat *sid,
+                                                        const bat *gid, const 
bat *eid, const bat *hid);
+mal_export str GRPsubgroup41(bat *ngid, const bat *bid, const bat *gid,
+                                                        const bat *eid, const 
bat *hid);
+mal_export str GRPsubgroup31(bat *ngid, const bat *bid, const bat *sid,
+                                                        const bat *gid);
+mal_export str GRPsubgroup21(bat *ngid, const bat *bid, const bat *gid);
 
 #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
@@ -14,6 +14,10 @@ command group(b:bat[:any_1]) (groups:bat
 address GRPgroup3;
 command group(b:bat[:any_1],s:bat[:oid]) (groups:bat[:oid],extents:bat[:oid])
 address GRPgroup4;
+command group(b:bat[:any_1]) :bat[:oid]
+address GRPgroup11;
+command group(b:bat[:any_1],s:bat[:oid]) :bat[:oid]
+address GRPgroup21;
 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])
@@ -30,6 +34,14 @@ command subgroup(b:bat[:any_1],g:bat[:oi
 address GRPsubgroup8;
 command 
subgroup(b:bat[:any_1],s:bat[:oid],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid])
 address GRPsubgroup9;
+command subgroup(b:bat[:any_1],g:bat[:oid]) :bat[:oid]
+address GRPsubgroup21;
+command subgroup(b:bat[:any_1],s:bat[:oid],g:bat[:oid]) :bat[:oid]
+address GRPsubgroup31;
+command subgroup(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) :bat[:oid]
+address GRPsubgroup41;
+command 
subgroup(b:bat[:any_1],s:bat[:oid],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
:bat[:oid]
+address GRPsubgroup51;
 
 command groupdone(b:bat[:any_1]) 
(groups:bat[:oid],extents:bat[:oid],histo:bat[:lng])
 address GRPgroup1;
@@ -39,6 +51,10 @@ command groupdone(b:bat[:any_1]) (groups
 address GRPgroup3;
 command groupdone(b:bat[:any_1],s:bat[:oid]) 
(groups:bat[:oid],extents:bat[:oid])
 address GRPgroup4;
+command groupdone(b:bat[:any_1]) :bat[:oid]
+address GRPgroup11;
+command groupdone(b:bat[:any_1],s:bat[:oid]) :bat[:oid]
+address GRPgroup21;
 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])
@@ -55,3 +71,11 @@ command subgroupdone(b:bat[:any_1],g:bat
 address GRPsubgroup8;
 command 
subgroupdone(b:bat[:any_1],s:bat[:oid],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
(groups:bat[:oid],extents:bat[:oid])
 address GRPsubgroup9;
+command subgroupdone(b:bat[:any_1],g:bat[:oid]) :bat[:oid]
+address GRPsubgroup21;
+command subgroupdone(b:bat[:any_1],s:bat[:oid],g:bat[:oid]) :bat[:oid]
+address GRPsubgroup31;
+command subgroupdone(b:bat[:any_1],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
:bat[:oid]
+address GRPsubgroup41;
+command 
subgroupdone(b:bat[:any_1],s:bat[:oid],g:bat[:oid],e:bat[:oid],h:bat[:lng]) 
:bat[:oid]
+address GRPsubgroup51;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to