Changeset: ef0607200387 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ef0607200387
Modified Files:
        monetdb5/extras/jaql/Tests/variable00.mal
        monetdb5/extras/jaql/Tests/variable00.stable.out
        monetdb5/extras/jaql/jaqlgencode.c
Branch: jacqueline
Log Message:

variables: cater for $[*].x constructs

The case for array indirection on the base variable was forgotten.


diffs (70 lines):

diff --git a/monetdb5/extras/jaql/Tests/variable00.mal 
b/monetdb5/extras/jaql/Tests/variable00.mal
--- a/monetdb5/extras/jaql/Tests/variable00.mal
+++ b/monetdb5/extras/jaql/Tests/variable00.mal
@@ -13,3 +13,8 @@ jaql.x("m -> transform each n (n.a[1]);"
 jaql.x("m -> transform each n (n.a[*]);");
 jaql.x("m -> transform each n (n.a[*].b);");
 jaql.x("m -> transform each n (n.a[2].b);");
+jaql.x("o = [ [{\"a\":3},{\"a\":65}], [{\"a\":5},{\"a\":98}] ];");
+jaql.x("o -> transform each o (o);");
+jaql.x("o -> transform each o (o[1].a);");
+jaql.x("o -> transform each o (o[2].a);");
+jaql.x("o -> transform each o (o[*].a);");
diff --git a/monetdb5/extras/jaql/Tests/variable00.stable.out 
b/monetdb5/extras/jaql/Tests/variable00.stable.out
--- a/monetdb5/extras/jaql/Tests/variable00.stable.out
+++ b/monetdb5/extras/jaql/Tests/variable00.stable.out
@@ -32,6 +32,11 @@ function user.main():void;
     jaql.x("m -> transform each n (n.a[*]);");
     jaql.x("m -> transform each n (n.a[*].b);");
     jaql.x("m -> transform each n (n.a[2].b);");
+    jaql.x("o = [ [{\"a\":3},{\"a\":65}], [{\"a\":5},{\"a\":98}] ];");
+    jaql.x("o -> transform each o (o);");
+    jaql.x("o -> transform each o (o[1].a);");
+    jaql.x("o -> transform each o (o[2].a);");
+    jaql.x("o -> transform each o (o[*].a);");
 end main;
 [ 1, 2, 4, { "a": 5 } ]
 [ 1, 2 ]
@@ -45,6 +50,10 @@ end main;
 [ [ 3, 65, { "b": 8 }, 72 ], [ 5, { "b": 98 }, 2, 65 ] ]
 [ [ 8 ], [ 98 ] ]
 [ 8, null ]
+[ [ { "a": 3 }, { "a": 65 } ], [ { "a": 5 }, { "a": 98 } ] ]
+[ 65, 98 ]
+[ null, null ]
+[ [ 3, 65 ], [ 5, 98 ] ]
 
 # 21:12:04 >  
 # 21:12:04 >  "Done."
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
@@ -277,6 +277,28 @@ dumprefvar(MalBlkPtr mb, tree *t, int el
        pushInstruction(mb, q);
 
        a = elems;
+       if (t->tval2 != 0) {
+               c = dumparrrefvar(mb, t, a, *j5);
+               q = newInstruction(mb, ASSIGNsymbol);
+               setModuleId(q, algebraRef);
+               setFunctionId(q, joinRef);
+               q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
+               q = pushArgument(mb, q, c);
+               q = pushArgument(mb, q, b);
+               b = getArg(q, 0);
+               pushInstruction(mb, q);
+               /* re-retrieve kinds now we've updated again */
+               q = newInstruction(mb, ASSIGNsymbol);
+               setModuleId(q, algebraRef);
+               setFunctionId(q, semijoinRef);
+               q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
+               q = pushArgument(mb, q, *j1);
+               q = pushArgument(mb, q, b);
+               a = getArg(q, 0);
+               pushInstruction(mb, q);
+               if (t->tval2->nval == -1)
+                       encapsulate = 1;
+       }
        for (t = t->tval1; t != NULL; t = t->tval1) {
                q = newInstruction(mb, ASSIGNsymbol);
                setModuleId(q, algebraRef);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to