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)