Changeset: 6a5effcdf541 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6a5effcdf541
Modified Files:
        monetdb5/extras/jaql/jaqlgencode.c
Branch: Oct2012
Log Message:

dumpwalkvar: let start oid be a variable reference

we will rarily know at plan generation time what the start oid of the
array to walk over is, so make it a mal variable reference instead, with
fallback to 0@0 in case we don't have a variable


diffs (40 lines):

diff --git a/monetdb5/extras/jaql/jaqlgencode.c 
b/monetdb5/extras/jaql/jaqlgencode.c
--- a/monetdb5/extras/jaql/jaqlgencode.c
+++ b/monetdb5/extras/jaql/jaqlgencode.c
@@ -95,19 +95,24 @@ dumpbatwritable(jc *j, MalBlkPtr mb, cha
 /* returns a bat with subset from kind bat (:oid,:bte) which are
  * referenced by the array of the JSON structure with oid start */
 static int
-dumpwalkvar(MalBlkPtr mb, int j1, int j5, oid start)
+dumpwalkvar(MalBlkPtr mb, int j1, int j5, int start)
 {
        InstrPtr q;
        int a, b;
 
-       MALCOMMENT(mb, "dumpwalkvar(X_%d,X_%d," OIDFMT "@0) {", j1, j5, start);
+       MALCOMMENT(mb, "dumpwalkvar(X_%d,X_%d,X_%d) {", j1, j5, start);
 
        q = newInstruction(mb, ASSIGNsymbol);
        setModuleId(q, algebraRef);
        setFunctionId(q, putName("selectH", 7));
        q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
        q = pushArgument(mb, q, j1);
-       q = pushOid(mb, q, start);
+       if (start == 0) {
+               /* if no var is set as start, just use 0@0 */
+               q = pushOid(mb, q, 0);
+       } else {
+               q = pushArgument(mb, q, start);
+       }
        a = getArg(q, 0);
        pushInstruction(mb, q);
        q = newInstruction(mb, ASSIGNsymbol);
@@ -141,7 +146,7 @@ dumpwalkvar(MalBlkPtr mb, int j1, int j5
        a = getArg(q, 0);
        pushInstruction(mb, q);
 
-       MALCOMMENT(mb, "} dumpwalkvar(X_%d,X_%d," OIDFMT "@0)", j1, j5, start);
+       MALCOMMENT(mb, "} dumpwalkvar(X_%d,X_%d,X_%d)", j1, j5, start);
        return a;
 }
 
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to