Changeset: 0922ce76d0a2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/0922ce76d0a2 Modified Files: clients/Tests/exports.stable.out gdk/gdk_calc.c gdk/gdk_calc_addsub.c gdk/gdk_calc_compare.h gdk/gdk_calc_div.c gdk/gdk_calc_mod.c gdk/gdk_calc_mul.c gdk/gdk_string.c gdk/gdk_value.c monetdb5/mal/mal_builder.c monetdb5/mal/mal_builder.h monetdb5/mal/mal_interpreter.c monetdb5/mal/mal_parser.c monetdb5/modules/mal/bbp.c monetdb5/modules/mal/mal_mapi.c monetdb5/modules/mal/mdb.c monetdb5/modules/mal/remote.c sql/server/sql_env.c sql/server/sql_env.h sql/server/sql_mvc.h sql/server/sql_var.c Branch: no_type_bat Log Message:
More full initialize ValRecord variables. Some ValPtr args are const. diffs (truncated from 500 to 300 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -1194,7 +1194,7 @@ InstrPtr pushReturn(MalBlkPtr mb, InstrP InstrPtr pushSht(MalBlkPtr mb, InstrPtr q, sht val); InstrPtr pushStr(MalBlkPtr mb, InstrPtr q, const char *val); InstrPtr pushType(MalBlkPtr mb, InstrPtr q, int tpe); -InstrPtr pushValue(MalBlkPtr mb, InstrPtr q, ValPtr cst); +InstrPtr pushValue(MalBlkPtr mb, InstrPtr q, const ValRecord *cst); InstrPtr pushVoid(MalBlkPtr mb, InstrPtr q); InstrPtr pushZero(MalBlkPtr mb, InstrPtr q, int tpe); const char *putName(const char *nme); diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c --- a/gdk/gdk_calc.c +++ b/gdk/gdk_calc.c @@ -147,7 +147,7 @@ bailout: gdk_return VARcalcnot(ValPtr ret, const ValRecord *v) { - ret->vtype = v->vtype; + *ret = (ValRecord) {.vtype = v->vtype}; switch (ATOMbasetype(v->vtype)) { case TYPE_msk: ret->val.mval = !v->val.mval; @@ -311,7 +311,7 @@ bailout: gdk_return VARcalcnegate(ValPtr ret, const ValRecord *v) { - ret->vtype = v->vtype; + *ret = (ValRecord) {.vtype = v->vtype}; switch (ATOMbasetype(v->vtype)) { case TYPE_bte: if (is_bte_nil(v->val.btval)) @@ -451,7 +451,7 @@ bailout: gdk_return VARcalcabsolute(ValPtr ret, const ValRecord *v) { - ret->vtype = v->vtype; + *ret = (ValRecord) {.vtype = v->vtype}; switch (ATOMbasetype(v->vtype)) { case TYPE_bte: if (is_bte_nil(v->val.btval)) @@ -589,7 +589,7 @@ bailout: gdk_return VARcalciszero(ValPtr ret, const ValRecord *v) { - ret->vtype = TYPE_bit; + *ret = (ValRecord) {.vtype = TYPE_bit}; switch (ATOMbasetype(v->vtype)) { case TYPE_bte: if (is_bte_nil(v->val.btval)) @@ -731,7 +731,7 @@ bailout: gdk_return VARcalcsign(ValPtr ret, const ValRecord *v) { - ret->vtype = TYPE_bte; + *ret = (ValRecord) {.vtype = TYPE_bte}; switch (ATOMbasetype(v->vtype)) { case TYPE_bte: if (is_bte_nil(v->val.btval)) @@ -921,16 +921,20 @@ BATcalcisnotnil(BAT *b, BAT *s) gdk_return VARcalcisnil(ValPtr ret, const ValRecord *v) { - ret->vtype = TYPE_bit; - ret->val.btval = (bit) VALisnil(v); + *ret = (ValRecord) { + .vtype = TYPE_bit, + .val.btval = (bat) VALisnil(v), + }; return GDK_SUCCEED; } gdk_return VARcalcisnotnil(ValPtr ret, const ValRecord *v) { - ret->vtype = TYPE_bit; - ret->val.btval = (bit) !VALisnil(v); + *ret = (ValRecord) { + .vtype = TYPE_bit, + .val.btval = (bat) !VALisnil(v), + }; return GDK_SUCCEED; } @@ -2569,6 +2573,7 @@ VARcalcxor(ValPtr ret, const ValRecord * return GDK_FAIL; } + ret->bat = false; if (xor_typeswitchloop(VALptr(lft), false, VALptr(rgt), false, VALget(ret), lft->vtype, @@ -2804,6 +2809,7 @@ VARcalcor(ValPtr ret, const ValRecord *l return GDK_FAIL; } + ret->bat = false; if (or_typeswitchloop(VALptr(lft), false, VALptr(rgt), false, VALget(ret), lft->vtype, @@ -3034,6 +3040,7 @@ VARcalcand(ValPtr ret, const ValRecord * return GDK_FAIL; } + ret->bat = false; if (and_typeswitchloop(VALptr(lft), false, VALptr(rgt), false, VALget(ret), lft->vtype, @@ -3399,7 +3406,7 @@ BATcalccstlsh(const ValRecord *v, BAT *b gdk_return VARcalclsh(ValPtr ret, const ValRecord *lft, const ValRecord *rgt) { - ret->vtype = lft->vtype; + *ret = (ValRecord) {.vtype = lft->vtype}; if (lsh_typeswitchloop(VALptr(lft), lft->vtype, false, VALptr(rgt), rgt->vtype, false, VALget(ret), @@ -3749,7 +3756,7 @@ BATcalccstrsh(const ValRecord *v, BAT *b gdk_return VARcalcrsh(ValPtr ret, const ValRecord *lft, const ValRecord *rgt) { - ret->vtype = lft->vtype; + *ret = (ValRecord) {.vtype = lft->vtype}; if (rsh_typeswitchloop(VALptr(lft), lft->vtype, false, VALptr(rgt), rgt->vtype, false, VALget(ret), @@ -4296,7 +4303,7 @@ VARcalcbetween(ValPtr ret, const ValReco t = ATOMbasetype(t); - ret->vtype = TYPE_bit; + *ret = (ValRecord) {.vtype = TYPE_bit}; switch (t) { case TYPE_bte: ret->val.btval = BETWEEN(v->val.btval, lo->val.btval, hi->val.btval, bte); diff --git a/gdk/gdk_calc_addsub.c b/gdk/gdk_calc_addsub.c --- a/gdk/gdk_calc_addsub.c +++ b/gdk/gdk_calc_addsub.c @@ -1666,6 +1666,7 @@ BATcalccstadd(const ValRecord *v, BAT *b gdk_return VARcalcadd(ValPtr ret, const ValRecord *lft, const ValRecord *rgt) { + ret->bat = false; if (add_typeswitchloop(VALptr(lft), lft->vtype, false, VALptr(rgt), rgt->vtype, false, VALget(ret), ret->vtype, @@ -1746,6 +1747,7 @@ BATcalcincr(BAT *b, BAT *s) gdk_return VARcalcincr(ValPtr ret, const ValRecord *v) { + ret->bat = false; if (add_typeswitchloop(VALptr(v), v->vtype, false, &(bte){1}, TYPE_bte, false, VALget(ret), ret->vtype, @@ -3333,6 +3335,7 @@ BATcalccstsub(const ValRecord *v, BAT *b gdk_return VARcalcsub(ValPtr ret, const ValRecord *lft, const ValRecord *rgt) { + ret->bat = false; if (sub_typeswitchloop(VALptr(lft), lft->vtype, false, VALptr(rgt), rgt->vtype, false, VALget(ret), ret->vtype, @@ -3353,6 +3356,7 @@ BATcalcdecr(BAT *b, BAT *s) gdk_return VARcalcdecr(ValPtr ret, const ValRecord *v) { + ret->bat = false; if (sub_typeswitchloop(VALptr(v), v->vtype, false, &(bte){1}, TYPE_bte, false, VALget(ret), ret->vtype, 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 @@ -970,7 +970,7 @@ VARcalcop(ValPtr ret, const ValRecord *l #endif ) { - ret->vtype = TYPE_TPE; + *ret = (ValRecord) {.vtype = TYPE_TPE}; if (op_typeswitchloop(VALptr(lft), ATOMtype(lft->vtype) == TYPE_oid ? lft->vtype : ATOMbasetype(lft->vtype), false, diff --git a/gdk/gdk_calc_div.c b/gdk/gdk_calc_div.c --- a/gdk/gdk_calc_div.c +++ b/gdk/gdk_calc_div.c @@ -2065,6 +2065,7 @@ BATcalccstdiv(const ValRecord *v, BAT *b gdk_return VARcalcdiv(ValPtr ret, const ValRecord *lft, const ValRecord *rgt) { + ret->bat = false; if (div_typeswitchloop(VALptr(lft), lft->vtype, false, VALptr(rgt), rgt->vtype, false, VALget(ret), ret->vtype, diff --git a/gdk/gdk_calc_mod.c b/gdk/gdk_calc_mod.c --- a/gdk/gdk_calc_mod.c +++ b/gdk/gdk_calc_mod.c @@ -1284,6 +1284,7 @@ BATcalccstmod(const ValRecord *v, BAT *b gdk_return VARcalcmod(ValPtr ret, const ValRecord *lft, const ValRecord *rgt) { + ret->bat = false; if (mod_typeswitchloop(VALptr(lft), lft->vtype, false, VALptr(rgt), rgt->vtype, false, VALget(ret), ret->vtype, diff --git a/gdk/gdk_calc_mul.c b/gdk/gdk_calc_mul.c --- a/gdk/gdk_calc_mul.c +++ b/gdk/gdk_calc_mul.c @@ -2213,6 +2213,7 @@ BATcalccstmul(const ValRecord *v, BAT *b gdk_return VARcalcmul(ValPtr ret, const ValRecord *lft, const ValRecord *rgt) { + ret->bat = false; if (mul_typeswitchloop(VALptr(lft), lft->vtype, false, VALptr(rgt), rgt->vtype, false, VALget(ret), ret->vtype, diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c --- a/gdk/gdk_string.c +++ b/gdk/gdk_string.c @@ -1092,7 +1092,7 @@ BATstr_group_concat(ValPtr res, BAT *b, char *nseparator = (char *)separator; assert((nseparator && !sep) || (!nseparator && sep)); /* only one of them must be set */ - res->vtype = TYPE_str; + *res = (ValRecord) {.vtype = TYPE_str}; canditer_init(&ci, b, s); diff --git a/gdk/gdk_value.c b/gdk/gdk_value.c --- a/gdk/gdk_value.c +++ b/gdk/gdk_value.c @@ -141,10 +141,11 @@ VALclear(ValPtr v) void VALempty(ValPtr v) { - v->bat = false; - v->len = 0; - v->val.oval = oid_nil; - v->vtype = TYPE_void; + *v = (ValRecord) { + .bat = false, + .val.oval = oid_nil, + .vtype = TYPE_void, + }; } /* Create a copy of S into D, allocating space for external values diff --git a/monetdb5/mal/mal_builder.c b/monetdb5/mal/mal_builder.c --- a/monetdb5/mal/mal_builder.c +++ b/monetdb5/mal/mal_builder.c @@ -652,7 +652,7 @@ pushZero(MalBlkPtr mb, InstrPtr q, int t } InstrPtr -pushValue(MalBlkPtr mb, InstrPtr q, ValPtr vr) +pushValue(MalBlkPtr mb, InstrPtr q, const ValRecord *vr) { int _t; ValRecord cst; diff --git a/monetdb5/mal/mal_builder.h b/monetdb5/mal/mal_builder.h --- a/monetdb5/mal/mal_builder.h +++ b/monetdb5/mal/mal_builder.h @@ -53,7 +53,7 @@ mal_export InstrPtr pushNilBat(MalBlkPtr mal_export InstrPtr pushType(MalBlkPtr mb, InstrPtr q, int tpe); mal_export InstrPtr pushNilType(MalBlkPtr mb, InstrPtr q, char *tpe); mal_export InstrPtr pushZero(MalBlkPtr mb, InstrPtr q, int tpe); -mal_export InstrPtr pushValue(MalBlkPtr mb, InstrPtr q, ValPtr cst); +mal_export InstrPtr pushValue(MalBlkPtr mb, InstrPtr q, const ValRecord *cst); mal_export int getIntConstant(MalBlkPtr mb, int val); mal_export int getLngConstant(MalBlkPtr mb, lng val); diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c --- a/monetdb5/mal/mal_interpreter.c +++ b/monetdb5/mal/mal_interpreter.c @@ -1390,11 +1390,7 @@ void garbageElement(Client cntxt, ValPtr v) { (void) cntxt; - if (!v->bat && ATOMstorage(v->vtype) == TYPE_str) { - GDKfree(v->val.sval); - v->val.sval = NULL; - v->len = 0; - } else if (v->bat) { + if (v->bat) { /* * All operations are responsible to properly set the * reference count of the BATs being produced or destroyed. @@ -1412,6 +1408,10 @@ garbageElement(Client cntxt, ValPtr v) return; BBPcold(bid); BBPrelease(bid); + } else if (ATOMstorage(v->vtype) == TYPE_str) { + GDKfree(v->val.sval); + v->val.sval = NULL; + v->len = 0; } else if (0 < v->vtype && v->vtype < MAXATOMS && ATOMextern(v->vtype)) { GDKfree(v->val.pval); v->val.pval = 0; @@ -1445,11 +1445,13 @@ garbageCollector(Client cntxt, MalBlkPtr (void) cntxt; _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org