Changeset: af22cd761a4f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=af22cd761a4f
Modified Files:
        gdk/gdk_select.c
Branch: arrays
Log Message:

combining range selections on dimensions (e.g. x<4 and x>2)


diffs (62 lines):

diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1875,6 +1875,58 @@ BATdimensionSubselect(BAT *dimensionBAT,
                        return newempty("BATdimensionSubselect");
                qualifyingElementsNum = element_oid+1;
                element_oid=0; //it should add qualifying elementsNum from the 
beginning
+       } else if(ATOMcmp(type, low, nil) && ATOMcmp(type, high, nil)) { 
//values greater than low and lower than high 
+               switch (ATOMtype(type)) {
+               case TYPE_bte:
+               lower(bte, *(bte*)high);
+                       qualifyingElementsNum = element_oid+1;
+               greater(bte, *(bte*)low);
+               break;
+           case TYPE_sht:
+           lower(sht, *(sht*)high);
+                       qualifyingElementsNum = element_oid+1;
+               greater(sht, *(sht*)low);
+               break;
+       case TYPE_int:
+               lower(int, *(int*)high);
+                       qualifyingElementsNum = element_oid+1;
+               greater(int, *(int*)low);
+                       break;
+       case TYPE_lng:
+               lower(lng, *(lng*)high);
+                       qualifyingElementsNum = element_oid+1;
+               greater(lng, *(lng*)low);
+              break;
+#ifdef HAVE_HGE
+       case TYPE_hge:
+               lower(hge, *(hge*)high);
+                       qualifyingElementsNum = element_oid+1;
+               greater(hge, *(hge*)low);
+               break;
+#endif
+       case TYPE_flt:
+               lower(flt, *(flt*)high);
+                       qualifyingElementsNum = element_oid+1;
+               greater(flt, *(flt*)low);
+               break;
+       case TYPE_dbl:
+               lower(dbl, *(dbl*)high);
+                       qualifyingElementsNum = element_oid+1;
+               greater(dbl, *(dbl*)low);
+               break;
+       case TYPE_oid:
+               lower(oid, *(oid*)high);
+                       qualifyingElementsNum = element_oid+1;
+               greater(oid, *(oid*)low);
+               break;
+               default:
+                       fprintf(stderr, "BATdimensionSubselect: dimension type 
not handled\n");
+            return NULL;
+       }
+
+               if(qualifyingElementsNum == 0 || element_oid >= elementsNum) 
//high lower than min or low greater than max
+                       return newempty("BATdimensionSubselect");
+               qualifyingElementsNum -= element_oid;
        } else
                return newempty("BATdimensionSubselect");
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to