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