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

Reply via email to