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