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

dumpwalkvar: make start oid an argument


diffs (148 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
@@ -93,23 +93,21 @@ dumpbatwritable(jc *j, MalBlkPtr mb, cha
 }
 
 /* returns a bat with subset from kind bat (:oid,:bte) which are
- * referenced by the first array of the JSON structure (oid 0@0 of kind
- * bat, pointing to array, so all oids from array bat that have head oid
- * value 0@0) */
+ * referenced by the array of the JSON structure with oid start */
 static int
-dumpwalkvar(MalBlkPtr mb, int j1, int j5)
+dumpwalkvar(MalBlkPtr mb, int j1, int j5, oid start)
 {
        InstrPtr q;
        int a, b;
 
-       MALCOMMENT(mb, "dumpwalkvar(X_%d,X_%d) {", j1, j5);
+       MALCOMMENT(mb, "dumpwalkvar(X_%d,X_%d," OIDFMT "@0) {", 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, 0);
+       q = pushOid(mb, q, start);
        a = getArg(q, 0);
        pushInstruction(mb, q);
        q = newInstruction(mb, ASSIGNsymbol);
@@ -143,7 +141,7 @@ dumpwalkvar(MalBlkPtr mb, int j1, int j5
        a = getArg(q, 0);
        pushInstruction(mb, q);
 
-       MALCOMMENT(mb, "} dumpwalkvar(X_%d,X_%d)", j1, j5);
+       MALCOMMENT(mb, "} dumpwalkvar(X_%d,X_%d," OIDFMT "@0)", j1, j5, start);
        return a;
 }
 
@@ -1620,7 +1618,7 @@ dumppredjoin(jc *j, MalBlkPtr mb, json_v
                MALCOMMENT(mb, "| located %s = 
(X_%d,X_%d,X_%d,X_%d,X_%d,X_%d,X_%d)",
                                ljv->name,
                                ljv->j1, ljv->j2, ljv->j3, ljv->j4, ljv->j5, 
ljv->j6, ljv->j7);
-               a = dumpwalkvar(mb, ljv->j1, ljv->j5);
+               a = dumpwalkvar(mb, ljv->j1, ljv->j5, 0);
                tj.j1 = ljv->j1;
                tj.j5 = ljv->j5;
                tj.j6 = ljv->j6;
@@ -1639,7 +1637,7 @@ dumppredjoin(jc *j, MalBlkPtr mb, json_v
                MALCOMMENT(mb, "| located %s = 
(X_%d,X_%d,X_%d,X_%d,X_%d,X_%d,X_%d)",
                                rjv->name,
                                rjv->j1, rjv->j2, rjv->j3, rjv->j4, rjv->j5, 
rjv->j6, rjv->j7);
-               a = dumpwalkvar(mb, rjv->j1, rjv->j5);
+               a = dumpwalkvar(mb, rjv->j1, rjv->j5, 0);
                tj.j1 = rjv->j1;
                tj.j5 = rjv->j5;
                tj.j6 = rjv->j6;
@@ -4325,7 +4323,7 @@ dumpvariabletransformation(jc *j, Client
                                a7 = getArg(q, 6);
                                pushInstruction(mb, q);
 
-                               a = dumpwalkvar(mb, a1, a5);
+                               a = dumpwalkvar(mb, a1, a5, 0);
                                b = dumpnextid(mb, j->j1);
                                q = newInstruction(mb, ASSIGNsymbol);
                                setModuleId(q, batRef);
@@ -4787,7 +4785,7 @@ dumpvalsfromarr(MalBlkPtr mb, enum treet
        MALCOMMENT(mb, "dumpvalsfromarr(X_%d,X_%d,X_%d,X_%d,X_%d) {",
                        j1, j2, j3, j4, j5);
 
-       a = dumpwalkvar(mb, j1, j5);
+       a = dumpwalkvar(mb, j1, j5, 0);
 
        q = newInstruction(mb, ASSIGNsymbol);
        setModuleId(q, algebraRef);
@@ -5341,7 +5339,7 @@ dumptree(jc *j, Client cntxt, MalBlkPtr 
                                }
                        } break;
                        case j_filter:
-                               a = dumpwalkvar(mb, j->j1, j->j5);
+                               a = dumpwalkvar(mb, j->j1, j->j5, 0);
                                b = dumppred(j, cntxt, mb, t->tval2, a);
                                /* b = matching ids from dumpwalkvar (first 
array) */
                                q = newInstruction(mb, ASSIGNsymbol);
@@ -5377,7 +5375,7 @@ dumptree(jc *j, Client cntxt, MalBlkPtr 
                                pushInstruction(mb, q);
                                break;
                        case j_transform:
-                               a = dumpwalkvar(mb, j->j1, j->j5);
+                               a = dumpwalkvar(mb, j->j1, j->j5, 0);
                                b = dumpvariabletransformation(j, cntxt, mb, 
t->tval2, a);
 
                                /* remove old array entries */
@@ -5434,7 +5432,7 @@ dumptree(jc *j, Client cntxt, MalBlkPtr 
                                pushInstruction(mb, q);
                                break;
                        case j_expand:
-                               a = dumpwalkvar(mb, j->j1, j->j5);
+                               a = dumpwalkvar(mb, j->j1, j->j5, 0);
                                c = dumprefvar(j, mb, t->tval2, a);
 
                                q = newInstruction(mb, ASSIGNsymbol);
@@ -5548,7 +5546,7 @@ dumptree(jc *j, Client cntxt, MalBlkPtr 
                                pushInstruction(mb, q);
                                break;
                        case j_unroll:
-                               a = dumpwalkvar(mb, j->j1, j->j5);
+                               a = dumpwalkvar(mb, j->j1, j->j5, 0);
                                b = dumprefvar(j, mb, t->tval2, a);
                                e = dumpnextid(mb, j->j1);
 
@@ -5980,7 +5978,7 @@ dumptree(jc *j, Client cntxt, MalBlkPtr 
                                         *   tval2 = var from source to group on
                                         *   tval3 = name of result (default $) 
(only into)
                                         */
-                                       a = dumpwalkvar(mb, j->j1, j->j5);
+                                       a = dumpwalkvar(mb, j->j1, j->j5, 0);
                                        b = dumprefvar(j, mb, w->tval2, a);
                                        /* b should point to all "groups" now */
 
@@ -6210,7 +6208,7 @@ dumptree(jc *j, Client cntxt, MalBlkPtr 
                                }
                                t->tval2 = rpreds;
 
-                               a = dumpwalkvar(mb, j->j1, j->j5);
+                               a = dumpwalkvar(mb, j->j1, j->j5, 0);
                                
                                for (w = rpreds; w != NULL; w = w->tval3) {
                                        /* avoid double free upon cleanup */
@@ -6716,7 +6714,7 @@ dumptree(jc *j, Client cntxt, MalBlkPtr 
 
                                                        break;
                                                case j_func_arg:
-                                                       a = dumpwalkvar(mb, 
j->j1, j->j5);
+                                                       a = dumpwalkvar(mb, 
j->j1, j->j5, 0);
                                                        q = newInstruction(mb, 
ASSIGNsymbol);
                                                        setModuleId(q, 
algebraRef);
                                                        setFunctionId(q, 
projectRef);
@@ -6898,7 +6896,7 @@ dumptree(jc *j, Client cntxt, MalBlkPtr 
                                                                        }
                                                                        break;
                                                                case j_func_arg:
-                                                                       a = 
dumpwalkvar(mb, a1, a5);
+                                                                       a = 
dumpwalkvar(mb, a1, a5, 0);
                                                                        q = 
newInstruction(mb, ASSIGNsymbol);
                                                                        
setModuleId(q, algebraRef);
                                                                        
setFunctionId(q, projectRef);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to