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

transform: optimise away "transform $"

It is easy to detect this useless transformation, and saves a lot of
work, so transform this statement into a noop.


diffs (49 lines):

diff --git a/monetdb5/extras/jaql/Tests/plan00.mal 
b/monetdb5/extras/jaql/Tests/plan00.mal
--- a/monetdb5/extras/jaql/Tests/plan00.mal
+++ b/monetdb5/extras/jaql/Tests/plan00.mal
@@ -11,6 +11,7 @@ jaql.x("plan A -> expand -> transform $ 
 jaql.x("plan A -> expand $.ids;");
 
 jaql.x("plan [1,2,3] -> transform {\"value\":$};");
+jaql.x("plan [1,2,3] -> transform $;");
 jaql.x("plan [1,2,3] -> transform $ * 2;");
 jaql.x("plan [1,2,3] -> transform 2 * $;");
 jaql.x("plan [1,2,3] -> transform 2 * 2;");
diff --git a/monetdb5/extras/jaql/Tests/plan00.stable.out 
b/monetdb5/extras/jaql/Tests/plan00.stable.out
--- a/monetdb5/extras/jaql/Tests/plan00.stable.out
+++ b/monetdb5/extras/jaql/Tests/plan00.stable.out
@@ -28,6 +28,7 @@ function user.main():void;
     jaql.x("plan A -> expand -> transform $ * 2;");
     jaql.x("plan A -> expand $.ids;");
     jaql.x("plan [1,2,3] -> transform {\"value\":$};");
+    jaql.x("plan [1,2,3] -> transform $;");
     jaql.x("plan [1,2,3] -> transform $ * 2;");
     jaql.x("plan [1,2,3] -> transform 2 * $;");
     jaql.x("plan [1,2,3] -> transform 2 * 2;");
@@ -46,6 +47,7 @@ e as $ -> filter: ( $.mgr == true || $.i
 A as $ -> expand: $ as $ -> transform: ( $ * 2 ) 
 A as $ -> expand: $.ids => <result> 
 [1,2,3] as $ -> transform: { "value": $ } 
+[1,2,3] => <result> 
 [1,2,3] as $ -> transform: ( $ * 2 ) 
 [1,2,3] as $ -> transform: ( $ * 2 ) 
 [1,2,3] as $ -> transform: 4 
diff --git a/monetdb5/extras/jaql/jaql.c b/monetdb5/extras/jaql/jaql.c
--- a/monetdb5/extras/jaql/jaql.c
+++ b/monetdb5/extras/jaql/jaql.c
@@ -177,7 +177,14 @@ make_jaql_transform(tree *var, tree *tmp
        if ((res = _check_exp_var(var->sval, tmpl)) != NULL) {
                freetree(var);
                freetree(tmpl);
-               return(res);
+               return res;
+       }
+
+       if (tmpl->type == j_var && tmpl->tval1 == NULL) {
+               /* simple variable, hence not performing any change, so null-op 
*/
+               freetree(var);
+               freetree(tmpl);
+               return NULL;
        }
 
        res = GDKzalloc(sizeof(tree));
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to