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