Fixed issue 186. Problem was that a homogeneous list of a nullable type was not converted to an list of type any.
git-svn-id: https://asterixdb.googlecode.com/svn/branches/asterix_stabilization@759 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-app/src/test/resources/runtimets/queries/list/listify_01.aql b/asterix-app/src/test/resources/runtimets/queries/list/listify_01.aql
index fe89111..3f08bcb 100644
--- a/asterix-app/src/test/resources/runtimets/queries/list/listify_01.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/list/listify_01.aql
@@ -7,8 +7,3 @@
let $token_list :=
for $token in [1, 2, 3] return $token
return $token_list
-
-
-
-
-
diff --git a/asterix-app/src/test/resources/runtimets/queries/list/listify_02.aql b/asterix-app/src/test/resources/runtimets/queries/list/listify_02.aql
index 4fe1e0d..1dae103 100644
--- a/asterix-app/src/test/resources/runtimets/queries/list/listify_02.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/list/listify_02.aql
@@ -7,8 +7,3 @@
let $token_list :=
for $token in ["foo", "bar"] return $token
return $token_list
-
-
-
-
-
diff --git a/asterix-app/src/test/resources/runtimets/queries/list/listify_03.aql b/asterix-app/src/test/resources/runtimets/queries/list/listify_03.aql
new file mode 100644
index 0000000..e034069
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/list/listify_03.aql
@@ -0,0 +1,16 @@
+/*
+ * Description : Test that a listify on a nullable type creates a homogeneous list of type ANY.
+ * Guards against regression to issue 186.
+ * Expected Result : Success
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+write output to nc1:"rttest/list_listify_03.adm";
+
+// The for prohibits the subplan from being eliminated.
+for $x in [1, 2]
+let $y := (for $i in [[1,2,3],[10,20,30],[-2,-5,0]] return min($i))
+return min($y)
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/list/listify_03.adm b/asterix-app/src/test/resources/runtimets/results/list/listify_03.adm
new file mode 100644
index 0000000..978069e
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/list/listify_03.adm
@@ -0,0 +1,2 @@
+-5
+-5
\ No newline at end of file
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/formats/NonTaggedDataFormat.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/formats/NonTaggedDataFormat.java
index 268d563..c2d6c50 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/formats/NonTaggedDataFormat.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/formats/NonTaggedDataFormat.java
@@ -39,6 +39,7 @@
import edu.uci.ics.asterix.om.types.ATypeTag;
import edu.uci.ics.asterix.om.types.AUnionType;
import edu.uci.ics.asterix.om.types.AUnorderedListType;
+import edu.uci.ics.asterix.om.types.BuiltinType;
import edu.uci.ics.asterix.om.types.IAType;
import edu.uci.ics.asterix.runtime.aggregates.collections.ListifyAggregateDescriptor;
import edu.uci.ics.asterix.runtime.aggregates.scalar.ScalarAvgAggregateDescriptor;
@@ -549,6 +550,10 @@
((ListifyAggregateDescriptor) fd).reset(new AOrderedListType(null, null));
} else {
IAType itemType = (IAType) context.getType(f.getArguments().get(0).getValue());
+ // Convert UNION types into ANY.
+ if (itemType instanceof AUnionType) {
+ itemType = BuiltinType.ANY;
+ }
((ListifyAggregateDescriptor) fd).reset(new AOrderedListType(itemType, null));
}
}