Changeset: e8aced675929 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e8aced675929
Modified Files:
        gdk/gdk_calc_compare.h
Branch: batcalc-candidates
Log Message:

support (void,oid) comparison given the ATOMbasetype of oid


diffs (179 lines):

diff --git a/gdk/gdk_calc_compare.h b/gdk/gdk_calc_compare.h
--- a/gdk/gdk_calc_compare.h
+++ b/gdk/gdk_calc_compare.h
@@ -24,7 +24,7 @@ opswitch(BAT *b1, int tp1, const void *s
                goto unsupported;
        }
 
-       switch (tp1) {
+       switch (ATOMbasetype(tp1)) {
        default: {
                BATiter b1i;
                BATiter b2i;
@@ -58,7 +58,7 @@ opswitch(BAT *b1, int tp1, const void *s
                oid v1 = * (const oid *) src1;
                oid v2 = 0;
                BUN i;
-               switch (tp2) {
+               switch (ATOMbasetype(tp2)) {
                case TYPE_void:
                        v2 = * (const oid *) src2;
                        switch (projected) {
@@ -75,7 +75,11 @@ opswitch(BAT *b1, int tp1, const void *s
                                return BUN_NONE;
                        }
                        break;
-               case TYPE_oid:
+#if SIZEOF_OID == SIZEOF_INT
+               case TYPE_int:
+#else
+               case TYPE_lng:
+#endif
                        if (v2p)
                                v2 = * (const oid *) v2p;
                        for (i = 0; i < cnt; i++) {
@@ -94,36 +98,8 @@ opswitch(BAT *b1, int tp1, const void *s
                }
                break;
        }
-       case TYPE_oid:
-               switch (tp2) {
-               case TYPE_void: {
-                       oid v1 = 0;
-                       oid v2 = 0;
-                       BUN i;
-                       v2 = * (const oid *) src2;
-                       if (v1p)
-                               v1 = * (const oid *) v1p;
-                       for (i = 0; i < cnt; i++) {
-                               if (src1)
-                                       v1 = ((const oid *) src1)[projected == 
1 ? i : cand ? cand[i] - hoff : start + i];
-                               if (is_oid_nil(v1)) {
-                                       dst[i] = tpe_nil;
-                                       nils++;
-                               } else {
-                                       dst[i] = OP(v1, v2 + (projected == 2 ? 
i : cand[i] - hoff));
-                               }
-                       }
-                       break;
-               }
-               case TYPE_oid:
-                       BINARY_3TYPE_FUNC(oid, oid, tpe, OP);
-                       break;
-               default:
-                       goto unsupported;
-               }
-               break;
        case TYPE_bte:
-               switch (tp2) {
+               switch (ATOMbasetype(tp2)) {
                case TYPE_bte:
                        BINARY_3TYPE_FUNC(bte, bte, tpe, OP);
                        break;
@@ -152,7 +128,7 @@ opswitch(BAT *b1, int tp1, const void *s
                }
                break;
        case TYPE_sht:
-               switch (tp2) {
+               switch (ATOMbasetype(tp2)) {
                case TYPE_bte:
                        BINARY_3TYPE_FUNC(sht, bte, tpe, OP);
                        break;
@@ -181,7 +157,7 @@ opswitch(BAT *b1, int tp1, const void *s
                }
                break;
        case TYPE_int:
-               switch (tp2) {
+               switch (ATOMbasetype(tp2)) {
                case TYPE_bte:
                        BINARY_3TYPE_FUNC(int, bte, tpe, OP);
                        break;
@@ -205,12 +181,33 @@ opswitch(BAT *b1, int tp1, const void *s
                case TYPE_dbl:
                        BINARY_3TYPE_FUNC(int, dbl, tpe, OP);
                        break;
+#if SIZEOF_OID == SIZEOF_INT
+               case TYPE_void: {
+                       oid v1 = 0;
+                       oid v2 = 0;
+                       BUN i;
+                       v2 = * (const oid *) src2;
+                       if (v1p)
+                               v1 = * (const oid *) v1p;
+                       for (i = 0; i < cnt; i++) {
+                               if (src1)
+                                       v1 = ((const oid *) src1)[projected == 
1 ? i : cand ? cand[i] - hoff : start + i];
+                               if (is_oid_nil(v1)) {
+                                       dst[i] = tpe_nil;
+                                       nils++;
+                               } else {
+                                       dst[i] = OP(v1, v2 + (projected == 2 ? 
i : cand[i] - hoff));
+                               }
+                       }
+                       break;
+               }
+#endif
                default:
                        goto unsupported;
                }
                break;
        case TYPE_lng:
-               switch (tp2) {
+               switch (ATOMbasetype(tp2)) {
                case TYPE_bte:
                        BINARY_3TYPE_FUNC(lng, bte, tpe, OP);
                        break;
@@ -234,13 +231,34 @@ opswitch(BAT *b1, int tp1, const void *s
                case TYPE_dbl:
                        BINARY_3TYPE_FUNC(lng, dbl, tpe, OP);
                        break;
+#if SIZEOF_OID == SIZEOF_LNG
+               case TYPE_void: {
+                       oid v1 = 0;
+                       oid v2 = 0;
+                       BUN i;
+                       v2 = * (const oid *) src2;
+                       if (v1p)
+                               v1 = * (const oid *) v1p;
+                       for (i = 0; i < cnt; i++) {
+                               if (src1)
+                                       v1 = ((const oid *) src1)[projected == 
1 ? i : cand ? cand[i] - hoff : start + i];
+                               if (is_oid_nil(v1)) {
+                                       dst[i] = tpe_nil;
+                                       nils++;
+                               } else {
+                                       dst[i] = OP(v1, v2 + (projected == 2 ? 
i : cand[i] - hoff));
+                               }
+                       }
+                       break;
+               }
+#endif
                default:
                        goto unsupported;
                }
                break;
 #ifdef HAVE_HGE
        case TYPE_hge:
-               switch (tp2) {
+               switch (ATOMbasetype(tp2)) {
                case TYPE_bte:
                        BINARY_3TYPE_FUNC(hge, bte, tpe, OP);
                        break;
@@ -268,7 +286,7 @@ opswitch(BAT *b1, int tp1, const void *s
                break;
 #endif
        case TYPE_flt:
-               switch (tp2) {
+               switch (ATOMbasetype(tp2)) {
                case TYPE_bte:
                        BINARY_3TYPE_FUNC(flt, bte, tpe, OP);
                        break;
@@ -297,7 +315,7 @@ opswitch(BAT *b1, int tp1, const void *s
                }
                break;
        case TYPE_dbl:
-               switch (tp2) {
+               switch (ATOMbasetype(tp2)) {
                case TYPE_bte:
                        BINARY_3TYPE_FUNC(dbl, bte, tpe, OP);
                        break;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to