Changeset: 31c6b0706e40 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=31c6b0706e40
Modified Files:
monetdb5/modules/mal/pqueue.c
Branch: default
Log Message:
Fix the handling of groups
diffs (75 lines):
diff --git a/monetdb5/modules/mal/pqueue.c b/monetdb5/modules/mal/pqueue.c
--- a/monetdb5/modules/mal/pqueue.c
+++ b/monetdb5/modules/mal/pqueue.c
@@ -146,7 +146,7 @@ str PQtopn_minmax(Client cntxt, MalBlkPt
{ TYPE *val = (TYPE *) Tloc(b,BUNfirst(b));\
uniq = 0;\
for(o = 0; o < lim; o++){\
- if(uniq >= size && !((TYPE) val[o] OPER (TYPE)
val[idx[top-1]]) )\
+ if(uniq == size && !((TYPE) val[o] OPER##= (TYPE)
val[idx[top-1]]) )\
continue;\
idx[top] = gdx[top] = o;\
uniq++;\
@@ -159,13 +159,13 @@ str PQtopn_minmax(Client cntxt, MalBlkPt
break;\
} else break;\
}\
- if( uniq <= size) top++;\
+ top++;\
}\
}
str PQtopn2_minmax(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- int tpe, *ret, *ret1;
+int tpe, *ret, *ret1;
BAT *b,*bpiv, *bgid;
BUN i, size, top = 0, uniq;
oid *idx, *gdx, lim, o, tmp, off;
@@ -218,8 +218,8 @@ str PQtopn2_minmax(Client cntxt, MalBlkP
{ int k;
uniq = 0;
for(o = 0; o < lim; o++){
- k = atom_CMP( Tloc(b,o), Tloc(b,idx[top-1]),
tpe) >= 0;
- if( uniq >= size && k)
+ k = atom_CMP( Tloc(b,o), Tloc(b,idx[top-1]),
tpe) > 0;
+ if( uniq == size && k)
continue;
uniq++;
idx[top] = gdx[top] = o;
@@ -233,7 +233,7 @@ str PQtopn2_minmax(Client cntxt, MalBlkP
break;
} else break;
}
- if( uniq < size) top++;
+ top++;
}
}
}
@@ -248,13 +248,13 @@ str PQtopn2_minmax(Client cntxt, MalBlkP
case TYPE_dbl: QTOPN_shuffle2(dbl,>) break;
default:
{ int k;
- uniq=0;
+ uniq = 0;
for(o = 0; o < lim; o++){
- k = atom_CMP( Tloc(b,o), Tloc(b,idx[top-1]),
tpe) <= 0;
- if( uniq >= size && k)
+ k = atom_CMP( Tloc(b,o), Tloc(b,idx[top-1]),
tpe) < 0;
+ if( uniq == size && k)
continue;
+ uniq++;
idx[top] = gdx[top] = o;
- uniq++;
for (i= top; i>0; i--){
if ( (k = atom_CMP( Tloc(b,idx[i]),
Tloc(b,idx[i-1]), tpe)) > 0) {
tmp= idx[i]; idx[i] = idx[i-1];
idx[i-1] = tmp;
@@ -265,7 +265,7 @@ str PQtopn2_minmax(Client cntxt, MalBlkP
break;
} else break;
}
- if( uniq < size) top++;
+ top++;
}
}
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list