Changeset: 4f3fe9b1b8eb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4f3fe9b1b8eb
Modified Files:
        monetdb5/extras/bwd/operations.c
Branch: bwd
Log Message:

* simple grouping query runs now but doesn't yield any results:

```mclient -s " set optimizer='sequential_pipe'; select 
bwdecomposevarchar(l_returnflag, 8), bwdecomposedec(l_extendedprice, 32) from 
lineitem; set optimizer='bwd_pipe'; trace select l_returnflag, 
sum(l_extendedprice) as sum_disc_price from lineitem group by l_returnflag;" ```


Unterschiede (72 Zeilen):

diff --git a/monetdb5/extras/bwd/operations.c b/monetdb5/extras/bwd/operations.c
--- a/monetdb5/extras/bwd/operations.c
+++ b/monetdb5/extras/bwd/operations.c
@@ -1020,13 +1020,38 @@ str BWDSelectNotNilRefine(int *result, i
 
 
 str BWDGroupedSumApproximate(int *retid,int *valuesID, int *groupsID, int 
*histogramID){
-       throw(MAL, __func__, "not implemented yet: %s (%s:%d)", __func__, 
__FILE__, __LINE__);
+       str result = MAL_SUCCEED;
+       BAT *groups = BATdescriptor(*groupsID); 
+       BAT *values = BATdescriptor(*valuesID); 
+       BAT *histogram = BATdescriptor(*histogramID);   
 
+       if (groups == NULL || values == NULL || histogram == NULL) 
+               throw(MAL, __func__, RUNTIME_OBJECT_MISSING);
+       if(!batTailIsDecomposed(groups)){
+               printf("bwd.%s : groups bat is not decomposed: %d, no 
approximation can be provided\n", __func__, groups->batCacheid);
+               result = NOT_DECOMPOSED;
+       } else if(!batTailIsDecomposed(values)){
+               printf("bwd.%s : values bat is not decomposed: %d, no 
approximation can be provided\n", __func__, values->batCacheid);
+               result = NOT_DECOMPOSED;
+       } else if(!batTailIsDecomposed(histogram)){
+               printf("bwd.%s : histogram bat is not decomposed: %d, no 
approximation can be provided\n", __func__, histogram->batCacheid);
+               result = NOT_DECOMPOSED;
+       } else {
+               /* clTail resultTailDefinition; */
+               BAT* sums = BATnew(TYPE_oid,TYPE_wrd, BATcount(groups));
+
+               BBPkeepref(*retid = sums->batCacheid);
+       }
+
+       BBPreleaseref(groups->batCacheid);
+       BBPreleaseref(values->batCacheid);
+       BBPreleaseref(histogram->batCacheid);
+       return result;
 }
 
 str BWDGroupedSumRefine(int *retid,int *bid, int *gid, int *eid, bat* approx){
-       throw(MAL, __func__, "not implemented yet: %s (%s:%d)", __func__, 
__FILE__, __LINE__);
-
+       BBPincref(*retid = *approx, 1);
+       return MAL_SUCCEED;
 }
 
 
@@ -1110,15 +1135,14 @@ str BWDGroupApproximate(int *rethisto, i
                printf("bwd.%s : bat is not decomposed: %d, no approximation 
can be provided\n", __func__, *bid);
                result = NOT_DECOMPOSED;
        } else{ // get input objects and parameters
-               cl_mem valueColumn = batTailApproximation(b);
                clTail newTailDefinition;
                cl_int err;
 
-               if((err = clEnqueueReadBuffer(getCommandQueue(), valueColumn, 
CL_TRUE, 0, sizeof(int), &newTailDefinition.count , 0, NULL, NULL)))
+               if((err = clEnqueueReadBuffer(getCommandQueue(), 
batTailApproximation(b), CL_TRUE, 0, sizeof(int), &newTailDefinition.count , 0, 
NULL, NULL)))
                        printf("#%s, clEnqueueReadBuffer (b): %s;\n", __func__, 
clError(err));
                { // create output objects
                        BAT* groupIDs = BATnew(b->htype, TYPE_oid, BATcount(b));
-                       BAT* histo = BATnew(TYPE_oid,TYPE_wrd, 0);
+                       BAT* histo = BATnew(TYPE_oid,TYPE_int, 0);
                        { // groupID object
                                const unsigned int newIndex = 
getNextFreeDecomposedBATSlotIndex();
                                DecomposedBATSlot* groupIDSlot = 
getDecomposedBATSlotForIndex(newIndex);
@@ -1161,7 +1185,7 @@ str BWDGroupApproximate(int *rethisto, i
 str BWDGroupRefine(int *rethisto, int *retbid, int *bid, int *apprrethisto, 
int *apprretbid){
        BBPincref(*rethisto = *apprrethisto, 1);
        BBPincref(*retbid = *apprretbid, 1);
-       throw(MAL, __func__, "not implemented yet: %s", __func__);
+       return MAL_SUCCEED;
 }
 
 str BWDMulticolumnGroupRefine(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci){
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to