Changeset: b49c4150fd9a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b49c4150fd9a
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
gdk/gdk_value.c
monetdb5/extras/rapi/rapi.c
monetdb5/modules/atoms/json.c
monetdb5/modules/mal/Tests/inspect00.stable.out
monetdb5/modules/mal/batcalc.c
monetdb5/modules/mal/mdb.mal
Branch: default
Log Message:
Fixes to make sure actual results of calls match expected results.
diffs (truncated from 303 to 300 lines):
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -39090,7 +39090,7 @@ pattern mdb.getDefinition():bat[:oid,:st
address MDBgetDefinition;
comment Returns a string representation of the current function with
typing information attached
-pattern mdb.getStackTrace() (X_1:bat[:oid,:str],X_2:bat[:oid,:str])
+pattern mdb.getStackTrace() (X_1:bat[:oid,:int],X_2:bat[:oid,:str])
address MDBStkTrace;
pattern mdb.getStackFrame() (X_1:bat[:oid,:str],X_2:bat[:oid,:str])
address MDBgetStackFrame;
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -50021,7 +50021,7 @@ pattern mdb.getDefinition():bat[:oid,:st
address MDBgetDefinition;
comment Returns a string representation of the current function with
typing information attached
-pattern mdb.getStackTrace() (X_1:bat[:oid,:str],X_2:bat[:oid,:str])
+pattern mdb.getStackTrace() (X_1:bat[:oid,:int],X_2:bat[:oid,:str])
address MDBStkTrace;
pattern mdb.getStackFrame() (X_1:bat[:oid,:str],X_2:bat[:oid,:str])
address MDBgetStackFrame;
diff --git a/gdk/gdk_value.c b/gdk/gdk_value.c
--- a/gdk/gdk_value.c
+++ b/gdk/gdk_value.c
@@ -175,7 +175,7 @@ VALinit(ValPtr d, int tpe, const void *s
GDKerror("VALinit:unsupported init\n");
d->vtype = TYPE_int;
} else if (tpe >= TYPE_str && ATOMstorage(tpe) == TYPE_str) {
- d->vtype = TYPE_str;
+ d->vtype = tpe;
d->val.sval = GDKstrdup(s);
d->len = strLen(s);
} else {
diff --git a/monetdb5/extras/rapi/rapi.c b/monetdb5/extras/rapi/rapi.c
--- a/monetdb5/extras/rapi/rapi.c
+++ b/monetdb5/extras/rapi/rapi.c
@@ -645,7 +645,7 @@ str RAPIeval(Client cntxt, MalBlkPtr mb,
i,
rtypename(TYPEOF(ret_col)));
goto wrapup;
}
- SXP_TO_BAT(bte, LOGICAL_POINTER, *p==NA_LOGICAL);
+ SXP_TO_BAT(bit, LOGICAL_POINTER, *p==NA_LOGICAL);
break;
}
case TYPE_dbl: {
diff --git a/monetdb5/modules/atoms/json.c b/monetdb5/modules/atoms/json.c
--- a/monetdb5/modules/atoms/json.c
+++ b/monetdb5/modules/atoms/json.c
@@ -115,8 +115,15 @@ JSONtoString(str *s, int *len, json src)
char *c, *dst;
if (GDK_STRNIL(src)) {
- *s = GDKstrdup("null");
- return 0;
+ if (*s == NULL || *len < 4) {
+ GDKfree(*s);
+ *len = 4;
+ *s = GDKmalloc(4);
+ if (*s == NULL)
+ return -1;
+ }
+ strncpy(*s, "nil", 4);
+ return 3;
}
/* count how much space we need for the output string */
cnt = 3; /* two times " plus \0 */
@@ -1287,7 +1294,7 @@ JSONvalueTable(bat *ret, json *js)
JSON *jt;
jt = JSONparse(*js, TRUE); // already validated
- bn = BATnew(TYPE_void, TYPE_str, 64, TRANSIENT);
+ bn = BATnew(TYPE_void, TYPE_json, 64, TRANSIENT);
if (bn == NULL)
throw(MAL, "json.values", MAL_MALLOC_FAIL);
BATseqbase(bn, 0);
diff --git a/monetdb5/modules/mal/Tests/inspect00.stable.out
b/monetdb5/modules/mal/Tests/inspect00.stable.out
--- a/monetdb5/modules/mal/Tests/inspect00.stable.out
+++ b/monetdb5/modules/mal/Tests/inspect00.stable.out
@@ -33,7 +33,7 @@ stack depth 2
# view stk stk # name
# void int str # type
#--------------------------#
-[ 0@0, 0, " (h=nil:bat[:oid,:str],t=nil:bat[:oid,:str]) :=
mdb.getStackTrace(); at user.tst[3]" ]
+[ 0@0, 0, " (h=nil:bat[:oid,:int],t=nil:bat[:oid,:str]) :=
mdb.getStackTrace(); at user.tst[3]" ]
[ 1@0, 1, " user.tst(); at user.main[2]" ]
#-------------------------------------------------#
# view stk stk # name
diff --git a/monetdb5/modules/mal/batcalc.c b/monetdb5/modules/mal/batcalc.c
--- a/monetdb5/modules/mal/batcalc.c
+++ b/monetdb5/modules/mal/batcalc.c
@@ -303,7 +303,7 @@ calcmodtype(int tp1, int tp2)
}
static str
-CMDbatBINARY2(MalStkPtr stk, InstrPtr pci,
+CMDbatBINARY2(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci,
BAT *(*batfunc)(BAT *, BAT *, BAT *, int, int),
BAT *(batfunc1)(BAT *, const ValRecord *, BAT *, int,
int),
BAT *(batfunc2)(const ValRecord *, BAT *, BAT *, int,
int),
@@ -312,10 +312,13 @@ CMDbatBINARY2(MalStkPtr stk, InstrPtr pc
{
bat *bid;
BAT *bn, *b, *s = NULL;
- int tp1, tp2;
+ int tp1, tp2, tp3;
tp1 = stk->stk[getArg(pci, 1)].vtype;
tp2 = stk->stk[getArg(pci, 2)].vtype;
+ tp3 = getArgType(mb, pci, 0);
+ assert(isaBatType(tp3));
+ tp3 = getColumnType(tp3);
if (pci->argc == 4) {
bat *sid = getArgReference_bat(stk, pci, 3);
if (*sid && (s = BATdescriptor(*sid)) == NULL)
@@ -344,12 +347,15 @@ CMDbatBINARY2(MalStkPtr stk, InstrPtr pc
assert(BAThdense(b2));
}
if (b2) {
- bn = (*batfunc)(b, b2, s, (*typefunc)(b->T->type,
b2->T->type),
- abort_on_error);
+ if (tp3 == TYPE_any)
+ tp3 = (*typefunc)(b->ttype, b2->ttype);
+ bn = (*batfunc)(b, b2, s, tp3, abort_on_error);
BBPunfix(b2->batCacheid);
} else {
+ if (tp3 == TYPE_any)
+ tp3 = (*typefunc)(b->T->type, tp2);
bn = (*batfunc1)(b, &stk->stk[getArg(pci, 2)], s,
-
(*typefunc)(b->T->type, tp2), abort_on_error);
+ tp3, abort_on_error);
}
} else {
assert(tp1 != TYPE_bat && !isaBatType(tp1));
@@ -362,8 +368,9 @@ CMDbatBINARY2(MalStkPtr stk, InstrPtr pc
throw(MAL, malfunc, RUNTIME_OBJECT_MISSING);
}
assert(BAThdense(b));
- bn = (*batfunc2)(&stk->stk[getArg(pci, 1)], b, s,
- (*typefunc)(tp1, b->T->type),
abort_on_error);
+ if (tp3 == TYPE_any)
+ tp3 = (*typefunc)(tp1, b->T->type);
+ bn = (*batfunc2)(&stk->stk[getArg(pci, 1)], b, s, tp3,
abort_on_error);
}
BBPunfix(b->batCacheid);
if (bn == NULL) {
@@ -572,9 +579,8 @@ str
CMDbatADD(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcadd, BATcalcaddcst, BATcalccstadd,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcadd, BATcalcaddcst,
BATcalccstadd,
calctype, 0,
"batcalc.add_noerror");
}
@@ -584,9 +590,8 @@ str
CMDbatADDsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcadd, BATcalcaddcst, BATcalccstadd,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcadd, BATcalcaddcst,
BATcalccstadd,
calctype, 1, "batcalc.+");
}
@@ -596,9 +601,8 @@ str
CMDbatADDenlarge(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcadd, BATcalcaddcst, BATcalccstadd,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcadd, BATcalcaddcst,
BATcalccstadd,
calctypeenlarge, 1,
"batcalc.add_enlarge");
}
@@ -608,9 +612,8 @@ str
CMDbatSUB(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcsub, BATcalcsubcst, BATcalccstsub,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcsub, BATcalcsubcst,
BATcalccstsub,
calctype, 0,
"batcalc.sub_noerror");
}
@@ -620,9 +623,8 @@ str
CMDbatSUBsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcsub, BATcalcsubcst, BATcalccstsub,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcsub, BATcalcsubcst,
BATcalccstsub,
calctype, 1, "batcalc.-");
}
@@ -632,9 +634,8 @@ str
CMDbatSUBenlarge(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcsub, BATcalcsubcst, BATcalccstsub,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcsub, BATcalcsubcst,
BATcalccstsub,
calctypeenlarge, 1,
"batcalc.sub_enlarge");
}
@@ -644,9 +645,8 @@ str
CMDbatMUL(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcmul, BATcalcmulcst, BATcalccstmul,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcmul, BATcalcmulcst,
BATcalccstmul,
calctype, 0,
"batcalc.mul_noerror");
}
@@ -656,9 +656,8 @@ str
CMDbatMULsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcmul, BATcalcmulcst, BATcalccstmul,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcmul, BATcalcmulcst,
BATcalccstmul,
calctype, 1, "batcalc.*");
}
@@ -668,9 +667,8 @@ str
CMDbatMULenlarge(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcmul, BATcalcmulcst, BATcalccstmul,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcmul, BATcalcmulcst,
BATcalccstmul,
calctypeenlarge, 1,
"batcalc.mul_enlarge");
}
@@ -680,9 +678,8 @@ str
CMDbatDIV(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcdiv, BATcalcdivcst, BATcalccstdiv,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcdiv, BATcalcdivcst,
BATcalccstdiv,
calcdivtype, 0,
"batcalc.div_noerror");
}
@@ -692,9 +689,8 @@ str
CMDbatDIVsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcdiv, BATcalcdivcst, BATcalccstdiv,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcdiv, BATcalcdivcst,
BATcalccstdiv,
calcdivtype, 1, "batcalc./");
}
@@ -704,9 +700,8 @@ str
CMDbatMOD(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcmod, BATcalcmodcst, BATcalccstmod,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcmod, BATcalcmodcst,
BATcalccstmod,
calcmodtype, 0,
"batcalc.mod_noerror");
}
@@ -716,9 +711,8 @@ str
CMDbatMODsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) cntxt;
- (void) mb;
- return CMDbatBINARY2(stk, pci, BATcalcmod, BATcalcmodcst, BATcalccstmod,
+ return CMDbatBINARY2(mb, stk, pci, BATcalcmod, BATcalcmodcst,
BATcalccstmod,
calcmodtype, 1, "batcalc.%");
}
diff --git a/monetdb5/modules/mal/mdb.mal b/monetdb5/modules/mal/mdb.mal
--- a/monetdb5/modules/mal/mdb.mal
+++ b/monetdb5/modules/mal/mdb.mal
@@ -123,7 +123,7 @@ address MDBgetStackFrameN;
pattern getStackFrame()(:bat[:oid,:str] ,:bat[:oid,:str])
address MDBgetStackFrame
comment "Collect variable binding of current (n-th) stack frame.";
-pattern getStackTrace()(:bat[:oid,:str], :bat[:oid,:str])
+pattern getStackTrace()(:bat[:oid,:int], :bat[:oid,:str])
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list