Changeset: d53197cfcb2a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d53197cfcb2a
Modified Files:
        gdk/gdk.h
        gdk/gdk_bat.c
        sql/storage/bat/bat_storage.c
Branch: arrays
Log Message:

moved code around.


diffs (243 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1037,7 +1037,7 @@ fprintf(stderr, "createDimension: %ld to
         if(!step) { \
             if(min!=max) { \
                 GDKerror("dimensionElementsNum: step is 0 but min and max are 
not equal\n"); \
-                return NULL; \
+                return 0; \
             } \
         } else \
             num = floor((max-min)/step) + 1; \
@@ -1054,73 +1054,6 @@ fprintf(stderr, "createDimension: %ld to
         elementsNum*elementRepeats*groupRepeats; \
     })
 
-#ifdef HAVE_HGE 
-#define dimensionBATsize(dimensionBAT) \
-    ({\
-        BUN sz = 0; \
-        switch(ATOMtype(dimensionBAT->ttype)) {\
-        case TYPE_bte: \
-            sz = dimensionBATsizeTPE(bte, dimensionBAT); \
-            break; \
-        case TYPE_sht: \
-            sz = dimensionBATsizeTPE(sht, dimensionBAT); \
-            break; \
-        case TYPE_int: \
-            sz = dimensionBATsizeTPE(int, dimensionBAT); \
-            break; \
-        case TYPE_lng: \
-            sz = dimensionBATsizeTPE(lng, dimensionBAT); \
-            break; \
-        case TYPE_hge: \
-            sz = dimensionBATsizeTPE(hge, dimensionBAT); \
-            break; \
-        case TYPE_flt: \
-            sz = dimensionBATsizeTPE(flt, dimensionBAT); \
-            break; \
-        case TYPE_dbl: \
-            sz = dimensionBATsizeTPE(dbl, dimensionBAT); \
-            break; \
-        case TYPE_oid: \
-            sz = dimensionBATsizeTPE(oid, dimensionBAT); \
-            break; \
-        default: \
-            fprintf(stderr, "dimensionBATsize: dimension type not handled\n"); 
\
-        } \
-        sz; \
-    })
-#else
-#define dimensionBATsize(dimensionBAT) \
-    ({\
-        BUN sz = 0; \
-        switch(ATOMtype(dimensionBAT->ttype)) {\
-        case TYPE_bte: \
-            sz = dimensionBATsizeTPE(bte, dimensionBAT); \
-            break; \
-        case TYPE_sht: \
-            sz = dimensionBATsizeTPE(sht, dimensionBAT); \
-            break; \
-        case TYPE_int: \
-            sz = dimensionBATsizeTPE(int, dimensionBAT); \
-            break; \
-        case TYPE_lng: \
-            sz = dimensionBATsizeTPE(lng, dimensionBAT); \
-            break; \
-        case TYPE_flt: \
-            sz = dimensionBATsizeTPE(flt, dimensionBAT); \
-            break; \
-        case TYPE_dbl: \
-            sz = dimensionBATsizeTPE(dbl, dimensionBAT); \
-            break; \
-        case TYPE_oid: \
-            sz = dimensionBATsizeTPE(oid, dimensionBAT); \
-            break; \
-        default: \
-            fprintf(stderr, "dimensionBATsize: dimension type not handled\n"); 
\
-        } \
-        sz; \
-    })
-#endif
-
 #define materialiseDimensionTPE(TPE, dimensionBAT) \
     ({ \
         /*find the min, max, step in the dimension*/ \
@@ -1158,73 +1091,8 @@ fprintf(stderr, "materialise: element re
         resBAT; \
     })
 
-#ifdef HAVE_HGE 
-#define materialiseDimensionBAT(dimensionBAT) \
-    ({\
-        BAT* resBAT = NULL; \
-        switch(ATOMtype(dimensionBAT->ttype)) {\
-        case TYPE_bte: \
-            materialiseDimensionTPE(bte, dimensionBAT); \
-        case TYPE_sht: \
-            resBAT = materialiseDimensionTPE(sht, dimensionBAT); \
-            break; \
-        case TYPE_int: \
-            resBAT = materialiseDimensionTPE(int, dimensionBAT); \
-            break; \
-        case TYPE_lng: \
-            resBAT = materialiseDimensionTPE(lng, dimensionBAT); \
-            break; \
-        case TYPE_hge: \
-            resBAT = materialiseDimensionTPE(hge, dimensionBAT); \
-            break; \
-        case TYPE_flt: \
-            resBAT = materialiseDimensionTPE(flt, dimensionBAT); \
-            break; \
-        case TYPE_dbl: \
-            resBAT = materialiseDimensionTPE(dbl, dimensionBAT); \
-            break; \
-        case TYPE_oid: \
-            resBAT = materialiseDimensionTPE(oid, dimensionBAT); \
-            break; \
-        default: \
-            fprintf(stderr, "materialiseDimension: dimension type not 
handled\n"); \
-        } \
-        resBAT; \
-    })
-#else
-#define materialiseDimension(dimensionBAT) \
-    ({\
-        BAT* resBAT = NULL; \
-        switch(ATOMtype(dimensionBAT->ttype)) {\
-        case TYPE_bte: \
-            resBAT = materialiseDimensionTPE(bte, dimensionBAT); \
-            break; \
-        case TYPE_sht: \
-            resBAT = materialiseDimensionTPE(sht, dimensionBAT); \
-            break; \
-        case TYPE_int: \
-            resBAT = materialiseDimensionTPE(int, dimensionBAT); \
-            break; \
-        case TYPE_lng: \
-            resBAT = materialiseDimensionTPE(lng, dimensionBAT); \
-            break; \
-        case TYPE_flt: \
-            resBAT = materialiseDimensionTPE(flt, dimensionBAT); \
-            break; \
-        case TYPE_dbl: \
-            resBAT = materialiseDimensionTPE(dbl, dimensionBAT); \
-            break; \
-        case TYPE_oid: \
-            resBAT = materialiseDimensionTPE(oid, dimensionBAT); \
-            break; \
-        default: \
-            fprintf(stderr, "materialiseDimension: dimension type not 
handled\n"); \
-        } \
-        resBAT; \
-    })
-#endif
-
-
+gdk_export BAT* materialiseDimensionBAT(BAT* dimensionBAT);
+gdk_export BUN dimensionBATsize(BAT* dimensionBAT);
 
 /*
  * @- Heap Management
@@ -3516,7 +3384,6 @@ gdk_export gdk_return BATfirstn(BAT **to
  */
 gdk_export BAT *BATsample(BAT *b, BUN n);
 
-gdk_export BAT* arrayBATmaterialise(BAT *dimensionBAT);
 /*
  *
  */
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -3318,11 +3318,11 @@ BATderiveProps(BAT *b, int expensive)
                BATderiveHeadProps(BATmirror(b), expensive);
 }
 
-BAT* arrayBATmaterialise(BAT *dimensionBAT) {
+BAT* materialiseDimensionBAT(BAT *dimensionBAT) {
        if(!isBATarray(dimensionBAT))
                return dimensionBAT;
 
-        switch(ATOMtype(ATOMbasetype(dimensionBAT->ttype))) {
+        switch(ATOMtype(dimensionBAT->ttype)) {
                case TYPE_bte:
             return materialiseDimensionTPE(bte, dimensionBAT);
         case TYPE_sht:
@@ -3347,8 +3347,42 @@ BAT* arrayBATmaterialise(BAT *dimensionB
 #endif
         break;
         default:
-            fprintf(stderr, "arrayBATmaterialise: dimension type not 
handled\n");
+            fprintf(stderr, "materialiseDimensionBAT: dimension type not 
handled\n");
             return NULL;
        }
        return NULL;
 }
+
+BUN dimensionBATsize(BAT *dimensionBAT) {
+       if(!isBATarray(dimensionBAT))
+               return BATcount(dimensionBAT);
+
+        switch(ATOMtype(dimensionBAT->ttype)) {
+               case TYPE_bte:
+            return dimensionBATsizeTPE(bte, dimensionBAT);
+        case TYPE_sht:
+            return dimensionBATsizeTPE(sht, dimensionBAT);
+        case TYPE_int:
+            return dimensionBATsizeTPE(int, dimensionBAT);
+        case TYPE_flt:
+            return dimensionBATsizeTPE(flt, dimensionBAT);
+        case TYPE_dbl:
+            return dimensionBATsizeTPE(dbl, dimensionBAT);
+        case TYPE_lng:
+            return dimensionBATsizeTPE(lng, dimensionBAT);
+#ifdef HAVE_HGE
+        case TYPE_hge:
+            return dimensionBATsizeTPE(hge, dimensionBAT);
+#endif
+        case TYPE_oid:
+#if SIZEOF_OID == SIZEOF_INT
+            return dimensionBATsizeTPE(int, dimensionBAT);
+#else
+            return dimensionBATsizeTPE(lng, dimensionBAT);
+#endif
+        break;
+        default:
+            fprintf(stderr, "dimensionBATsize: dimension type not handled\n");
+       }
+       return 0;
+}
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -215,7 +215,7 @@ delta_update_bat( sql_delta *bat, BAT *t
 
        //materialise the dimension
        if(isBATarray(updates))
-               updates = arrayBATmaterialise(updates);
+               updates = materialiseDimensionBAT(updates);
 
        if (!is_new && bat->uibid && bat->uvbid) {
                BAT *ib = temp_descriptor(bat->ibid), *otids = tids;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to