MRQL-61: Fix bug on select over union queries
diff --git a/core/src/main/java/org/apache/mrql/Interpreter.gen b/core/src/main/java/org/apache/mrql/Interpreter.gen
index a3237d5..e22afbe 100644
--- a/core/src/main/java/org/apache/mrql/Interpreter.gen
+++ b/core/src/main/java/org/apache/mrql/Interpreter.gen
@@ -132,6 +132,12 @@
return #<callM(coerce,`coerce_method,`((float)(((MR_double)x).get())),`(MRContainer.DOUBLE))>;
else if (x instanceof MR_bool)
return (((MR_bool)x).get()) ? #<true> : #<false>;
+ else if (x instanceof MR_dataset) {
+ Trees vs = #[ ];
+ for ( MRData v: ((MR_dataset)x).dataset().take(Integer.MAX_VALUE))
+ vs = vs.append(reify(v));
+ return #<list(...vs)>;
+ };
throw new Error("wrong MRData: "+x);
}
diff --git a/core/src/main/java/org/apache/mrql/Normalization.gen b/core/src/main/java/org/apache/mrql/Normalization.gen
index 37d628e..8d89cb6 100644
--- a/core/src/main/java/org/apache/mrql/Normalization.gen
+++ b/core/src/main/java/org/apache/mrql/Normalization.gen
@@ -332,6 +332,9 @@
return normalize(#<select(`(subst(v,d,u)),
from(...bl,...(subst_list(v,d,al))),
`(subst(v,d,c)))>);
+ case select(`u,from(...bl,bind(`v,call(plus,`X,`Y)),...al),where(`c)):
+ return normalize(#<call(plus,select(`u,from(...bl,bind(`v,`X),...al),where(`c)),
+ select(`u,from(...bl,bind(`v,`Y),...al),where(`c)))>);
case select(`u,from(...bl),where(`c)):
Trees es = has_existential(c);
if (es.length() <= 1)