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 -- [email protected]
To unsubscribe send an email to [email protected]