Changeset: 01b5e8ff9064 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=01b5e8ff9064
Modified Files:
        gdk/gdk_analytic.c
Branch: analytics
Log Message:

Fixed error messages and eliminated unnecessary goto statements in gdk_analytic.


diffs (truncated from 573 to 300 lines):

diff --git a/gdk/gdk_analytic.c b/gdk/gdk_analytic.c
--- a/gdk/gdk_analytic.c
+++ b/gdk/gdk_analytic.c
@@ -482,8 +482,7 @@ GDKanalyticaldiff(BAT *r, BAT *b, BAT *p
                switch(tp1) { \
                        ANALYTICAL_WINDOW_BOUNDS_FP(FRAME, HALF, LIMIT); \
                        default: { \
-                               GDKerror("analytical bounds: type %s not 
supported.\n", ATOMname(tp2)); \
-                               return GDK_FAIL; \
+                               goto logical_bound_not_supported; \
                        } \
                } \
        } while(0)
@@ -495,7 +494,7 @@ GDKanalyticaldiff(BAT *r, BAT *b, BAT *p
                if (l) { /* dynamic bounds */ \
                        TPE *restrict limit = (TPE*) Tloc(l, 0); \
                        if(first_half) { \
-                               IMP(_RANGE, _FIRST, limit[k]);  \
+                               IMP(_RANGE, _FIRST, limit[k]); \
                        } else { \
                                IMP(_RANGE, _SECOND, limit[k]); \
                        } \
@@ -506,7 +505,7 @@ GDKanalyticaldiff(BAT *r, BAT *b, BAT *p
                        } else if(first_half) { \
                                IMP(_RANGE, _FIRST, limit);     \
                        } else { \
-                               IMP(_RANGE, _SECOND, limit);    \
+                               IMP(_RANGE, _SECOND, limit); \
                        } \
                } \
        } while(0)
@@ -593,8 +592,7 @@ GDKanalyticalwindowbounds(BAT *r, BAT *b
                                        break;
 #endif
                                default:
-                                       GDKerror("analytical bounds: type %s 
not supported.\n", ATOMname(tp2));
-                                       return GDK_FAIL;
+                                       goto physical_bound_not_supported;
                        }
                } else {
                        switch(tp2) {
@@ -616,20 +614,24 @@ GDKanalyticalwindowbounds(BAT *r, BAT *b
                                        break;
 #endif
                                default:
-                                       GDKerror("analytical bounds: type %s 
not supported.\n", ATOMname(tp2));
-                                       return GDK_FAIL;
+                                       goto physical_bound_not_supported;
                        }
                }
        }
-goto finish;
-calc_overflow:
-       GDKerror("22003!overflow in calculation.\n");
-       return GDK_FAIL;
-finish:
        BATsetcount(r, cnt);
        r->tnonil = (nils == 0);
        r->tnil = (nils > 0);
        return GDK_SUCCEED;
+logical_bound_not_supported:
+       GDKerror("GDKanalyticalwindowbounds: range frame bound type %s not 
supported.\n", ATOMname(tp1));
+       return GDK_FAIL;
+physical_bound_not_supported:
+       assert(unit == 0 || unit == 2);
+       GDKerror("GDKanalyticalwindowbounds: %s frame bound type %s not 
supported.\n", (unit == 0) ? "rows" : "groups", ATOMname(tp2));
+       return GDK_FAIL;
+calc_overflow:
+       GDKerror("22003!overflow in calculation.\n");
+       return GDK_FAIL;
 }
 
 #undef ANALYTICAL_WINDOW_BOUNDS_FIXED_ROWS_FIRST_PRECEDING
@@ -731,7 +733,6 @@ finish:
                        rp += cnt;                       \
                        NTILE_CALC;                      \
                }                                    \
-               goto finish;                         \
        } while(0)
 
 gdk_return
@@ -740,7 +741,6 @@ GDKanalyticalntile(BAT *r, BAT *b, BAT *
        BUN cnt = BATcount(b), ncnt = cnt, buckets, i = 0;
        bit *np, *pnp, *end;
        bool has_nils = false;
-       gdk_return gdk_res = GDK_SUCCEED;
 
        assert(ntile);
 
@@ -763,16 +763,13 @@ GDKanalyticalntile(BAT *r, BAT *b, BAT *
                        break;
 #endif
                default:
-                       goto nosupport;
+                       GDKerror("GDKanalyticalntile: type %s not 
supported.\n", ATOMname(tpe));
+                       return GDK_FAIL;
        }
-nosupport:
-       GDKerror("ntile: type %s not supported.\n", ATOMname(tpe));
-       return GDK_FAIL;
-finish:
        BATsetcount(r, cnt);
        r->tnonil = !has_nils;
        r->tnil = has_nils;
-       return gdk_res;
+       return GDK_SUCCEED;
 }
 
 #undef ANALYTICAL_NTILE_IMP
@@ -818,11 +815,11 @@ finish:
 #define ANALYTICAL_FIRST_OTHERS                                         \
        do {                                                                \
                curval = BUNtail(bpi, j);                                       
\
-               if(atomcmp(curval, nil) == 0)                                   
\
+               if (atomcmp(curval, nil) == 0)                                  
\
                        has_nils = true;                                        
    \
                for (;j < i; j++) {                                             
\
-                       if ((gdk_res = BUNappend(r, curval, false)) != 
GDK_SUCCEED) \
-                               goto finish;                                    
        \
+                       if (BUNappend(r, curval, false) != GDK_SUCCEED)         
    \
+                               goto allocation_error;                          
        \
                }                                                               
\
        } while(0)
 
@@ -834,7 +831,6 @@ GDKanalyticalfirst(BAT *r, BAT *b, BAT *
        bool has_nils = false;
        BUN i = 0, j = 0, ncnt, cnt = BATcount(b);
        bit *np, *pnp, *end;
-       gdk_return gdk_res = GDK_SUCCEED;
 
        switch(tpe) {
                case TYPE_bit:
@@ -886,11 +882,13 @@ GDKanalyticalfirst(BAT *r, BAT *b, BAT *
                        }
                }
        }
-finish:
        BATsetcount(r, cnt);
        r->tnonil = !has_nils;
        r->tnil = has_nils;
-       return gdk_res;
+       return GDK_SUCCEED;
+allocation_error:
+       GDKerror("GDKanalyticalfirst: malloc failure\n");
+       return GDK_FAIL;
 }
 
 #undef ANALYTICAL_FIRST_IMP
@@ -937,11 +935,11 @@ finish:
 #define ANALYTICAL_LAST_OTHERS                                          \
        do {                                                                \
                curval = BUNtail(bpi, i - 1);                                   
\
-               if(atomcmp(curval, nil) == 0)                                   
\
+               if (atomcmp(curval, nil) == 0)                                  
\
                        has_nils = true;                                        
    \
                for (;j < i; j++) {                                             
\
-                       if ((gdk_res = BUNappend(r, curval, false)) != 
GDK_SUCCEED) \
-                               goto finish;                                    
        \
+                       if (BUNappend(r, curval, false) != GDK_SUCCEED)         
    \
+                               goto allocation_error;                          
        \
                }                                                               
\
        } while(0)
 
@@ -953,7 +951,6 @@ GDKanalyticallast(BAT *r, BAT *b, BAT *p
        bool has_nils = false;
        BUN i = 0, j = 0, ncnt, cnt = BATcount(b);
        bit *np, *pnp, *end;
-       gdk_return gdk_res = GDK_SUCCEED;
 
        switch(tpe) {
                case TYPE_bit:
@@ -1005,11 +1002,13 @@ GDKanalyticallast(BAT *r, BAT *b, BAT *p
                        }
                }
        }
-finish:
        BATsetcount(r, cnt);
        r->tnonil = !has_nils;
        r->tnil = has_nils;
-       return gdk_res;
+       return GDK_SUCCEED;
+allocation_error:
+       GDKerror("GDKanalyticallast: malloc failure\n");
+       return GDK_FAIL;
 }
 
 #undef ANALYTICAL_LAST_IMP
@@ -1060,7 +1059,6 @@ finish:
                        bp += cnt;                   \
                        NTHVALUE_CALC(TPE);          \
                }                                \
-               goto finish;                     \
        } while(0)
 
 #define ANALYTICAL_NTHVALUE_OTHERS                                      \
@@ -1069,11 +1067,11 @@ finish:
                        curval = nil;                                           
    \
                else                                                            
\
                        curval = BUNtail(bpi, nth);                             
    \
-               if(atomcmp(curval, nil) == 0)                                   
\
+               if (atomcmp(curval, nil) == 0)                                  
\
                        has_nils = true;                                        
    \
                for (;j < i; j++) {                                             
\
-                       if ((gdk_res = BUNappend(r, curval, false)) != 
GDK_SUCCEED) \
-                               goto finish;                                    
        \
+                       if (BUNappend(r, curval, false) != GDK_SUCCEED)         
    \
+                               goto allocation_error;                          
        \
                }                                                               
\
        } while(0)
 
@@ -1084,7 +1082,6 @@ GDKanalyticalnthvalue(BAT *r, BAT *b, BA
        const void* restrict nil;
        BUN i = 0, j = 0, ncnt, cnt = BATcount(b);
        bit *np, *pnp, *end;
-       gdk_return gdk_res = GDK_SUCCEED;
        bool has_nils = false;
 
        switch (tpe) {
@@ -1119,8 +1116,8 @@ GDKanalyticalnthvalue(BAT *r, BAT *b, BA
                        if(nth == BUN_NONE) {
                                has_nils = true;
                                for(i=0; i<cnt; i++) {
-                                       if ((gdk_res = BUNappend(r, nil, 
false)) != GDK_SUCCEED)
-                                               goto finish;
+                                       if (BUNappend(r, nil, false) != 
GDK_SUCCEED)
+                                               goto allocation_error;
                                }
                        } else if (p) {
                                pnp = np = (bit*)Tloc(p, 0);
@@ -1140,11 +1137,13 @@ GDKanalyticalnthvalue(BAT *r, BAT *b, BA
                        }
                }
        }
-finish:
        BATsetcount(r, cnt);
        r->tnonil = !has_nils;
        r->tnil = has_nils;
-       return gdk_res;
+       return GDK_SUCCEED;
+allocation_error:
+       GDKerror("GDKanalyticalnthvalue: malloc failure\n");
+       return GDK_FAIL;
 }
 
 #undef ANALYTICAL_NTHVALUE_IMP
@@ -1194,22 +1193,21 @@ finish:
                        rp += cnt;                            \
                        ANALYTICAL_LAG_CALC(TPE);              \
                }                                         \
-               goto finish;                              \
        } while(0)
 
 #define ANALYTICAL_LAG_OTHERS                                                  
\
        do {                                                                    
   \
                for(i=0; i<lag && k<j; i++, k++) {                              
       \
-                       if ((gdk_res = BUNappend(r, default_value, false)) != 
GDK_SUCCEED) \
-                               goto finish;                                    
               \
+                       if (BUNappend(r, default_value, false) != GDK_SUCCEED)  
           \
+                               goto allocation_error;                          
               \
                }                                                               
       \
                if(lag > 0 && atomcmp(default_value, nil) == 0)                 
       \
                        has_nils = true;                                        
           \
                for(l=k-lag; k<j; k++, l++) {                                   
       \
                        curval = BUNtail(bpi, l);                               
           \
-                       if ((gdk_res = BUNappend(r, curval, false)) != 
GDK_SUCCEED)        \
-                               goto finish;                                    
               \
-                       if(atomcmp(curval, nil) == 0)                           
           \
+                       if (BUNappend(r, curval, false) != GDK_SUCCEED)         
           \
+                               goto allocation_error;                          
               \
+                       if (atomcmp(curval, nil) == 0)                          
           \
                                has_nils = true;                                
               \
                }                                                               
       \
        } while (0)
@@ -1221,7 +1219,6 @@ GDKanalyticallag(BAT *r, BAT *b, BAT *p,
        const void *restrict nil;
        BUN i = 0, j = 0, k = 0, l = 0, ncnt, cnt = BATcount(b);
        bit *np, *pnp, *end;
-       gdk_return gdk_res = GDK_SUCCEED;
        bool has_nils = false;
 
        assert(default_value);
@@ -1258,8 +1255,8 @@ GDKanalyticallag(BAT *r, BAT *b, BAT *p,
                        if(lag == BUN_NONE) {
                                has_nils = true;
                                for (j=0;j < cnt; j++) {
-                                       if ((gdk_res = BUNappend(r, nil, 
false)) != GDK_SUCCEED)
-                                               goto finish;
+                                       if (BUNappend(r, nil, false) != 
GDK_SUCCEED)
+                                               goto allocation_error;
                                }
                        } else if(p) {
                                pnp = np = (bit*)Tloc(p, 0);
@@ -1279,11 +1276,13 @@ GDKanalyticallag(BAT *r, BAT *b, BAT *p,
                        }
                }
        }
-finish:
        BATsetcount(r, cnt);
        r->tnonil = !has_nils;
        r->tnil = has_nils;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to