Add the Binary data type and corresponding helper functions to Asterix.

The binary data type is implemented as a bytearray. Its storage format
follows the String type which has 2 bytes for length and then store the
bytes contents.

Binary data will take hex("") or base64("") as the constructor method to
passing a hex string or base64 string into Asterix. For output we use
hex("") format.

The parse-[hex|base64](string) function will parse the corresponding hex
or base64 string to binary type. The print-[hex|base64](binary)
functions will print the binary to hex or base64 STRING format.

The sub-binary(binary, offset, [length]) function works the same as
substring(string, offset, [length])
The find-binary(srcbinary, targetbinary, [start-offset]) will find the
position of the targetbinary in the srcbinary.

Change-Id: I5ecf0cc115c44070fb5c1fc5b0ec12a95d4243a4
Reviewed-on: http://fulliautomatix.ics.uci.edu:8443/175
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Yingyi Bu <buyingyi@gmail.com>
diff --git a/.gitignore b/.gitignore
index 39d2528..189af35 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,5 +19,6 @@
 *-coredump
 *.pyc
 *.iml
+.idea/
 asterix.ipr
 asterix.iws
diff --git a/asterix-app/data/adm-load/binary_type.adm b/asterix-app/data/adm-load/binary_type.adm
new file mode 100644
index 0000000..2f79dff
--- /dev/null
+++ b/asterix-app/data/adm-load/binary_type.adm
@@ -0,0 +1 @@
+{ "ba": hex("ABCDEF0123456789"), "bb": hex("ABCDEF0123456789"), "bc": hex("0A0B0C0D0E0F"), "bd": hex("01020304050607080900"), "bx": base64("q83vASNFZ4k="), "by": hex("ABCDEF0123456789"), "bz": base64("CgsMDQ4P"), "bw": base64("AQIDBAUGBwgJAA==") }
diff --git a/asterix-app/data/adm-load/usermd5.adm b/asterix-app/data/adm-load/usermd5.adm
new file mode 100644
index 0000000..09b6a69
--- /dev/null
+++ b/asterix-app/data/adm-load/usermd5.adm
@@ -0,0 +1,25 @@
+{ "id":1, "name":"Ronny   Feeney", "md5": hex("34126a9a8c6e8ea118216c7b1048dda0") }
+{ "id":2, "name":"Adolph  Abraham", "md5": hex("46b199c4c7fa55085eea0facd6a3c3b8") }
+{ "id":3, "name":"Odelia  Orosco", "md5": hex("4a0450fe08c5421bb342f36e26c67a61") }
+{ "id":4, "name":"Jasper  Villarreal", "md5": hex("173d7751e6fa210b9494503247045c9e") }
+{ "id":5, "name":"Florencio   Forbes", "md5": hex("96892c30078964b56082fd00573673e4") }
+{ "id":6, "name":"Violette    Maes", "md5": hex("f998bd34cfbe9b742c62e0aa9d06c977") }
+{ "id":7, "name":"Jenae   Marble", "md5": hex("204d482bc66e368b72a85e0691804626") }
+{ "id":8, "name":"Chase   Harness", "md5": hex("3bde012cc94ce1bdb44ade4e38902072") }
+{ "id":9, "name":"Nia Luster", "md5": hex("bb6842ce561ac90e75b033821b34f2bd") }
+{ "id":10, "name":"Joye    Langdon", "md5": hex("881b39c29a960774f53d31762684abcc") }
+{ "id":11, "name":"Tennie  Mcfall", "md5": hex("68f4f0355cde1b6c1746755be9559030") }
+{ "id":12, "name":"Tennie  Margarete   Hutcherson", "md5": hex("885f2930e80ae8e985beb9d2afc60e66") }
+{ "id":13, "name":"Alexa   Hess", "md5": hex("da3a3aa357f469c2eef30e636a67366a") }
+{ "id":14, "name":"Afton   Smiley", "md5": hex("aa24b12619d1723817e0aae507dc5d16") }
+{ "id":15, "name":"Tamela  Wilkes", "md5": hex("0bdfecee101f739d708169a3d7bf692d") }
+{ "id":16, "name":"Thaddeus    Hightower", "md5": hex("1c5631b1e0023366dbaac5cab125a507") }
+{ "id":17, "name":"Carmelita   Jarvis", "md5": hex("b8862e8f77173a39b55a36ba0f0d44c6") }
+{ "id":18, "name":"Vanetta Chacon", "md5": hex("b0d3e7d02ef3bee600fdbd2b688f9cf5") }
+{ "id":19, "name":"Alline  Giron", "md5": hex("6c718cb3708992f7a482619348011abf") }
+{ "id":20, "name":"Louis   Roche", "md5": hex("d64f30701a822ebe9f8a25b66c264e88") }
+{ "id":21, "name":"Rachal  Chavis", "md5": hex("b412f8294bddaf083d86d2b650bcc75f") }
+{ "id":22, "name":"Cedrick Herman", "md5": hex("23c34ac38626e0b0f3717c7347dd2ec5") }
+{ "id":23, "name":"Latrisha    Walling", "md5": hex("57af6780c9b51bd783412ea4520dac2a") }
+{ "id":24, "name":"Neda    Earle", "md5": hex("ca312d57fd3365b10448f5008ae2f555") }
+{ "id":25, "name":"Tamekia Connelly", "md5": hex("6b5fd221ef1fb9d41d105f7b6206494b") }
diff --git a/asterix-app/data/adm-load/usermd5copy.adm b/asterix-app/data/adm-load/usermd5copy.adm
new file mode 100644
index 0000000..c981fed
--- /dev/null
+++ b/asterix-app/data/adm-load/usermd5copy.adm
@@ -0,0 +1,20 @@
+{ "id":1, "name": "Ronny   Feeney", "md5": base64("NBJqmoxujqEYIWx7EEjdoA==") }
+{ "id":2, "name": "Adolph  Abraham", "md5": base64("RrGZxMf6VQhe6g+s1qPDuA==") }
+{ "id":3, "name": "Odelia  Orosco", "md5": base64("SgRQ/gjFQhuzQvNuJsZ6YQ==") }
+{ "id":4, "name": "Jasper  Villarreal", "md5": base64("Fz13Ueb6IQuUlFAyRwRcng==") }
+{ "id":5, "name": "Florencio   Forbes", "md5": base64("loksMAeJZLVggv0AVzZz5A==") }
+{ "id":6, "name": "Violette    Maes", "md5": base64("+Zi9NM++m3QsYuCqnQbJdw==") }
+{ "id":7, "name": "Jenae   Marble", "md5": base64("IE1IK8ZuNotyqF4GkYBGJg==") }
+{ "id":8, "name": "Chase   Harness", "md5": base64("O94BLMlM4b20St5OOJAgcg==") }
+{ "id":9, "name": "Nia Luster", "md5": base64("u2hCzlYayQ51sDOCGzTyvQ==") }
+{ "id":10, "name": "Joye    Langdon", "md5": base64("iBs5wpqWB3T1PTF2JoSrzA==") }
+{ "id":30, "name": "Trang   Fortenberry", "md5": hex("0a6ebf67522bed580f3e4779dc60ef29") }
+{ "id":31, "name": "Ria Ellsworth", "md5": hex("3af7c2ac759fd3f3c89dcccdc5f4b5df") }
+{ "id":32, "name": "Virgina Baine", "md5": hex("c63c87c07ce7ccf9aa1d6714be537c64") }
+{ "id":33, "name": "Maryam  Runyan", "md5": hex("fde31a65de79ac40d986e4decd4de52d") }
+{ "id":34, "name": "Harland Slone", "md5": hex("9c779a36c8a0dd83d1cbd6811a36e837") }
+{ "id":35, "name": "Pearle  Whitley", "md5": hex("d5f7b64f8e1ea21f888a7213273f437c") }
+{ "id":36, "name": "Sulema  Gillis", "md5": hex("5c666e65939e007777dd373d5f54ae1f") }
+{ "id":37, "name": "Graig   Brubaker", "md5": hex("e405cb11cca4371f543ac3d0fbbe6d7b") }
+{ "id":38, "name": "Damaris Durden", "md5": hex("3fb470ec2894a7205c5446978927459a") }
+{ "id":39, "name": "Eldora  Leighton", "md5": hex("911cdf4749f6bb6057c096ce12e308c3") }
diff --git a/asterix-app/data/nontagged/allData.json b/asterix-app/data/nontagged/allData.json
index 5f7bf3b..06c786f 100644
--- a/asterix-app/data/nontagged/allData.json
+++ b/asterix-app/data/nontagged/allData.json
@@ -1,2 +1,17 @@
-{ "id": 10, "name": string("Nancy"), "age": 32.5f, "salary": 12.000 ,"married": boolean("true"), "interests": {{"reading", "writing"}}, "children": ["Brad", "Scott"],  "address": {  "number": 8389,  "street": "Hill St.",  "city": "Mountain View" }, "dob": date("-2011-01-27"), "time": time("12:20:30Z"), "datetime": datetime("-1951-12-27T12:20:30"),  "duration": duration("P10Y11M12DT10H50M30S"),  "location2d": point("41.00,44.00"),  "location3d": point3d("44.00,13.00,41.00"), "line" : line("10.1,11.1 10.2,11.2"), "polygon" : polygon("1.2,1.3 2.1,2.5 3.5,3.6 4.6,4.8"), "circle" : circle("10.1,11.1 10.2") }
-
+{ "id": 10,
+"name": string("Nancy"),
+"age": 32.5f,
+"salary": 12.000 ,"married": boolean("true"),
+"interests": {{"reading","writing"}},
+"children": ["Brad","Scott"],
+ "address": {  "number": 8389, "street": "Hill St.", "city": "Mountain View" },
+"dob": date("-2011-01-27"),
+"time": time("12:20:30Z"),
+"datetime": datetime("-1951-12-27T12:20:30"),
+ "duration": duration("P10Y11M12DT10H50M30S"),
+ "location2d": point("41.00,44.00"),
+ "location3d": point3d("44.00,13.00,41.00"),
+"line" : line("10.1,11.1 10.2,11.2"),
+"polygon" : polygon("1.2,1.3 2.1,2.5 3.5,3.6 4.6,4.8"),
+"circle" : circle("10.1,11.1 10.2"),
+"binary" : hex("ABCDEF0123456789") }
diff --git a/asterix-app/pom.xml b/asterix-app/pom.xml
index 3ea149e..7bfd2d9 100644
--- a/asterix-app/pom.xml
+++ b/asterix-app/pom.xml
@@ -188,7 +188,7 @@
 			<artifactId>xercesImpl</artifactId>
 			<version>2.9.1</version>
 			<type>jar</type>
-			<scope>test</scope>
+			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>xalan</groupId>
diff --git a/asterix-app/src/test/resources/metadata/results/basic/meta17/meta17.1.adm b/asterix-app/src/test/resources/metadata/results/basic/meta17/meta17.1.adm
index ea7c8cb..fd958b0 100644
--- a/asterix-app/src/test/resources/metadata/results/basic/meta17/meta17.1.adm
+++ b/asterix-app/src/test/resources/metadata/results/basic/meta17/meta17.1.adm
@@ -48,6 +48,7 @@
 , { "DataverseName": "Metadata", "DatatypeName": "Type_#1_UnionType_Field_InternalDetails_in_DatasetRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "EnumValues": null, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "FileStructure", "FieldType": "string" }, { "FieldName": "PartitioningStrategy", "FieldType": "string" }, { "FieldName": "PartitioningKey", "FieldType": "Field_PartitioningKey_in_Type_#1_UnionType_Field_InternalDetails_in_DatasetRecordType" }, { "FieldName": "PrimaryKey", "FieldType": "Field_PrimaryKey_in_Type_#1_UnionType_Field_InternalDetails_in_DatasetRecordType" }, { "FieldName": "GroupName", "FieldType": "string" }, { "FieldName": "Autogenerated", "FieldType": "boolean" }, { "FieldName": "CompactionPolicy", "FieldType": "string" }, { "FieldName": "CompactionPolicyProperties", "FieldType": "Field_CompactionPolicyProperties_in_Type_#1_UnionType_Field_InternalDetails_in_DatasetRecordType" } ] }, "Union": null, "UnorderedList": null, "OrderedList": null }, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
 , { "DataverseName": "Metadata", "DatatypeName": "Type_#1_UnionType_Field_Record_in_Type_#1_UnionType_Field_Derived_in_DatatypeRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "EnumValues": null, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "IsOpen", "FieldType": "boolean" }, { "FieldName": "Fields", "FieldType": "Field_Fields_in_Type_#1_UnionType_Field_Record_in_Type_#1_UnionType_Field_Derived_in_DatatypeRecordType" } ] }, "Union": null, "UnorderedList": null, "OrderedList": null }, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
 , { "DataverseName": "Metadata", "DatatypeName": "Type_#1_UnionType_Field_Union_in_Type_#1_UnionType_Field_Derived_in_DatatypeRecordType", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "EnumValues": null, "Record": null, "Union": null, "UnorderedList": null, "OrderedList": "string" }, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
+, { "DataverseName": "Metadata", "DatatypeName": "binary", "Derived": null, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
 , { "DataverseName": "Metadata", "DatatypeName": "boolean", "Derived": null, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
 , { "DataverseName": "Metadata", "DatatypeName": "circle", "Derived": null, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
 , { "DataverseName": "Metadata", "DatatypeName": "date", "Derived": null, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
diff --git a/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm b/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
index ea7c8cb..fd958b0 100644
--- a/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
+++ b/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
@@ -48,6 +48,7 @@
 , { "DataverseName": "Metadata", "DatatypeName": "Type_#1_UnionType_Field_InternalDetails_in_DatasetRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "EnumValues": null, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "FileStructure", "FieldType": "string" }, { "FieldName": "PartitioningStrategy", "FieldType": "string" }, { "FieldName": "PartitioningKey", "FieldType": "Field_PartitioningKey_in_Type_#1_UnionType_Field_InternalDetails_in_DatasetRecordType" }, { "FieldName": "PrimaryKey", "FieldType": "Field_PrimaryKey_in_Type_#1_UnionType_Field_InternalDetails_in_DatasetRecordType" }, { "FieldName": "GroupName", "FieldType": "string" }, { "FieldName": "Autogenerated", "FieldType": "boolean" }, { "FieldName": "CompactionPolicy", "FieldType": "string" }, { "FieldName": "CompactionPolicyProperties", "FieldType": "Field_CompactionPolicyProperties_in_Type_#1_UnionType_Field_InternalDetails_in_DatasetRecordType" } ] }, "Union": null, "UnorderedList": null, "OrderedList": null }, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
 , { "DataverseName": "Metadata", "DatatypeName": "Type_#1_UnionType_Field_Record_in_Type_#1_UnionType_Field_Derived_in_DatatypeRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "EnumValues": null, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "IsOpen", "FieldType": "boolean" }, { "FieldName": "Fields", "FieldType": "Field_Fields_in_Type_#1_UnionType_Field_Record_in_Type_#1_UnionType_Field_Derived_in_DatatypeRecordType" } ] }, "Union": null, "UnorderedList": null, "OrderedList": null }, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
 , { "DataverseName": "Metadata", "DatatypeName": "Type_#1_UnionType_Field_Union_in_Type_#1_UnionType_Field_Derived_in_DatatypeRecordType", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "EnumValues": null, "Record": null, "Union": null, "UnorderedList": null, "OrderedList": "string" }, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
+, { "DataverseName": "Metadata", "DatatypeName": "binary", "Derived": null, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
 , { "DataverseName": "Metadata", "DatatypeName": "boolean", "Derived": null, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
 , { "DataverseName": "Metadata", "DatatypeName": "circle", "Derived": null, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
 , { "DataverseName": "Metadata", "DatatypeName": "date", "Derived": null, "Timestamp": "Wed Aug 20 14:03:26 PDT 2014" }
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/concat/concat_01.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/binary/concat/concat_01.1.ddl.aql
new file mode 100644
index 0000000..754ea81
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/concat/concat_01.1.ddl.aql
@@ -0,0 +1,3 @@
+drop dataverse test if exists;
+create dataverse test;
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/concat/concat_01.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/binary/concat/concat_01.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/concat/concat_01.2.update.aql
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/concat/concat_01.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/binary/concat/concat_01.3.query.aql
new file mode 100644
index 0000000..36ce68d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/concat/concat_01.3.query.aql
@@ -0,0 +1,13 @@
+use dataverse test;
+
+let $x :=  [ hex("aa"), hex("259911"), hex("bb"), hex("31")]
+let $c := binary-concat($x)
+
+let $x1 :=  []
+let $c1 := binary-concat($x1)
+
+let $c2 := binary-concat([null])
+let $c3 := binary-concat([null, hex('55')])
+let $c4 := binary-concat([hex('aa'), null])
+let $c5 := binary-concat([hex('aa'), null, base64('asdf')])
+return [ $c = hex("AA259911bb31"), $c1 = hex(""), $c2 , $c3 , $c4 , $c5 ]
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/equal_join/equal_join.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/binary/equal_join/equal_join.1.ddl.aql
new file mode 100644
index 0000000..a87ad2f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/equal_join/equal_join.1.ddl.aql
@@ -0,0 +1,16 @@
+drop dataverse test if exists;
+create dataverse test;
+
+use dataverse test;
+
+create type UserType as closed {
+  id: int32,
+  name: string,
+  md5: binary
+}
+
+create dataset User(UserType)
+  primary key id;
+
+create dataset UserCopy(UserType)
+  primary key id;
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/equal_join/equal_join.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/binary/equal_join/equal_join.2.update.aql
new file mode 100644
index 0000000..13f757e
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/equal_join/equal_join.2.update.aql
@@ -0,0 +1,9 @@
+use dataverse test;
+
+load dataset User
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/adm-load/usermd5.adm"),("format"="adm")) ;
+
+load dataset UserCopy
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/adm-load/usermd5copy.adm"),("format"="adm")) ;
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/equal_join/equal_join.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/binary/equal_join/equal_join.3.query.aql
new file mode 100644
index 0000000..8c49245
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/equal_join/equal_join.3.query.aql
@@ -0,0 +1,7 @@
+use dataverse test;
+
+for $c in dataset('User')
+for $o in dataset('UserCopy')
+where $c.md5 = $o.md5
+order by $c.id
+return {"cid":$c.id, "oid": $o.id}
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/find/find.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/binary/find/find.1.ddl.aql
new file mode 100644
index 0000000..754ea81
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/find/find.1.ddl.aql
@@ -0,0 +1,3 @@
+drop dataverse test if exists;
+create dataverse test;
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/find/find.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/binary/find/find.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/find/find.2.update.aql
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/find/find.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/binary/find/find.3.query.aql
new file mode 100644
index 0000000..473441e
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/find/find.3.query.aql
@@ -0,0 +1,15 @@
+use dataverse test;
+
+let $x := hex("aabbccddaa")
+let $r1 := find-binary($x, hex('')) = 1
+let $r2 := find-binary($x, hex('aa')) = 1
+let $r3 := find-binary($x, hex('aa'), 1) = 5
+let $r4 := find-binary($x, hex('aabb'), 0) = find-binary($x, hex('aabb'))
+let $r5 := find-binary($x, hex('11')) = 0
+let $r6 := find-binary($x, hex('ccddaa')) = 3
+let $r7 := find-binary($x, hex('ccddaabb')) = 0
+
+let $r8 := find-binary($x, null)
+let $r9 := find-binary(null, null)
+let $r0 := find-binary(null, $x)
+return [ $r1 and $r2 and $r3 and $r4 and $r5 and $r6 and $r7, $r8, $r9 , $r0]
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/index_join/index_join.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/binary/index_join/index_join.1.ddl.aql
new file mode 100644
index 0000000..921f8f5
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/index_join/index_join.1.ddl.aql
@@ -0,0 +1,16 @@
+drop dataverse test if exists;
+create dataverse test;
+
+use dataverse test;
+
+create type UserType as closed {
+  id: int32,
+  name: string,
+  md5: binary
+}
+
+create dataset User(UserType)
+  primary key md5;
+
+create dataset UserCopy(UserType)
+  primary key md5;
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/index_join/index_join.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/binary/index_join/index_join.2.update.aql
new file mode 100644
index 0000000..13f757e
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/index_join/index_join.2.update.aql
@@ -0,0 +1,9 @@
+use dataverse test;
+
+load dataset User
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/adm-load/usermd5.adm"),("format"="adm")) ;
+
+load dataset UserCopy
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/adm-load/usermd5copy.adm"),("format"="adm")) ;
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/index_join/index_join.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/binary/index_join/index_join.3.query.aql
new file mode 100644
index 0000000..8c49245
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/index_join/index_join.3.query.aql
@@ -0,0 +1,7 @@
+use dataverse test;
+
+for $c in dataset('User')
+for $o in dataset('UserCopy')
+where $c.md5 = $o.md5
+order by $c.id
+return {"cid":$c.id, "oid": $o.id}
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/insert/insert.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/binary/insert/insert.1.ddl.aql
new file mode 100644
index 0000000..c92ed7e
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/insert/insert.1.ddl.aql
@@ -0,0 +1,21 @@
+drop dataverse test if exists;
+create dataverse test;
+
+use dataverse test;
+
+create type UserTypeOpen as open{
+  id: int32
+}
+
+
+create type UserTypeClose as closed {
+  id: int32,
+  name: string,
+  md5: binary
+}
+
+create dataset UserOpen(UserTypeOpen)
+  primary key id;
+
+create dataset UserCopyClose(UserTypeClose)
+  primary key md5;
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/insert/insert.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/binary/insert/insert.2.update.aql
new file mode 100644
index 0000000..90364db
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/insert/insert.2.update.aql
@@ -0,0 +1,20 @@
+use dataverse test;
+
+load dataset UserOpen
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/adm-load/usermd5.adm"),("format"="adm")) ;
+
+load dataset UserCopyClose
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/adm-load/usermd5copy.adm"),("format"="adm")) ;
+
+
+insert into dataset UserOpen(
+for $l in dataset('UserCopyClose')
+	where $l.id>10
+	return {
+		"id": $l.id,
+		"name": $l.name,
+		"md5": $l.md5
+	}
+);
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/insert/insert.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/binary/insert/insert.3.query.aql
new file mode 100644
index 0000000..b6ac5da
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/insert/insert.3.query.aql
@@ -0,0 +1,5 @@
+use dataverse test;
+
+for $c in dataset('UserOpen')
+order by $c.id, $c.md5
+return $c
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/length/length.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/binary/length/length.1.ddl.aql
new file mode 100644
index 0000000..754ea81
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/length/length.1.ddl.aql
@@ -0,0 +1,3 @@
+drop dataverse test if exists;
+create dataverse test;
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/length/length.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/binary/length/length.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/length/length.2.update.aql
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/length/length.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/binary/length/length.3.query.aql
new file mode 100644
index 0000000..cf98568
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/length/length.3.query.aql
@@ -0,0 +1,6 @@
+use dataverse test;
+
+let $c1 := binary-length(hex("00AA"))
+let $c2 := binary-length(hex(""))
+let $c3 := binary-length(null)
+return {"result1": $c1, "result2": $c2, "result3": $c3}
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/parse/parse.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/binary/parse/parse.1.ddl.aql
new file mode 100644
index 0000000..16769de
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/parse/parse.1.ddl.aql
@@ -0,0 +1,2 @@
+drop dataverse test if exists;
+create dataverse test;
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/parse/parse.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/binary/parse/parse.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/parse/parse.2.update.aql
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/parse/parse.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/binary/parse/parse.3.query.aql
new file mode 100644
index 0000000..791b7b7
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/parse/parse.3.query.aql
@@ -0,0 +1,15 @@
+use dataverse test;
+
+let $c1 := parse-binary("ABCDEF0123456789","hex")
+let $c2 := parse-binary("abcdef0123456789","HEX")
+let $c3 := parse-binary("0A0B0C0D0E0F","hEx")
+let $c4 := parse-binary('01020304050607080900',"hex")
+let $c5 := parse-binary('',"hex")
+
+let $c6 := parse-binary("0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM+/","base64")
+let $c7 := parse-binary('',"base64")
+let $c8 := parse-binary('QXN0ZXJpeA==',"BASE64")
+let $c9 := parse-binary('QXN0ZXJpeAE=',"baSE64")
+let $c0 := parse-binary('QXN0ZXJpeAE8',"base64")
+
+return [ $c1,$c2,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$c0 ]
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/print/print.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/binary/print/print.1.ddl.aql
new file mode 100644
index 0000000..16769de
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/print/print.1.ddl.aql
@@ -0,0 +1,2 @@
+drop dataverse test if exists;
+create dataverse test;
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/print/print.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/binary/print/print.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/print/print.2.update.aql
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/print/print.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/binary/print/print.3.query.aql
new file mode 100644
index 0000000..a7b23dc
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/print/print.3.query.aql
@@ -0,0 +1,14 @@
+use dataverse test;
+
+let $hex := [ "ABCDEF0123456789", "0A0B0C0D0E0F",'01020304050607080900','']
+let $base64 := [ "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM+/", 'QXN0ZXJpeA==', 'QXN0ZXJpeAE=', 'QXN0ZXJpeAE8']
+
+let $hex_result := 
+    for $i in $hex
+        return print-binary(parse-binary($i, "hex"), "hex") = $i
+
+let $base64_result :=
+    for $j in $base64
+        return print-binary(parse-binary($j, "base64"), "base64") = $j
+
+return { "hex":$hex_result, "base64":$base64_result }
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/subbinary/subbinary_01.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/binary/subbinary/subbinary_01.1.ddl.aql
new file mode 100644
index 0000000..754ea81
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/subbinary/subbinary_01.1.ddl.aql
@@ -0,0 +1,3 @@
+drop dataverse test if exists;
+create dataverse test;
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/subbinary/subbinary_01.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/binary/subbinary/subbinary_01.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/subbinary/subbinary_01.2.update.aql
diff --git a/asterix-app/src/test/resources/runtimets/queries/binary/subbinary/subbinary_01.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/binary/subbinary/subbinary_01.3.query.aql
new file mode 100644
index 0000000..afbcb71
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/binary/subbinary/subbinary_01.3.query.aql
@@ -0,0 +1,23 @@
+use dataverse test;
+
+let $x := hex("aabbccdd")
+
+let $r1 := sub-binary(hex(''),0) = hex('')
+let $r2 := sub-binary(hex(''),1) = hex('')
+let $r3 := sub-binary(hex(''),-1) = hex('')
+
+let $r4 := sub-binary($x, 1, binary-length($x)) = $x
+let $r5 := sub-binary($x, 2, 1) = hex('bb')
+let $r6 := sub-binary($x, 2) = hex('bbccdd')
+let $r7 := sub-binary($x, 5, 0) = hex('')
+let $r8 := sub-binary($x, 4, 1) = hex('dd')
+let $r9 := sub-binary($x, 2, 2) = hex('bbcc') 
+
+let $r10 := sub-binary($x, 0) = $x
+let $r11 := sub-binary($x, -1) = $x
+let $r12 := sub-binary($x, 1, 256) = $x
+let $r13 := sub-binary($x, 2, 256) = hex('bbccdd')
+let $r14 := sub-binary($x, 2, -1) = hex('')
+
+return  $r1 and $r2 and $r3 and $r4 and $r5 and $r6 and $r7 and $r8 and $r9 and $r10 and $r11 and $r12 and $r13 and $r14 
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/binary/binary.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/binary/binary.1.ddl.aql
new file mode 100644
index 0000000..16769de
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/binary/binary.1.ddl.aql
@@ -0,0 +1,2 @@
+drop dataverse test if exists;
+create dataverse test;
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/binary/binary.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/binary/binary.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/binary/binary.2.update.aql
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/binary/binary.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/binary/binary.3.query.aql
new file mode 100644
index 0000000..eb8161c
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/binary/binary.3.query.aql
@@ -0,0 +1,27 @@
+use dataverse test;
+
+let $c1 := hex('0A0A')
+let $c2 := hex("0B")
+let $c11:= base64("Cgo=")
+let $c21:= base64("Cw==")
+
+let $r1 := $c1 > $c2
+let $r2 := $c1 >= $c2
+let $r3 := $c1 < $c2
+let $r4 := $c1 <= $c2
+let $r5 := $c1 = $c2
+let $r6 := $c1 != $c2
+
+let $r11 := $c11 > $c21
+let $r21 := $c11 >= $c21
+let $r31 := $c11 < $c21
+let $r41 := $c11 <= $c21
+let $r51 := $c11 = $c21
+let $r61 := $c11 != $c21
+
+let $req1 := $c1 = $c11
+let $req2 := $c2 = $c21
+let $req3 := $c1 = $c21
+let $req4 := $c2 = $c11
+
+return [ $r1,$r2,$r3,$r4,$r5,$r6,$r11,$r21,$r31,$r41,$r51,$r61,$req1,$req2,$req3,$req4 ]
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/binary_null/binary_null.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/binary_null/binary_null.1.ddl.aql
new file mode 100644
index 0000000..16769de
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/binary_null/binary_null.1.ddl.aql
@@ -0,0 +1,2 @@
+drop dataverse test if exists;
+create dataverse test;
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/binary_null/binary_null.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/binary_null/binary_null.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/binary_null/binary_null.2.update.aql
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/binary_null/binary_null.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/binary_null/binary_null.3.query.aql
new file mode 100644
index 0000000..e19382c
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/binary_null/binary_null.3.query.aql
@@ -0,0 +1,12 @@
+use dataverse test;
+
+let $c1 := hex("AA")
+let $c2 := [1]
+let $c3 := $c2[1]
+let $r1 := $c1 > $c3
+let $r2 := $c3 >= $c1
+let $r3 := $c1 < $c3
+let $r4 := $c3 <= $c1
+let $r5 := $c1 = $c3
+let $r6 := $c3 != $c1
+return {"result1": $r1,"result2": $r2,"result3": $r3,"result4": $r4,"result5": $r5, "result6": $r6}
diff --git a/asterix-app/src/test/resources/runtimets/queries/constructor/binary_01/binary_01.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/constructor/binary_01/binary_01.1.ddl.aql
new file mode 100644
index 0000000..16769de
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/constructor/binary_01/binary_01.1.ddl.aql
@@ -0,0 +1,2 @@
+drop dataverse test if exists;
+create dataverse test;
diff --git a/asterix-app/src/test/resources/runtimets/queries/constructor/binary_01/binary_01.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/constructor/binary_01/binary_01.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/constructor/binary_01/binary_01.2.update.aql
diff --git a/asterix-app/src/test/resources/runtimets/queries/constructor/binary_01/binary_01.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/constructor/binary_01/binary_01.3.query.aql
new file mode 100644
index 0000000..9646bea
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/constructor/binary_01/binary_01.3.query.aql
@@ -0,0 +1,15 @@
+use dataverse test;
+
+let $c1 := hex("ABCDEF0123456789")
+let $c2 := hex("abcdef0123456789")
+let $c3 := hex("0A0B0C0D0E0F")
+let $c4 := hex('01020304050607080900')
+let $c5 := hex('')
+
+let $c6 := base64("0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM+/")
+let $c7 := base64('')
+let $c8 := base64('QXN0ZXJpeA==')
+let $c9 := base64('QXN0ZXJpeAE=')
+let $c0 := base64('QXN0ZXJpeAE8')
+
+return [ $c1,$c2,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$c0 ]
diff --git a/asterix-app/src/test/resources/runtimets/queries/load/adm_binary/adm_bianry.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/load/adm_binary/adm_bianry.1.ddl.aql
new file mode 100644
index 0000000..b076a09
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/load/adm_binary/adm_bianry.1.ddl.aql
@@ -0,0 +1,10 @@
+drop dataverse temp if exists;
+create dataverse temp
+use dataverse temp;
+
+create type test as open {
+  ba: binary
+};
+
+create dataset testds (test)
+primary key ba;
diff --git a/asterix-app/src/test/resources/runtimets/queries/load/adm_binary/adm_binary.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/load/adm_binary/adm_binary.2.update.aql
new file mode 100644
index 0000000..6995d46
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/load/adm_binary/adm_binary.2.update.aql
@@ -0,0 +1,12 @@
+/**
+ *
+ * CSV file loading test
+ * Expected result: success
+ *
+ */
+
+use dataverse temp;
+
+load dataset testds
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/adm-load/binary_type.adm"),("format"="adm"));
diff --git a/asterix-app/src/test/resources/runtimets/queries/load/adm_binary/adm_binary.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/load/adm_binary/adm_binary.3.query.aql
new file mode 100644
index 0000000..da7cf66
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/load/adm_binary/adm_binary.3.query.aql
@@ -0,0 +1,4 @@
+use dataverse temp;
+
+for $i in dataset testds
+return $i
diff --git a/asterix-app/src/test/resources/runtimets/queries/scan/alltypes_01/alltypes_01.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/scan/alltypes_01/alltypes_01.1.ddl.aql
index 67e79fe..7fc3f51 100644
--- a/asterix-app/src/test/resources/runtimets/queries/scan/alltypes_01/alltypes_01.1.ddl.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/scan/alltypes_01/alltypes_01.1.ddl.aql
@@ -4,7 +4,7 @@
 use dataverse test;
 
 create type AddressType as open {
-  number: int32, 
+  number: int32,
   street: string,
   city: string
 }
@@ -26,9 +26,8 @@
   location3d: point3d,
   line: line,
   polygon: polygon,
-  circle: circle
-
-  // binary
+  circle: circle,
+  binary: binary
   // union
 }
 
diff --git a/asterix-app/src/test/resources/runtimets/queries/scan/alltypes_02/alltypes_02.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/scan/alltypes_02/alltypes_02.1.ddl.aql
index 8e27049..984b0d2 100644
--- a/asterix-app/src/test/resources/runtimets/queries/scan/alltypes_02/alltypes_02.1.ddl.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/scan/alltypes_02/alltypes_02.1.ddl.aql
@@ -11,7 +11,7 @@
 use dataverse test;
 
 create type AddressType as open {
-  number: int32, 
+  number: int32,
   street: string,
   city: string
 }
@@ -33,9 +33,8 @@
   location3d: point3d,
   line: line,
   polygon: polygon,
-  circle: circle
-
-  // binary
+  circle: circle,
+  binary: binary
   // union
 }
 
diff --git a/asterix-app/src/test/resources/runtimets/results/binary/concat/concat.1.adm b/asterix-app/src/test/resources/runtimets/results/binary/concat/concat.1.adm
new file mode 100644
index 0000000..ffa48cf
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/binary/concat/concat.1.adm
@@ -0,0 +1,2 @@
+[ [ true, true, null, null, null, null ]
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/binary/equal_join/equal_join.1.adm b/asterix-app/src/test/resources/runtimets/results/binary/equal_join/equal_join.1.adm
new file mode 100644
index 0000000..8b60089
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/binary/equal_join/equal_join.1.adm
@@ -0,0 +1,11 @@
+[ { "cid": 1, "oid": 1 }
+, { "cid": 2, "oid": 2 }
+, { "cid": 3, "oid": 3 }
+, { "cid": 4, "oid": 4 }
+, { "cid": 5, "oid": 5 }
+, { "cid": 6, "oid": 6 }
+, { "cid": 7, "oid": 7 }
+, { "cid": 8, "oid": 8 }
+, { "cid": 9, "oid": 9 }
+, { "cid": 10, "oid": 10 }
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/binary/find/find.1.adm b/asterix-app/src/test/resources/runtimets/results/binary/find/find.1.adm
new file mode 100644
index 0000000..9e639d6
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/binary/find/find.1.adm
@@ -0,0 +1,2 @@
+[ [ true, null, null, null ]
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/binary/index_join/index_join.1.adm b/asterix-app/src/test/resources/runtimets/results/binary/index_join/index_join.1.adm
new file mode 100644
index 0000000..8b60089
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/binary/index_join/index_join.1.adm
@@ -0,0 +1,11 @@
+[ { "cid": 1, "oid": 1 }
+, { "cid": 2, "oid": 2 }
+, { "cid": 3, "oid": 3 }
+, { "cid": 4, "oid": 4 }
+, { "cid": 5, "oid": 5 }
+, { "cid": 6, "oid": 6 }
+, { "cid": 7, "oid": 7 }
+, { "cid": 8, "oid": 8 }
+, { "cid": 9, "oid": 9 }
+, { "cid": 10, "oid": 10 }
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/binary/insert/insert.1.adm b/asterix-app/src/test/resources/runtimets/results/binary/insert/insert.1.adm
new file mode 100644
index 0000000..cbf9654
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/binary/insert/insert.1.adm
@@ -0,0 +1,36 @@
+[ { "id": 1, "name": "Ronny   Feeney", "md5": hex("34126A9A8C6E8EA118216C7B1048DDA0")
+, { "id": 2, "name": "Adolph  Abraham", "md5": hex("46B199C4C7FA55085EEA0FACD6A3C3B8")
+, { "id": 3, "name": "Odelia  Orosco", "md5": hex("4A0450FE08C5421BB342F36E26C67A61")
+, { "id": 4, "name": "Jasper  Villarreal", "md5": hex("173D7751E6FA210B9494503247045C9E")
+, { "id": 5, "name": "Florencio   Forbes", "md5": hex("96892C30078964B56082FD00573673E4")
+, { "id": 6, "name": "Violette    Maes", "md5": hex("F998BD34CFBE9B742C62E0AA9D06C977")
+, { "id": 7, "name": "Jenae   Marble", "md5": hex("204D482BC66E368B72A85E0691804626")
+, { "id": 8, "name": "Chase   Harness", "md5": hex("3BDE012CC94CE1BDB44ADE4E38902072")
+, { "id": 9, "name": "Nia Luster", "md5": hex("BB6842CE561AC90E75B033821B34F2BD")
+, { "id": 10, "name": "Joye    Langdon", "md5": hex("881B39C29A960774F53D31762684ABCC")
+, { "id": 11, "name": "Tennie  Mcfall", "md5": hex("68F4F0355CDE1B6C1746755BE9559030")
+, { "id": 12, "name": "Tennie  Margarete   Hutcherson", "md5": hex("885F2930E80AE8E985BEB9D2AFC60E66")
+, { "id": 13, "name": "Alexa   Hess", "md5": hex("DA3A3AA357F469C2EEF30E636A67366A")
+, { "id": 14, "name": "Afton   Smiley", "md5": hex("AA24B12619D1723817E0AAE507DC5D16")
+, { "id": 15, "name": "Tamela  Wilkes", "md5": hex("0BDFECEE101F739D708169A3D7BF692D")
+, { "id": 16, "name": "Thaddeus    Hightower", "md5": hex("1C5631B1E0023366DBAAC5CAB125A507")
+, { "id": 17, "name": "Carmelita   Jarvis", "md5": hex("B8862E8F77173A39B55A36BA0F0D44C6")
+, { "id": 18, "name": "Vanetta Chacon", "md5": hex("B0D3E7D02EF3BEE600FDBD2B688F9CF5")
+, { "id": 19, "name": "Alline  Giron", "md5": hex("6C718CB3708992F7A482619348011ABF")
+, { "id": 20, "name": "Louis   Roche", "md5": hex("D64F30701A822EBE9F8A25B66C264E88")
+, { "id": 21, "name": "Rachal  Chavis", "md5": hex("B412F8294BDDAF083D86D2B650BCC75F")
+, { "id": 22, "name": "Cedrick Herman", "md5": hex("23C34AC38626E0B0F3717C7347DD2EC5")
+, { "id": 23, "name": "Latrisha    Walling", "md5": hex("57AF6780C9B51BD783412EA4520DAC2A")
+, { "id": 24, "name": "Neda    Earle", "md5": hex("CA312D57FD3365B10448F5008AE2F555")
+, { "id": 25, "name": "Tamekia Connelly", "md5": hex("6B5FD221EF1FB9D41D105F7B6206494B")
+, { "id": 30, "name": "Trang   Fortenberry", "md5": hex("0A6EBF67522BED580F3E4779DC60EF29")
+, { "id": 31, "name": "Ria Ellsworth", "md5": hex("3AF7C2AC759FD3F3C89DCCCDC5F4B5DF")
+, { "id": 32, "name": "Virgina Baine", "md5": hex("C63C87C07CE7CCF9AA1D6714BE537C64")
+, { "id": 33, "name": "Maryam  Runyan", "md5": hex("FDE31A65DE79AC40D986E4DECD4DE52D")
+, { "id": 34, "name": "Harland Slone", "md5": hex("9C779A36C8A0DD83D1CBD6811A36E837")
+, { "id": 35, "name": "Pearle  Whitley", "md5": hex("D5F7B64F8E1EA21F888A7213273F437C")
+, { "id": 36, "name": "Sulema  Gillis", "md5": hex("5C666E65939E007777DD373D5F54AE1F")
+, { "id": 37, "name": "Graig   Brubaker", "md5": hex("E405CB11CCA4371F543AC3D0FBBE6D7B")
+, { "id": 38, "name": "Damaris Durden", "md5": hex("3FB470EC2894A7205C5446978927459A")
+, { "id": 39, "name": "Eldora  Leighton", "md5": hex("911CDF4749F6BB6057C096CE12E308C3")
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/binary/length/length.1.adm b/asterix-app/src/test/resources/runtimets/results/binary/length/length.1.adm
new file mode 100644
index 0000000..b37088f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/binary/length/length.1.adm
@@ -0,0 +1,2 @@
+[ { "result1": 2, "result2": 0, "result3": null }
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/binary/parse/parse.1.adm b/asterix-app/src/test/resources/runtimets/results/binary/parse/parse.1.adm
new file mode 100644
index 0000000..1ffc2a7
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/binary/parse/parse.1.adm
@@ -0,0 +1,2 @@
+[ [ hex("ABCDEF0123456789"), hex("ABCDEF0123456789"), hex("0A0B0C0D0E0F"), hex("01020304050607080900"), hex(""), hex("D35DB7E39EBBF3DAB07ABB72BA2A296AC75F8218E4973C5CBDB9E64161114D850838F2CA2471850D20195C254134CFBF"), hex(""), hex("41737465726978"), hex("4173746572697801"), hex("41737465726978013C") ]
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/binary/print/print.1.adm b/asterix-app/src/test/resources/runtimets/results/binary/print/print.1.adm
new file mode 100644
index 0000000..0b9f378
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/binary/print/print.1.adm
@@ -0,0 +1,2 @@
+[ { "hex": [ true, true, true, true ], "base64": [ true, true, true, true ] }
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/binary/subbinary/subbinary.1.adm b/asterix-app/src/test/resources/runtimets/results/binary/subbinary/subbinary.1.adm
new file mode 100644
index 0000000..975a5f0
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/binary/subbinary/subbinary.1.adm
@@ -0,0 +1,2 @@
+[ true
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/comparison/binary/binary.1.adm b/asterix-app/src/test/resources/runtimets/results/comparison/binary/binary.1.adm
new file mode 100644
index 0000000..3961032
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/comparison/binary/binary.1.adm
@@ -0,0 +1,2 @@
+[ [ false, false, true, true, false, true, false, false, true, true, false, true, true, true, false, false ]
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/comparison/binary_null/binary_null.1.adm b/asterix-app/src/test/resources/runtimets/results/comparison/binary_null/binary_null.1.adm
new file mode 100644
index 0000000..3e9f513
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/comparison/binary_null/binary_null.1.adm
@@ -0,0 +1,2 @@
+[ { "result1": null, "result2": null, "result3": null, "result4": null, "result5": null, "result6": null }
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/constructor/binary_01/binary_01.1.adm b/asterix-app/src/test/resources/runtimets/results/constructor/binary_01/binary_01.1.adm
new file mode 100644
index 0000000..1ffc2a7
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/constructor/binary_01/binary_01.1.adm
@@ -0,0 +1,2 @@
+[ [ hex("ABCDEF0123456789"), hex("ABCDEF0123456789"), hex("0A0B0C0D0E0F"), hex("01020304050607080900"), hex(""), hex("D35DB7E39EBBF3DAB07ABB72BA2A296AC75F8218E4973C5CBDB9E64161114D850838F2CA2471850D20195C254134CFBF"), hex(""), hex("41737465726978"), hex("4173746572697801"), hex("41737465726978013C") ]
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/load/adm_binary/adm_binary.1.adm b/asterix-app/src/test/resources/runtimets/results/load/adm_binary/adm_binary.1.adm
new file mode 100644
index 0000000..d1dc251
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/load/adm_binary/adm_binary.1.adm
@@ -0,0 +1,2 @@
+[ { "ba": hex("ABCDEF0123456789"), "bb": hex("ABCDEF0123456789"), "bc": hex("0A0B0C0D0E0F"), "bd": hex("01020304050607080900"), "bx": hex("ABCDEF0123456789"), "by": hex("ABCDEF0123456789"), "bz": hex("0A0B0C0D0E0F"), "bw": hex("01020304050607080900") }
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01/alltypes_01.1.adm b/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01/alltypes_01.1.adm
index a7e77fc..6d9f6e9 100644
--- a/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01/alltypes_01.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01/alltypes_01.1.adm
@@ -1,2 +1,2 @@
-[ { "id": 10, "name": "Nancy", "age": 32.5f, "salary": 12.0d, "married": true, "interests": {{ "reading", "writing" }}, "children": [ "Brad", "Scott" ], "address": { "number": 8389, "street": "Hill St.", "city": "Mountain View" }, "dob": date("-2011-01-27"), "time": time("12:20:30.000Z"), "datetime": datetime("-1951-12-27T12:20:30.000Z"), "duration": duration("P10Y11M12DT10H50M30S"), "location2d": point("41.0,44.0"), "location3d": point3d("44.0,13.0,41.0"), "line": line("10.1,11.1 10.2,11.2"), "polygon": polygon("1.2,1.3 2.1,2.5 3.5,3.6 4.6,4.8"), "circle": circle("10.1,11.1 10.2") }
+[ { "id": 10, "name": "Nancy", "age": 32.5f, "salary": 12.0d, "married": true, "interests": {{ "reading", "writing" }}, "children": [ "Brad", "Scott" ], "address": { "number": 8389, "street": "Hill St.", "city": "Mountain View" }, "dob": date("-2011-01-27"), "time": time("12:20:30.000Z"), "datetime": datetime("-1951-12-27T12:20:30.000Z"), "duration": duration("P10Y11M12DT10H50M30S"), "location2d": point("41.0,44.0"), "location3d": point3d("44.0,13.0,41.0"), "line": line("10.1,11.1 10.2,11.2"), "polygon": polygon("1.2,1.3 2.1,2.5 3.5,3.6 4.6,4.8"), "circle": circle("10.1,11.1 10.2"), "binary": hex("ABCDEF0123456789") }
  ]
diff --git a/asterix-app/src/test/resources/runtimets/results/scan/alltypes_02/alltypes_02.1.adm b/asterix-app/src/test/resources/runtimets/results/scan/alltypes_02/alltypes_02.1.adm
index a7e77fc..6d9f6e9 100644
--- a/asterix-app/src/test/resources/runtimets/results/scan/alltypes_02/alltypes_02.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/scan/alltypes_02/alltypes_02.1.adm
@@ -1,2 +1,2 @@
-[ { "id": 10, "name": "Nancy", "age": 32.5f, "salary": 12.0d, "married": true, "interests": {{ "reading", "writing" }}, "children": [ "Brad", "Scott" ], "address": { "number": 8389, "street": "Hill St.", "city": "Mountain View" }, "dob": date("-2011-01-27"), "time": time("12:20:30.000Z"), "datetime": datetime("-1951-12-27T12:20:30.000Z"), "duration": duration("P10Y11M12DT10H50M30S"), "location2d": point("41.0,44.0"), "location3d": point3d("44.0,13.0,41.0"), "line": line("10.1,11.1 10.2,11.2"), "polygon": polygon("1.2,1.3 2.1,2.5 3.5,3.6 4.6,4.8"), "circle": circle("10.1,11.1 10.2") }
+[ { "id": 10, "name": "Nancy", "age": 32.5f, "salary": 12.0d, "married": true, "interests": {{ "reading", "writing" }}, "children": [ "Brad", "Scott" ], "address": { "number": 8389, "street": "Hill St.", "city": "Mountain View" }, "dob": date("-2011-01-27"), "time": time("12:20:30.000Z"), "datetime": datetime("-1951-12-27T12:20:30.000Z"), "duration": duration("P10Y11M12DT10H50M30S"), "location2d": point("41.0,44.0"), "location3d": point3d("44.0,13.0,41.0"), "line": line("10.1,11.1 10.2,11.2"), "polygon": polygon("1.2,1.3 2.1,2.5 3.5,3.6 4.6,4.8"), "circle": circle("10.1,11.1 10.2"), "binary": hex("ABCDEF0123456789") }
  ]
diff --git a/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterix-app/src/test/resources/runtimets/testsuite.xml
index 2dfd991..6494ac2 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -12,241 +12,242 @@
  ! See the License for the specific language governing permissions and
  ! limitations under the License.
  !-->
-<test-suite xmlns="urn:xml.testframework.asterix.ics.uci.edu" ResultOffsetPath="results" QueryOffsetPath="queries" QueryFileExtension=".aql">
-  <test-group name="flwor">
+<test-suite xmlns="urn:xml.testframework.asterix.ics.uci.edu" ResultOffsetPath="results" QueryOffsetPath="queries"
+            QueryFileExtension=".aql">
+    <test-group name="flwor">
+        <test-case FilePath="flwor">
+            <compilation-unit name="at00">
+                <output-dir compare="Text">at00</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="flwor">
+            <compilation-unit name="at01">
+                <output-dir compare="Text">at01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="flwor">
+            <compilation-unit name="at02">
+                <output-dir compare="Text">at02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="flwor">
+            <compilation-unit name="at03">
+                <output-dir compare="Text">at03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="flwor">
+            <compilation-unit name="at04">
+                <output-dir compare="Text">at04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="flwor">
+            <compilation-unit name="at05">
+                <output-dir compare="Text">at05</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="flwor">
+            <compilation-unit name="at06">
+                <output-dir compare="Text">at06</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="flwor">
+            <compilation-unit name="query-issue550">
+                <output-dir compare="Text">query-issue550</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
     <test-case FilePath="flwor">
-      <compilation-unit name="at00">
-        <output-dir compare="Text">at00</output-dir>
-      </compilation-unit>
+        <compilation-unit name="let33">
+            <output-dir compare="Text">let33</output-dir>
+        </compilation-unit>
     </test-case>
-    <test-case FilePath="flwor">
-      <compilation-unit name="at01">
-        <output-dir compare="Text">at01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="flwor">
-      <compilation-unit name="at02">
-        <output-dir compare="Text">at02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="flwor">
-      <compilation-unit name="at03">
-        <output-dir compare="Text">at03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="flwor">
-      <compilation-unit name="at04">
-        <output-dir compare="Text">at04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="flwor">
-      <compilation-unit name="at05">
-        <output-dir compare="Text">at05</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="flwor">
-      <compilation-unit name="at06">
-        <output-dir compare="Text">at06</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="flwor">
-      <compilation-unit name="query-issue550">
-        <output-dir compare="Text">query-issue550</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-case FilePath="flwor">
-      <compilation-unit name="let33">
-        <output-dir compare="Text">let33</output-dir>
-      </compilation-unit>
-    </test-case>
-  <test-group name="aggregate">
-    <test-case FilePath="aggregate">
-      <compilation-unit name="issue531_string_min_max">
-        <output-dir compare="Text">issue531_string_min_max</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="agg_null">
-        <output-dir compare="Text">agg_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="agg_null_rec">
-        <output-dir compare="Text">agg_null_rec</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="agg_null_rec_1">
-        <output-dir compare="Text">agg_null_rec_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="agg_number_rec">
-        <output-dir compare="Text">agg_number_rec</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_mixed">
-        <output-dir compare="Text">avg_mixed</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_mixed">
-        <output-dir compare="Text">sum_mixed</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="min_mixed">
-        <output-dir compare="Text">min_mixed</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="agg_number">
-        <output-dir compare="Text">agg_number</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="issue425_min_hetero_list_1">
-        <output-dir compare="Text">issue425_min_hetero_list_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="issue425_min_hetero_list">
-        <output-dir compare="Text">issue425_min_hetero_list</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="issue425_sum_hetero_list_1">
-        <output-dir compare="Text">issue425_sum_hetero_list_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="issue425_sum_hetero_list">
-        <output-dir compare="Text">issue425_sum_hetero_list</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="query-issue400">
-        <output-dir compare="Text">query-issue400</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="issue395">
-        <output-dir compare="Text">issue395</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="issue412_0">
-        <output-dir compare="Text">issue412_0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="issue412_1">
-        <output-dir compare="Text">issue412_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_double">
-        <output-dir compare="Text">avg_double</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_double_null">
-        <output-dir compare="Text">avg_double_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_empty_01">
-        <output-dir compare="Text">avg_empty_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_empty_02">
-        <output-dir compare="Text">avg_empty_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_float">
-        <output-dir compare="Text">avg_float</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_float_null">
-        <output-dir compare="Text">avg_float_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_int16">
-        <output-dir compare="Text">avg_int16</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_int16_null">
-        <output-dir compare="Text">avg_int16_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_int32">
-        <output-dir compare="Text">avg_int32</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_int32_null">
-        <output-dir compare="Text">avg_int32_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_int64">
-        <output-dir compare="Text">avg_int64</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_int64_null">
-        <output-dir compare="Text">avg_int64_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_int8">
-        <output-dir compare="Text">avg_int8</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="avg_int8_null">
-        <output-dir compare="Text">avg_int8_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="count_01">
-        <output-dir compare="Text">count_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="count_empty_01">
-        <output-dir compare="Text">count_empty_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="count_empty_02">
-        <output-dir compare="Text">count_empty_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="count_null">
-        <output-dir compare="Text">count_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+    <test-group name="aggregate">
+        <test-case FilePath="aggregate">
+            <compilation-unit name="issue531_string_min_max">
+                <output-dir compare="Text">issue531_string_min_max</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="agg_null">
+                <output-dir compare="Text">agg_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="agg_null_rec">
+                <output-dir compare="Text">agg_null_rec</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="agg_null_rec_1">
+                <output-dir compare="Text">agg_null_rec_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="agg_number_rec">
+                <output-dir compare="Text">agg_number_rec</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_mixed">
+                <output-dir compare="Text">avg_mixed</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_mixed">
+                <output-dir compare="Text">sum_mixed</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="min_mixed">
+                <output-dir compare="Text">min_mixed</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="agg_number">
+                <output-dir compare="Text">agg_number</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="issue425_min_hetero_list_1">
+                <output-dir compare="Text">issue425_min_hetero_list_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="issue425_min_hetero_list">
+                <output-dir compare="Text">issue425_min_hetero_list</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="issue425_sum_hetero_list_1">
+                <output-dir compare="Text">issue425_sum_hetero_list_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="issue425_sum_hetero_list">
+                <output-dir compare="Text">issue425_sum_hetero_list</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="query-issue400">
+                <output-dir compare="Text">query-issue400</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="issue395">
+                <output-dir compare="Text">issue395</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="issue412_0">
+                <output-dir compare="Text">issue412_0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="issue412_1">
+                <output-dir compare="Text">issue412_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_double">
+                <output-dir compare="Text">avg_double</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_double_null">
+                <output-dir compare="Text">avg_double_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_empty_01">
+                <output-dir compare="Text">avg_empty_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_empty_02">
+                <output-dir compare="Text">avg_empty_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_float">
+                <output-dir compare="Text">avg_float</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_float_null">
+                <output-dir compare="Text">avg_float_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_int16">
+                <output-dir compare="Text">avg_int16</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_int16_null">
+                <output-dir compare="Text">avg_int16_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_int32">
+                <output-dir compare="Text">avg_int32</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_int32_null">
+                <output-dir compare="Text">avg_int32_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_int64">
+                <output-dir compare="Text">avg_int64</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_int64_null">
+                <output-dir compare="Text">avg_int64_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_int8">
+                <output-dir compare="Text">avg_int8</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="avg_int8_null">
+                <output-dir compare="Text">avg_int8_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="count_01">
+                <output-dir compare="Text">count_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="count_empty_01">
+                <output-dir compare="Text">count_empty_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="count_empty_02">
+                <output-dir compare="Text">count_empty_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="count_null">
+                <output-dir compare="Text">count_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="aggregate">
       <compilation-unit name="droptype">
         <output-dir compare="Text">droptype</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!-- TODO(madhusudancs): These tests that test for local_<agg>/global_<agg> functions should be removed, but
+        <!-- TODO(madhusudancs): These tests that test for local_<agg>/global_<agg> functions should be removed, but
     before that we should modify the code to make sure those built-in functions are still defined but not exposed
     by AQL, so leaving these test cases commented.
     <test-case FilePath="aggregate">
@@ -320,1345 +321,1361 @@
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="aggregate">
-      <compilation-unit name="max_empty_01">
-        <output-dir compare="Text">max_empty_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="max_empty_02">
-        <output-dir compare="Text">max_empty_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="min_empty_01">
-        <output-dir compare="Text">min_empty_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="min_empty_02">
-        <output-dir compare="Text">min_empty_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_avg">
-        <output-dir compare="Text">scalar_avg</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_avg_empty">
-        <output-dir compare="Text">scalar_avg_empty</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_avg_null">
-        <output-dir compare="Text">scalar_avg_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_count">
-        <output-dir compare="Text">scalar_count</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_count_empty">
-        <output-dir compare="Text">scalar_count_empty</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_count_null">
-        <output-dir compare="Text">scalar_count_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_max">
-        <output-dir compare="Text">scalar_max</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_max_empty">
-        <output-dir compare="Text">scalar_max_empty</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_max_null">
-        <output-dir compare="Text">scalar_max_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_min">
-        <output-dir compare="Text">scalar_min</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_min_empty">
-        <output-dir compare="Text">scalar_min_empty</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_min_null">
-        <output-dir compare="Text">scalar_min_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_sum">
-        <output-dir compare="Text">scalar_sum</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_sum_empty">
-        <output-dir compare="Text">scalar_sum_empty</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="scalar_sum_null">
-        <output-dir compare="Text">scalar_sum_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_double">
-        <output-dir compare="Text">sum_double</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_double_null">
-        <output-dir compare="Text">sum_double_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_empty_01">
-        <output-dir compare="Text">sum_empty_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_empty_02">
-        <output-dir compare="Text">sum_empty_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_float">
-        <output-dir compare="Text">sum_float</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_float_null">
-        <output-dir compare="Text">sum_float_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_int16">
-        <output-dir compare="Text">sum_int16</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_int16_null">
-        <output-dir compare="Text">sum_int16_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_int32">
-        <output-dir compare="Text">sum_int32</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_int32_null">
-        <output-dir compare="Text">sum_int32_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_int64">
-        <output-dir compare="Text">sum_int64</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_int64_null">
-        <output-dir compare="Text">sum_int64_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_int8">
-        <output-dir compare="Text">sum_int8</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_int8_null">
-        <output-dir compare="Text">sum_int8_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_null-with-pred">
-        <output-dir compare="Text">sum_null-with-pred</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate">
-      <compilation-unit name="sum_numeric_null">
-        <output-dir compare="Text">sum_numeric_null</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="aggregate-sql">
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="issue531_string_min_max">
-        <output-dir compare="Text">issue531_string_min_max</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="agg_null">
-        <output-dir compare="Text">agg_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="agg_null_rec">
-        <output-dir compare="Text">agg_null_rec</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="agg_null_rec_1">
-        <output-dir compare="Text">agg_null_rec_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="agg_number_rec">
-        <output-dir compare="Text">agg_number_rec</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_mixed">
-        <output-dir compare="Text">avg_mixed</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_mixed">
-        <output-dir compare="Text">sum_mixed</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="min_mixed">
-        <output-dir compare="Text">min_mixed</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="agg_number">
-        <output-dir compare="Text">agg_number</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="issue425_min_hetero_list_1">
-        <output-dir compare="Text">issue425_min_hetero_list_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="issue425_min_hetero_list">
-        <output-dir compare="Text">issue425_min_hetero_list</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="issue425_sum_hetero_list_1">
-        <output-dir compare="Text">issue425_sum_hetero_list_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="issue425_sum_hetero_list">
-        <output-dir compare="Text">issue425_sum_hetero_list</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="query-issue400">
-        <output-dir compare="Text">query-issue400</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="issue395">
-        <output-dir compare="Text">issue395</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="issue412_0">
-        <output-dir compare="Text">issue412_0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="issue412_1">
-        <output-dir compare="Text">issue412_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_double">
-        <output-dir compare="Text">avg_double</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_double_null">
-        <output-dir compare="Text">avg_double_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_empty_01">
-        <output-dir compare="Text">avg_empty_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_empty_02">
-        <output-dir compare="Text">avg_empty_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_float">
-        <output-dir compare="Text">avg_float</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_float_null">
-        <output-dir compare="Text">avg_float_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_int16">
-        <output-dir compare="Text">avg_int16</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_int16_null">
-        <output-dir compare="Text">avg_int16_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_int32">
-        <output-dir compare="Text">avg_int32</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_int32_null">
-        <output-dir compare="Text">avg_int32_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_int64">
-        <output-dir compare="Text">avg_int64</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_int64_null">
-        <output-dir compare="Text">avg_int64_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_int8">
-        <output-dir compare="Text">avg_int8</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="avg_int8_null">
-        <output-dir compare="Text">avg_int8_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="count_01">
-        <output-dir compare="Text">count_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="count_empty_01">
-        <output-dir compare="Text">count_empty_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="count_empty_02">
-        <output-dir compare="Text">count_empty_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="count_null">
-        <output-dir compare="Text">count_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="max_empty_01">
-        <output-dir compare="Text">max_empty_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="max_empty_02">
-        <output-dir compare="Text">max_empty_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="min_empty_01">
-        <output-dir compare="Text">min_empty_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="min_empty_02">
-        <output-dir compare="Text">min_empty_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_avg">
-        <output-dir compare="Text">scalar_avg</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_avg_empty">
-        <output-dir compare="Text">scalar_avg_empty</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_avg_null">
-        <output-dir compare="Text">scalar_avg_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_count">
-        <output-dir compare="Text">scalar_count</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_count_empty">
-        <output-dir compare="Text">scalar_count_empty</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_count_null">
-        <output-dir compare="Text">scalar_count_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_max">
-        <output-dir compare="Text">scalar_max</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_max_empty">
-        <output-dir compare="Text">scalar_max_empty</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_max_null">
-        <output-dir compare="Text">scalar_max_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_min">
-        <output-dir compare="Text">scalar_min</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_min_empty">
-        <output-dir compare="Text">scalar_min_empty</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_min_null">
-        <output-dir compare="Text">scalar_min_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_sum">
-        <output-dir compare="Text">scalar_sum</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_sum_empty">
-        <output-dir compare="Text">scalar_sum_empty</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="scalar_sum_null">
-        <output-dir compare="Text">scalar_sum_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_double">
-        <output-dir compare="Text">sum_double</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_double_null">
-        <output-dir compare="Text">sum_double_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_empty_01">
-        <output-dir compare="Text">sum_empty_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_empty_02">
-        <output-dir compare="Text">sum_empty_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_float">
-        <output-dir compare="Text">sum_float</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_float_null">
-        <output-dir compare="Text">sum_float_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_int16">
-        <output-dir compare="Text">sum_int16</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_int16_null">
-        <output-dir compare="Text">sum_int16_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_int32">
-        <output-dir compare="Text">sum_int32</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_int32_null">
-        <output-dir compare="Text">sum_int32_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_int64">
-        <output-dir compare="Text">sum_int64</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_int64_null">
-        <output-dir compare="Text">sum_int64_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_int8">
-        <output-dir compare="Text">sum_int8</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_int8_null">
-        <output-dir compare="Text">sum_int8_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_null-with-pred">
-        <output-dir compare="Text">sum_null-with-pred</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="aggregate-sql">
-      <compilation-unit name="sum_numeric_null">
-        <output-dir compare="Text">sum_numeric_null</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="boolean">
-    <test-case FilePath="boolean">
-      <compilation-unit name="and_01">
-        <output-dir compare="Text">and_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="boolean">
-      <compilation-unit name="and_null">
-        <output-dir compare="Text">and_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="boolean">
-      <compilation-unit name="and_null_false">
-        <output-dir compare="Text">and_null_false</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="boolean">
-      <compilation-unit name="not_01">
-        <output-dir compare="Text">not_01</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="comparison">
-    <test-case FilePath="comparison">
-      <compilation-unit name="year_month_duration_order">
-        <output-dir compare="Text">year_month_duration_order</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="datetime_order">
-        <output-dir compare="Text">datetime_order</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="datetime_range">
-        <output-dir compare="Text">datetime_range</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="datetime_tzeq">
-        <output-dir compare="Text">datetime_tzeq</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="double">
-        <output-dir compare="Text">double</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="double_gte_01">
-        <output-dir compare="Text">double_gte_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="double_null">
-        <output-dir compare="Text">double_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="eq_01">
-        <output-dir compare="Text">eq_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="float">
-        <output-dir compare="Text">float</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="float_null">
-        <output-dir compare="Text">float_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="gt_01">
-        <output-dir compare="Text">gt_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="gte_01">
-        <output-dir compare="Text">gte_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="int16">
-        <output-dir compare="Text">int16</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="int16_null">
-        <output-dir compare="Text">int16_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="int32">
-        <output-dir compare="Text">int32</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="int32_null">
-        <output-dir compare="Text">int32_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="int64">
-        <output-dir compare="Text">int64</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="int64_null">
-        <output-dir compare="Text">int64_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="int8">
-        <output-dir compare="Text">int8</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="int8_null">
-        <output-dir compare="Text">int8_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="lt_01">
-        <output-dir compare="Text">lt_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="lte_01">
-        <output-dir compare="Text">lte_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="neq_01">
-        <output-dir compare="Text">neq_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="aggregate">
+            <compilation-unit name="max_empty_01">
+                <output-dir compare="Text">max_empty_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="max_empty_02">
+                <output-dir compare="Text">max_empty_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="min_empty_01">
+                <output-dir compare="Text">min_empty_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="min_empty_02">
+                <output-dir compare="Text">min_empty_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_avg">
+                <output-dir compare="Text">scalar_avg</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_avg_empty">
+                <output-dir compare="Text">scalar_avg_empty</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_avg_null">
+                <output-dir compare="Text">scalar_avg_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_count">
+                <output-dir compare="Text">scalar_count</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_count_empty">
+                <output-dir compare="Text">scalar_count_empty</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_count_null">
+                <output-dir compare="Text">scalar_count_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_max">
+                <output-dir compare="Text">scalar_max</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_max_empty">
+                <output-dir compare="Text">scalar_max_empty</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_max_null">
+                <output-dir compare="Text">scalar_max_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_min">
+                <output-dir compare="Text">scalar_min</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_min_empty">
+                <output-dir compare="Text">scalar_min_empty</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_min_null">
+                <output-dir compare="Text">scalar_min_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_sum">
+                <output-dir compare="Text">scalar_sum</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_sum_empty">
+                <output-dir compare="Text">scalar_sum_empty</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="scalar_sum_null">
+                <output-dir compare="Text">scalar_sum_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_double">
+                <output-dir compare="Text">sum_double</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_double_null">
+                <output-dir compare="Text">sum_double_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_empty_01">
+                <output-dir compare="Text">sum_empty_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_empty_02">
+                <output-dir compare="Text">sum_empty_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_float">
+                <output-dir compare="Text">sum_float</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_float_null">
+                <output-dir compare="Text">sum_float_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_int16">
+                <output-dir compare="Text">sum_int16</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_int16_null">
+                <output-dir compare="Text">sum_int16_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_int32">
+                <output-dir compare="Text">sum_int32</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_int32_null">
+                <output-dir compare="Text">sum_int32_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_int64">
+                <output-dir compare="Text">sum_int64</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_int64_null">
+                <output-dir compare="Text">sum_int64_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_int8">
+                <output-dir compare="Text">sum_int8</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_int8_null">
+                <output-dir compare="Text">sum_int8_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_null-with-pred">
+                <output-dir compare="Text">sum_null-with-pred</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate">
+            <compilation-unit name="sum_numeric_null">
+                <output-dir compare="Text">sum_numeric_null</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="aggregate-sql">
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="issue531_string_min_max">
+                <output-dir compare="Text">issue531_string_min_max</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="agg_null">
+                <output-dir compare="Text">agg_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="agg_null_rec">
+                <output-dir compare="Text">agg_null_rec</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="agg_null_rec_1">
+                <output-dir compare="Text">agg_null_rec_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="agg_number_rec">
+                <output-dir compare="Text">agg_number_rec</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_mixed">
+                <output-dir compare="Text">avg_mixed</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_mixed">
+                <output-dir compare="Text">sum_mixed</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="min_mixed">
+                <output-dir compare="Text">min_mixed</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="agg_number">
+                <output-dir compare="Text">agg_number</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="issue425_min_hetero_list_1">
+                <output-dir compare="Text">issue425_min_hetero_list_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="issue425_min_hetero_list">
+                <output-dir compare="Text">issue425_min_hetero_list</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="issue425_sum_hetero_list_1">
+                <output-dir compare="Text">issue425_sum_hetero_list_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="issue425_sum_hetero_list">
+                <output-dir compare="Text">issue425_sum_hetero_list</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="query-issue400">
+                <output-dir compare="Text">query-issue400</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="issue395">
+                <output-dir compare="Text">issue395</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="issue412_0">
+                <output-dir compare="Text">issue412_0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="issue412_1">
+                <output-dir compare="Text">issue412_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_double">
+                <output-dir compare="Text">avg_double</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_double_null">
+                <output-dir compare="Text">avg_double_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_empty_01">
+                <output-dir compare="Text">avg_empty_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_empty_02">
+                <output-dir compare="Text">avg_empty_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_float">
+                <output-dir compare="Text">avg_float</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_float_null">
+                <output-dir compare="Text">avg_float_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_int16">
+                <output-dir compare="Text">avg_int16</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_int16_null">
+                <output-dir compare="Text">avg_int16_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_int32">
+                <output-dir compare="Text">avg_int32</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_int32_null">
+                <output-dir compare="Text">avg_int32_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_int64">
+                <output-dir compare="Text">avg_int64</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_int64_null">
+                <output-dir compare="Text">avg_int64_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_int8">
+                <output-dir compare="Text">avg_int8</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="avg_int8_null">
+                <output-dir compare="Text">avg_int8_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="count_01">
+                <output-dir compare="Text">count_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="count_empty_01">
+                <output-dir compare="Text">count_empty_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="count_empty_02">
+                <output-dir compare="Text">count_empty_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="count_null">
+                <output-dir compare="Text">count_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="max_empty_01">
+                <output-dir compare="Text">max_empty_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="max_empty_02">
+                <output-dir compare="Text">max_empty_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="min_empty_01">
+                <output-dir compare="Text">min_empty_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="min_empty_02">
+                <output-dir compare="Text">min_empty_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_avg">
+                <output-dir compare="Text">scalar_avg</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_avg_empty">
+                <output-dir compare="Text">scalar_avg_empty</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_avg_null">
+                <output-dir compare="Text">scalar_avg_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_count">
+                <output-dir compare="Text">scalar_count</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_count_empty">
+                <output-dir compare="Text">scalar_count_empty</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_count_null">
+                <output-dir compare="Text">scalar_count_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_max">
+                <output-dir compare="Text">scalar_max</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_max_empty">
+                <output-dir compare="Text">scalar_max_empty</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_max_null">
+                <output-dir compare="Text">scalar_max_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_min">
+                <output-dir compare="Text">scalar_min</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_min_empty">
+                <output-dir compare="Text">scalar_min_empty</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_min_null">
+                <output-dir compare="Text">scalar_min_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_sum">
+                <output-dir compare="Text">scalar_sum</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_sum_empty">
+                <output-dir compare="Text">scalar_sum_empty</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="scalar_sum_null">
+                <output-dir compare="Text">scalar_sum_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_double">
+                <output-dir compare="Text">sum_double</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_double_null">
+                <output-dir compare="Text">sum_double_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_empty_01">
+                <output-dir compare="Text">sum_empty_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_empty_02">
+                <output-dir compare="Text">sum_empty_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_float">
+                <output-dir compare="Text">sum_float</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_float_null">
+                <output-dir compare="Text">sum_float_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_int16">
+                <output-dir compare="Text">sum_int16</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_int16_null">
+                <output-dir compare="Text">sum_int16_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_int32">
+                <output-dir compare="Text">sum_int32</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_int32_null">
+                <output-dir compare="Text">sum_int32_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_int64">
+                <output-dir compare="Text">sum_int64</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_int64_null">
+                <output-dir compare="Text">sum_int64_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_int8">
+                <output-dir compare="Text">sum_int8</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_int8_null">
+                <output-dir compare="Text">sum_int8_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_null-with-pred">
+                <output-dir compare="Text">sum_null-with-pred</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="aggregate-sql">
+            <compilation-unit name="sum_numeric_null">
+                <output-dir compare="Text">sum_numeric_null</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="boolean">
+        <test-case FilePath="boolean">
+            <compilation-unit name="and_01">
+                <output-dir compare="Text">and_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="boolean">
+            <compilation-unit name="and_null">
+                <output-dir compare="Text">and_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="boolean">
+            <compilation-unit name="and_null_false">
+                <output-dir compare="Text">and_null_false</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="boolean">
+            <compilation-unit name="not_01">
+                <output-dir compare="Text">not_01</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="comparison">
+        <test-case FilePath="comparison">
+            <compilation-unit name="year_month_duration_order">
+                <output-dir compare="Text">year_month_duration_order</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="datetime_order">
+                <output-dir compare="Text">datetime_order</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="datetime_range">
+                <output-dir compare="Text">datetime_range</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="datetime_tzeq">
+                <output-dir compare="Text">datetime_tzeq</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="double">
+                <output-dir compare="Text">double</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="double_gte_01">
+                <output-dir compare="Text">double_gte_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="double_null">
+                <output-dir compare="Text">double_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="eq_01">
+                <output-dir compare="Text">eq_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="float">
+                <output-dir compare="Text">float</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="float_null">
+                <output-dir compare="Text">float_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="gt_01">
+                <output-dir compare="Text">gt_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="gte_01">
+                <output-dir compare="Text">gte_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="int16">
+                <output-dir compare="Text">int16</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="int16_null">
+                <output-dir compare="Text">int16_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="int32">
+                <output-dir compare="Text">int32</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="int32_null">
+                <output-dir compare="Text">int32_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="int64">
+                <output-dir compare="Text">int64</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="int64_null">
+                <output-dir compare="Text">int64_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="int8">
+                <output-dir compare="Text">int8</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="int8_null">
+                <output-dir compare="Text">int8_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="lt_01">
+                <output-dir compare="Text">lt_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="lte_01">
+                <output-dir compare="Text">lte_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="neq_01">
+                <output-dir compare="Text">neq_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="comparison">
       <compilation-unit name="numeric-comparison_01">
         <output-dir compare="Text">numeric-comparison_01</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="comparison">
-      <compilation-unit name="string">
-        <output-dir compare="Text">string</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="string_null">
-        <output-dir compare="Text">string_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="issue363_equality">
-        <output-dir compare="Text">issue363_equality</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="issue363_inequality_duration">
-        <output-dir compare="Text">issue363_inequality_duration</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="issue363_inequality_interval">
-        <output-dir compare="Text">issue363_inequality_interval</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="issue363_inequality_point">
-        <output-dir compare="Text">issue363_inequality_point</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="issue363_inequality_line">
-        <output-dir compare="Text">issue363_inequality_line</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="issue363_inequality_polygon">
-        <output-dir compare="Text">issue363_inequality_polygon</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="issue363_inequality_rectangle">
-        <output-dir compare="Text">issue363_inequality_rectangle</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="comparison">
-      <compilation-unit name="issue363_inequality_circle">
-        <output-dir compare="Text">issue363_inequality_circle</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="constructor">
-    <test-case FilePath="constructor">
-      <compilation-unit name="add-null">
-        <output-dir compare="Text">add-null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="boolean_01">
-        <output-dir compare="Text">boolean_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="circle_01">
-        <output-dir compare="Text">circle_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="date_01">
-        <output-dir compare="Text">date_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="datetime_01">
-        <output-dir compare="Text">datetime_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="double_01">
-        <output-dir compare="Text">double_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="duration_01">
-        <output-dir compare="Text">duration_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="duration_02">
-        <output-dir compare="Text">duration_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="float_01">
-        <output-dir compare="Text">float_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="int_01">
-        <output-dir compare="Text">int_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="interval">
-        <output-dir compare="Text">interval</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="line_01">
-        <output-dir compare="Text">line_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="rectangle_01">
-        <output-dir compare="Text">rectangle_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="point_01">
-        <output-dir compare="Text">point_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="polygon_01">
-        <output-dir compare="Text">polygon_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="primitive-01">
-        <output-dir compare="Text">primitive-01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="primitive-02">
-        <output-dir compare="Text">primitive-02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="primitive-03">
-        <output-dir compare="Text">primitive-03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="primitive-04">
-        <output-dir compare="Text">primitive-04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="string_01">
-        <output-dir compare="Text">string_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="constructor">
-      <compilation-unit name="time_01">
-        <output-dir compare="Text">time_01</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="custord">
-    <!--
+        <test-case FilePath="comparison">
+            <compilation-unit name="string">
+                <output-dir compare="Text">string</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="string_null">
+                <output-dir compare="Text">string_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="issue363_equality">
+                <output-dir compare="Text">issue363_equality</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="issue363_inequality_duration">
+                <output-dir compare="Text">issue363_inequality_duration</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="issue363_inequality_interval">
+                <output-dir compare="Text">issue363_inequality_interval</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="issue363_inequality_point">
+                <output-dir compare="Text">issue363_inequality_point</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="issue363_inequality_line">
+                <output-dir compare="Text">issue363_inequality_line</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="issue363_inequality_polygon">
+                <output-dir compare="Text">issue363_inequality_polygon</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="issue363_inequality_rectangle">
+                <output-dir compare="Text">issue363_inequality_rectangle</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="issue363_inequality_circle">
+                <output-dir compare="Text">issue363_inequality_circle</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="binary">
+                <output-dir compare="Text">binary</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="comparison">
+            <compilation-unit name="binary_null">
+                <output-dir compare="Text">binary_null</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="constructor">
+        <test-case FilePath="constructor">
+            <compilation-unit name="binary_01">
+                <output-dir compare="Text">binary_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="add-null">
+                <output-dir compare="Text">add-null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="boolean_01">
+                <output-dir compare="Text">boolean_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="circle_01">
+                <output-dir compare="Text">circle_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="date_01">
+                <output-dir compare="Text">date_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="datetime_01">
+                <output-dir compare="Text">datetime_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="double_01">
+                <output-dir compare="Text">double_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="duration_01">
+                <output-dir compare="Text">duration_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="duration_02">
+                <output-dir compare="Text">duration_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="float_01">
+                <output-dir compare="Text">float_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="int_01">
+                <output-dir compare="Text">int_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="interval">
+                <output-dir compare="Text">interval</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="line_01">
+                <output-dir compare="Text">line_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="rectangle_01">
+                <output-dir compare="Text">rectangle_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="point_01">
+                <output-dir compare="Text">point_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="polygon_01">
+                <output-dir compare="Text">polygon_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="primitive-01">
+                <output-dir compare="Text">primitive-01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="primitive-02">
+                <output-dir compare="Text">primitive-02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="primitive-03">
+                <output-dir compare="Text">primitive-03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="primitive-04">
+                <output-dir compare="Text">primitive-04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="string_01">
+                <output-dir compare="Text">string_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="time_01">
+                <output-dir compare="Text">time_01</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="custord">
+        <!--
     <test-case FilePath="custord">
       <compilation-unit name="co">
         <output-dir compare="Text">co</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="custord">
-      <compilation-unit name="customer_q_01">
-        <output-dir compare="Text">customer_q_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="customer_q_02">
-        <output-dir compare="Text">customer_q_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="customer_q_03">
-        <output-dir compare="Text">customer_q_03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="customer_q_04">
-        <output-dir compare="Text">customer_q_04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="customer_q_05">
-        <output-dir compare="Text">customer_q_05</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="customer_q_06">
-        <output-dir compare="Text">customer_q_06</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="customer_q_07">
-        <output-dir compare="Text">customer_q_07</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="customer_q_08">
-        <output-dir compare="Text">customer_q_08</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="custord">
+            <compilation-unit name="customer_q_01">
+                <output-dir compare="Text">customer_q_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="customer_q_02">
+                <output-dir compare="Text">customer_q_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="customer_q_03">
+                <output-dir compare="Text">customer_q_03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="customer_q_04">
+                <output-dir compare="Text">customer_q_04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="customer_q_05">
+                <output-dir compare="Text">customer_q_05</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="customer_q_06">
+                <output-dir compare="Text">customer_q_06</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="customer_q_07">
+                <output-dir compare="Text">customer_q_07</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="customer_q_08">
+                <output-dir compare="Text">customer_q_08</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="custord">
       <compilation-unit name="denorm-cust-order_01">
         <output-dir compare="Text">denorm-cust-order_01</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="custord">
-      <compilation-unit name="denorm-cust-order_02">
-        <output-dir compare="Text">denorm-cust-order_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="custord">
+            <compilation-unit name="denorm-cust-order_02">
+                <output-dir compare="Text">denorm-cust-order_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="custord">
       <compilation-unit name="denorm-cust-order_03">
         <output-dir compare="Text">denorm-cust-order_03</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="custord">
       <compilation-unit name="freq-clerk">
         <output-dir compare="Text">freq-clerk</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="custord">
-      <compilation-unit name="join_q_01">
-        <output-dir compare="Text">join_q_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="join_q_02">
-        <output-dir compare="Text">join_q_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="join_q_03">
-        <output-dir compare="Text">join_q_03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="join_q_04">
-        <output-dir compare="Text">join_q_04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="load-test">
-        <output-dir compare="Text">load-test</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="order_q_01">
-        <output-dir compare="Text">order_q_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="order_q_02">
-        <output-dir compare="Text">order_q_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="order_q_03">
-        <output-dir compare="Text">order_q_03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="order_q_04">
-        <output-dir compare="Text">order_q_04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="order_q_05">
-        <output-dir compare="Text">order_q_05</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="custord">
-      <compilation-unit name="order_q_06">
-        <output-dir compare="Text">order_q_06</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="dapd">
-    <test-case FilePath="dapd">
-      <compilation-unit name="q1">
-        <output-dir compare="Text">q1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dapd">
-      <compilation-unit name="q2">
-        <output-dir compare="Text">q2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="custord">
+            <compilation-unit name="join_q_01">
+                <output-dir compare="Text">join_q_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="join_q_02">
+                <output-dir compare="Text">join_q_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="join_q_03">
+                <output-dir compare="Text">join_q_03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="join_q_04">
+                <output-dir compare="Text">join_q_04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="load-test">
+                <output-dir compare="Text">load-test</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="order_q_01">
+                <output-dir compare="Text">order_q_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="order_q_02">
+                <output-dir compare="Text">order_q_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="order_q_03">
+                <output-dir compare="Text">order_q_03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="order_q_04">
+                <output-dir compare="Text">order_q_04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="order_q_05">
+                <output-dir compare="Text">order_q_05</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="custord">
+            <compilation-unit name="order_q_06">
+                <output-dir compare="Text">order_q_06</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="dapd">
+        <test-case FilePath="dapd">
+            <compilation-unit name="q1">
+                <output-dir compare="Text">q1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dapd">
+            <compilation-unit name="q2">
+                <output-dir compare="Text">q2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="dapd">
       <compilation-unit name="q3">
         <output-dir compare="Text">q3</output-dir>
       </compilation-unit>
     </test-case>
     -->
-  </test-group>
-  <test-group name="dml">
-      <test-case FilePath="dml">
-      <compilation-unit name="compact-dataset-and-its-indexes">
-        <output-dir compare="Text">compact-dataset-and-its-indexes</output-dir>
-      </compilation-unit>
-     </test-case>
-     <test-case FilePath="dml">
-      <compilation-unit name="using-constant-merge-policy">
-        <output-dir compare="Text">using-constant-merge-policy</output-dir>
-      </compilation-unit>
-     </test-case>
-     <test-case FilePath="dml">
-      <compilation-unit name="using-prefix-merge-policy">
-        <output-dir compare="Text">using-prefix-merge-policy</output-dir>
-      </compilation-unit>
-     </test-case>
-     <test-case FilePath="dml">
-      <compilation-unit name="using-correlated-prefix-merge-policy">
-        <output-dir compare="Text">using-correlated-prefix-merge-policy</output-dir>
-      </compilation-unit>
-     </test-case>
-     <test-case FilePath="dml">
-      <compilation-unit name="using-no-merge-policy">
-        <output-dir compare="Text">using-no-merge-policy</output-dir>
-      </compilation-unit>
-     </test-case>
-     <test-case FilePath="dml">
-      <compilation-unit name="query-issue382">
-        <output-dir compare="Text">query-issue382</output-dir>
-      </compilation-unit>
-     </test-case>
-     <test-case FilePath="dml">
-      <compilation-unit name="query-issue433">
-        <output-dir compare="Text">query-issue433</output-dir>
-      </compilation-unit>
-     </test-case>
-     <test-case FilePath="dml">
-      <compilation-unit name="query-issue288">
-        <output-dir compare="Text">query-issue288</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="query-issue205">
-        <output-dir compare="Text">query-issue205</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="delete-from-loaded-dataset-with-index">
-        <output-dir compare="Text">delete-from-loaded-dataset-with-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="delete-from-loaded-dataset">
-        <output-dir compare="Text">delete-from-loaded-dataset</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="delete-syntax-change">
-        <output-dir compare="Text">delete-syntax-change</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="drop-empty-secondary-indexes">
-        <output-dir compare="Text">drop-empty-secondary-indexes</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="drop-index">
-        <output-dir compare="Text">drop-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="create-drop-cltype">
-        <output-dir compare="Text">create-drop-cltype</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="create-drop-opntype">
-        <output-dir compare="Text">create-drop-opntype</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="empty-load-with-index">
-        <output-dir compare="Text">empty-load-with-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-into-empty-dataset">
-        <output-dir compare="Text">insert-into-empty-dataset</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-into-empty-dataset-with-index">
-        <output-dir compare="Text">insert-into-empty-dataset-with-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-syntax">
-        <output-dir compare="Text">insert-syntax</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-and-scan-dataset">
-        <output-dir compare="Text">insert-and-scan-dataset</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-and-scan-dataset-with-index">
-        <output-dir compare="Text">insert-and-scan-dataset-with-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-and-scan-joined-datasets">
-        <output-dir compare="Text">insert-and-scan-joined-datasets</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-into-loaded-dataset-with-index_01">
-        <output-dir compare="Text">insert-into-loaded-dataset-with-index_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-into-loaded-dataset-with-index_02">
-        <output-dir compare="Text">insert-into-loaded-dataset-with-index_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-into-loaded-dataset_01">
-        <output-dir compare="Text">insert-into-loaded-dataset_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-into-loaded-dataset_02">
-        <output-dir compare="Text">insert-into-loaded-dataset_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-src-dst-01">
-        <output-dir compare="Text">insert-src-dst-01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert">
-        <output-dir compare="Text">insert</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert-duplicated-keys">
-        <output-dir compare="Text">insert-duplicated-keys</output-dir>
-        <expected-error>edu.uci.ics.hyracks.storage.am.common.exceptions.TreeIndexDuplicateKeyException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="insert_less_nc">
-        <output-dir compare="Text">insert_less_nc</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+    </test-group>
+    <test-group name="dml">
+        <test-case FilePath="dml">
+            <compilation-unit name="compact-dataset-and-its-indexes">
+                <output-dir compare="Text">compact-dataset-and-its-indexes</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="using-constant-merge-policy">
+                <output-dir compare="Text">using-constant-merge-policy</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="using-prefix-merge-policy">
+                <output-dir compare="Text">using-prefix-merge-policy</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="using-correlated-prefix-merge-policy">
+                <output-dir compare="Text">using-correlated-prefix-merge-policy</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="using-no-merge-policy">
+                <output-dir compare="Text">using-no-merge-policy</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="query-issue382">
+                <output-dir compare="Text">query-issue382</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="query-issue433">
+                <output-dir compare="Text">query-issue433</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="query-issue288">
+                <output-dir compare="Text">query-issue288</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="query-issue205">
+                <output-dir compare="Text">query-issue205</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="delete-from-loaded-dataset-with-index">
+                <output-dir compare="Text">delete-from-loaded-dataset-with-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="delete-from-loaded-dataset">
+                <output-dir compare="Text">delete-from-loaded-dataset</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="delete-syntax-change">
+                <output-dir compare="Text">delete-syntax-change</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="drop-empty-secondary-indexes">
+                <output-dir compare="Text">drop-empty-secondary-indexes</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="drop-index">
+                <output-dir compare="Text">drop-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="create-drop-cltype">
+                <output-dir compare="Text">create-drop-cltype</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="create-drop-opntype">
+                <output-dir compare="Text">create-drop-opntype</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="empty-load-with-index">
+                <output-dir compare="Text">empty-load-with-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-into-empty-dataset">
+                <output-dir compare="Text">insert-into-empty-dataset</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-into-empty-dataset-with-index">
+                <output-dir compare="Text">insert-into-empty-dataset-with-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-syntax">
+                <output-dir compare="Text">insert-syntax</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-and-scan-dataset">
+                <output-dir compare="Text">insert-and-scan-dataset</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-and-scan-dataset-with-index">
+                <output-dir compare="Text">insert-and-scan-dataset-with-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-and-scan-joined-datasets">
+                <output-dir compare="Text">insert-and-scan-joined-datasets</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-into-loaded-dataset-with-index_01">
+                <output-dir compare="Text">insert-into-loaded-dataset-with-index_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-into-loaded-dataset-with-index_02">
+                <output-dir compare="Text">insert-into-loaded-dataset-with-index_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-into-loaded-dataset_01">
+                <output-dir compare="Text">insert-into-loaded-dataset_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-into-loaded-dataset_02">
+                <output-dir compare="Text">insert-into-loaded-dataset_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-src-dst-01">
+                <output-dir compare="Text">insert-src-dst-01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert">
+                <output-dir compare="Text">insert</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert-duplicated-keys">
+                <output-dir compare="Text">insert-duplicated-keys</output-dir>
+                <expected-error>edu.uci.ics.hyracks.storage.am.common.exceptions.TreeIndexDuplicateKeyException
+                </expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="insert_less_nc">
+                <output-dir compare="Text">insert_less_nc</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="dml">
       <compilation-unit name="load-from-hdfs">
         <output-dir compare="Text">load-from-hdfs</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="dml">
-      <compilation-unit name="load-with-autogenerated-pk_txt_01">
-        <output-dir compare="Text">load-with-autogenerated-pk_txt_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="load-with-autogenerated-pk_adm_01">
-        <output-dir compare="Text">load-with-autogenerated-pk_adm_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="load-with-autogenerated-pk_adm_02">
-        <output-dir compare="Text">load-with-autogenerated-pk_adm_02</output-dir>
-        <expected-error>edu.uci.ics.asterix.runtime.operators.file.ADMDataParser.ParseException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="load-with-autogenerated-pk_csv_01">
-        <output-dir compare="Text">load-with-autogenerated-pk_csv_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="load-with-autogenerated-pk_csv_02">
-        <output-dir compare="Text">load-with-autogenerated-pk_csv_02</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="load-with-index">
-        <output-dir compare="Text">load-with-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="load-with-ngram-index">
-        <output-dir compare="Text">load-with-ngram-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="load-with-rtree-index">
-        <output-dir compare="Text">load-with-rtree-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="load-with-word-index">
-        <output-dir compare="Text">load-with-word-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="opentype-c2o-recursive">
-        <output-dir compare="Text">opentype-c2o-recursive</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="opentype-c2o">
-        <output-dir compare="Text">opentype-c2o</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="opentype-closed-optional">
-        <output-dir compare="Text">opentype-closed-optional</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="opentype-insert">
-        <output-dir compare="Text">opentype-insert</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="opentype-insert2">
-        <output-dir compare="Text">opentype-insert2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="opentype-noexpand">
-        <output-dir compare="Text">opentype-noexpand</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="opentype-o2c-recursive">
-        <output-dir compare="Text">opentype-o2c-recursive</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="opentype-o2c">
-        <output-dir compare="Text">opentype-o2c</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="opentype-o2o">
-        <output-dir compare="Text">opentype-o2o</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-delete-btree-secondary-index-nullable">
-        <output-dir compare="Text">scan-delete-btree-secondary-index-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-delete-rtree-secondary-index-nullable">
-        <output-dir compare="Text">scan-delete-rtree-secondary-index-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-delete-rtree-secondary-index">
-        <output-dir compare="Text">scan-delete-rtree-secondary-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-insert-btree-secondary-index-nullable">
-        <output-dir compare="Text">scan-insert-btree-secondary-index-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-insert-rtree-secondary-index-nullable">
-        <output-dir compare="Text">scan-insert-rtree-secondary-index-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-insert-rtree-secondary-index">
-        <output-dir compare="Text">scan-insert-rtree-secondary-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-insert-inverted-index-ngram-secondary-index">
-        <output-dir compare="Text">scan-insert-inverted-index-ngram-secondary-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-insert-inverted-index-word-secondary-index">
-        <output-dir compare="Text">scan-insert-inverted-index-word-secondary-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-insert-inverted-index-ngram-secondary-index-nullable">
-        <output-dir compare="Text">scan-insert-inverted-index-ngram-secondary-index-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-insert-inverted-index-word-secondary-index-nullable">
-        <output-dir compare="Text">scan-insert-inverted-index-word-secondary-index-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-delete-inverted-index-ngram-secondary-index">
-        <output-dir compare="Text">scan-delete-inverted-index-ngram-secondary-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-delete-inverted-index-word-secondary-index">
-        <output-dir compare="Text">scan-delete-inverted-index-word-secondary-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-delete-inverted-index-ngram-secondary-index-nullable">
-        <output-dir compare="Text">scan-delete-inverted-index-ngram-secondary-index-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="dml">
-      <compilation-unit name="scan-delete-inverted-index-word-secondary-index-nullable">
-        <output-dir compare="Text">scan-delete-inverted-index-word-secondary-index-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="employee">
-    <test-case FilePath="employee">
-      <compilation-unit name="q_01">
-        <output-dir compare="Text">q_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="employee">
-      <compilation-unit name="q_02">
-        <output-dir compare="Text">q_02</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="failure">
-    <!--
+        <test-case FilePath="dml">
+            <compilation-unit name="load-with-autogenerated-pk_txt_01">
+                <output-dir compare="Text">load-with-autogenerated-pk_txt_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="load-with-autogenerated-pk_adm_01">
+                <output-dir compare="Text">load-with-autogenerated-pk_adm_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="load-with-autogenerated-pk_adm_02">
+                <output-dir compare="Text">load-with-autogenerated-pk_adm_02</output-dir>
+                <expected-error>edu.uci.ics.asterix.runtime.operators.file.ADMDataParser.ParseException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="load-with-autogenerated-pk_csv_01">
+                <output-dir compare="Text">load-with-autogenerated-pk_csv_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="load-with-autogenerated-pk_csv_02">
+                <output-dir compare="Text">load-with-autogenerated-pk_csv_02</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="load-with-index">
+                <output-dir compare="Text">load-with-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="load-with-ngram-index">
+                <output-dir compare="Text">load-with-ngram-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="load-with-rtree-index">
+                <output-dir compare="Text">load-with-rtree-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="load-with-word-index">
+                <output-dir compare="Text">load-with-word-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="opentype-c2o-recursive">
+                <output-dir compare="Text">opentype-c2o-recursive</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="opentype-c2o">
+                <output-dir compare="Text">opentype-c2o</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="opentype-closed-optional">
+                <output-dir compare="Text">opentype-closed-optional</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="opentype-insert">
+                <output-dir compare="Text">opentype-insert</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="opentype-insert2">
+                <output-dir compare="Text">opentype-insert2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="opentype-noexpand">
+                <output-dir compare="Text">opentype-noexpand</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="opentype-o2c-recursive">
+                <output-dir compare="Text">opentype-o2c-recursive</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="opentype-o2c">
+                <output-dir compare="Text">opentype-o2c</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="opentype-o2o">
+                <output-dir compare="Text">opentype-o2o</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-delete-btree-secondary-index-nullable">
+                <output-dir compare="Text">scan-delete-btree-secondary-index-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-delete-rtree-secondary-index-nullable">
+                <output-dir compare="Text">scan-delete-rtree-secondary-index-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-delete-rtree-secondary-index">
+                <output-dir compare="Text">scan-delete-rtree-secondary-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-insert-btree-secondary-index-nullable">
+                <output-dir compare="Text">scan-insert-btree-secondary-index-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-insert-rtree-secondary-index-nullable">
+                <output-dir compare="Text">scan-insert-rtree-secondary-index-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-insert-rtree-secondary-index">
+                <output-dir compare="Text">scan-insert-rtree-secondary-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-insert-inverted-index-ngram-secondary-index">
+                <output-dir compare="Text">scan-insert-inverted-index-ngram-secondary-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-insert-inverted-index-word-secondary-index">
+                <output-dir compare="Text">scan-insert-inverted-index-word-secondary-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-insert-inverted-index-ngram-secondary-index-nullable">
+                <output-dir compare="Text">scan-insert-inverted-index-ngram-secondary-index-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-insert-inverted-index-word-secondary-index-nullable">
+                <output-dir compare="Text">scan-insert-inverted-index-word-secondary-index-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-delete-inverted-index-ngram-secondary-index">
+                <output-dir compare="Text">scan-delete-inverted-index-ngram-secondary-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-delete-inverted-index-word-secondary-index">
+                <output-dir compare="Text">scan-delete-inverted-index-word-secondary-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-delete-inverted-index-ngram-secondary-index-nullable">
+                <output-dir compare="Text">scan-delete-inverted-index-ngram-secondary-index-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="dml">
+            <compilation-unit name="scan-delete-inverted-index-word-secondary-index-nullable">
+                <output-dir compare="Text">scan-delete-inverted-index-word-secondary-index-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="employee">
+        <test-case FilePath="employee">
+            <compilation-unit name="q_01">
+                <output-dir compare="Text">q_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="employee">
+            <compilation-unit name="q_02">
+                <output-dir compare="Text">q_02</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="failure">
+        <!--
     <test-case FilePath="failure">
       <compilation-unit name="q1_pricing_summary_report_failure">
         <output-dir compare="Text">q1_pricing_summary_report_failure</output-dir>
       </compilation-unit>
     </test-case>
     -->
-  </test-group>
-  <!--
+    </test-group>
+    <!--
   <test-group name="flwor">
     <test-case FilePath="flwor">
       <compilation-unit name="for01">
@@ -2082,3053 +2099,3058 @@
     </test-case>
   </test-group>
   -->
-  <test-group name="fuzzyjoin">
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-1_1">
-        <output-dir compare="Text">dblp-1_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-1_2.1.1">
-        <output-dir compare="Text">dblp-1_2.1.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-1_2.1">
-        <output-dir compare="Text">dblp-1_2.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-1_2">
-        <output-dir compare="Text">dblp-1_2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2.1_5.3.1">
-        <output-dir compare="Text">dblp-2.1_5.3.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2_1">
-        <output-dir compare="Text">dblp-2_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2_2">
-        <output-dir compare="Text">dblp-2_2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2.2">
-        <output-dir compare="Text">dblp-2.2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2_3">
-        <output-dir compare="Text">dblp-2_3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2_4">
-        <output-dir compare="Text">dblp-2_4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2_5.1">
-        <output-dir compare="Text">dblp-2_5.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2_5.2">
-        <output-dir compare="Text">dblp-2_5.2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2_5.3.1">
-        <output-dir compare="Text">dblp-2_5.3.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2_5.3">
-        <output-dir compare="Text">dblp-2_5.3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-2_5">
-        <output-dir compare="Text">dblp-2_5</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-3_1.1">
-        <output-dir compare="Text">dblp-3_1.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-3_1.2">
-        <output-dir compare="Text">dblp-3_1.2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-3_1">
-        <output-dir compare="Text">dblp-3_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-aqlplus_1">
-        <output-dir compare="Text">dblp-aqlplus_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-aqlplus_2">
-        <output-dir compare="Text">dblp-aqlplus_2</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-2_1">
-        <output-dir compare="Text">dblp-csx-2_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-2_2">
-        <output-dir compare="Text">dblp-csx-2_2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-2_3">
-        <output-dir compare="Text">dblp-csx-2_3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-2_4">
-        <output-dir compare="Text">dblp-csx-2_4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-2_5.1">
-        <output-dir compare="Text">dblp-csx-2_5.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-2_5.2">
-        <output-dir compare="Text">dblp-csx-2_5.2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-2_5.3.1">
-        <output-dir compare="Text">dblp-csx-2_5.3.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-2_5.3">
-        <output-dir compare="Text">dblp-csx-2_5.3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-2_5">
-        <output-dir compare="Text">dblp-csx-2_5</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_1">
-        <output-dir compare="Text">dblp-csx-3_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_2">
-        <output-dir compare="Text">dblp-csx-3_2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_3">
-        <output-dir compare="Text">dblp-csx-3_3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_4">
-        <output-dir compare="Text">dblp-csx-3_4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_5.1">
-        <output-dir compare="Text">dblp-csx-3_5.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_5.2">
-        <output-dir compare="Text">dblp-csx-3_5.2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_5.3.1">
-        <output-dir compare="Text">dblp-csx-3_5.3.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_5.3">
-        <output-dir compare="Text">dblp-csx-3_5.3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_5.4.1">
-        <output-dir compare="Text">dblp-csx-3_5.4.1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_5.4">
-        <output-dir compare="Text">dblp-csx-3_5.4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-3_5">
-        <output-dir compare="Text">dblp-csx-3_5</output-dir>
-      </compilation-unit>
-    </test-case>
-    -->
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-aqlplus_1">
-        <output-dir compare="Text">dblp-csx-aqlplus_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-aqlplus_2">
-        <output-dir compare="Text">dblp-csx-aqlplus_2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-aqlplus_3">
-        <output-dir compare="Text">dblp-csx-aqlplus_3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-csx-dblp-aqlplus_1">
-        <output-dir compare="Text">dblp-csx-dblp-aqlplus_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="dblp-lookup_1">
-        <output-dir compare="Text">dblp-lookup_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+    <test-group name="fuzzyjoin">
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-1_1">
+                <output-dir compare="Text">dblp-1_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-1_2.1.1">
+                <output-dir compare="Text">dblp-1_2.1.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-1_2.1">
+                <output-dir compare="Text">dblp-1_2.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-1_2">
+                <output-dir compare="Text">dblp-1_2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2.1_5.3.1">
+                <output-dir compare="Text">dblp-2.1_5.3.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2_1">
+                <output-dir compare="Text">dblp-2_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2_2">
+                <output-dir compare="Text">dblp-2_2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2.2">
+                <output-dir compare="Text">dblp-2.2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2_3">
+                <output-dir compare="Text">dblp-2_3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2_4">
+                <output-dir compare="Text">dblp-2_4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2_5.1">
+                <output-dir compare="Text">dblp-2_5.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2_5.2">
+                <output-dir compare="Text">dblp-2_5.2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2_5.3.1">
+                <output-dir compare="Text">dblp-2_5.3.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2_5.3">
+                <output-dir compare="Text">dblp-2_5.3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-2_5">
+                <output-dir compare="Text">dblp-2_5</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-3_1.1">
+                <output-dir compare="Text">dblp-3_1.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-3_1.2">
+                <output-dir compare="Text">dblp-3_1.2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-3_1">
+                <output-dir compare="Text">dblp-3_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-aqlplus_1">
+                <output-dir compare="Text">dblp-aqlplus_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-aqlplus_2">
+                <output-dir compare="Text">dblp-aqlplus_2</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-2_1">
+                <output-dir compare="Text">dblp-csx-2_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-2_2">
+                <output-dir compare="Text">dblp-csx-2_2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-2_3">
+                <output-dir compare="Text">dblp-csx-2_3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-2_4">
+                <output-dir compare="Text">dblp-csx-2_4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-2_5.1">
+                <output-dir compare="Text">dblp-csx-2_5.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-2_5.2">
+                <output-dir compare="Text">dblp-csx-2_5.2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-2_5.3.1">
+                <output-dir compare="Text">dblp-csx-2_5.3.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-2_5.3">
+                <output-dir compare="Text">dblp-csx-2_5.3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-2_5">
+                <output-dir compare="Text">dblp-csx-2_5</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_1">
+                <output-dir compare="Text">dblp-csx-3_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_2">
+                <output-dir compare="Text">dblp-csx-3_2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_3">
+                <output-dir compare="Text">dblp-csx-3_3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_4">
+                <output-dir compare="Text">dblp-csx-3_4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_5.1">
+                <output-dir compare="Text">dblp-csx-3_5.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_5.2">
+                <output-dir compare="Text">dblp-csx-3_5.2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_5.3.1">
+                <output-dir compare="Text">dblp-csx-3_5.3.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_5.3">
+                <output-dir compare="Text">dblp-csx-3_5.3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_5.4.1">
+                <output-dir compare="Text">dblp-csx-3_5.4.1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_5.4">
+                <output-dir compare="Text">dblp-csx-3_5.4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-3_5">
+                <output-dir compare="Text">dblp-csx-3_5</output-dir>
+            </compilation-unit>
+        </test-case>
+        -->
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-aqlplus_1">
+                <output-dir compare="Text">dblp-csx-aqlplus_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-aqlplus_2">
+                <output-dir compare="Text">dblp-csx-aqlplus_2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-aqlplus_3">
+                <output-dir compare="Text">dblp-csx-aqlplus_3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-csx-dblp-aqlplus_1">
+                <output-dir compare="Text">dblp-csx-dblp-aqlplus_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="dblp-lookup_1">
+                <output-dir compare="Text">dblp-lookup_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="fuzzyjoin">
       <compilation-unit name="dblp-splits-3_1">
         <output-dir compare="Text">dblp-splits-3_1</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="fuzzyjoin">
-      <compilation-unit name="opentype">
-        <output-dir compare="Text">opentype</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="index-join">
-    <test-case FilePath="index-join">
-      <compilation-unit name="btree-primary-equi-join">
-        <output-dir compare="Text">btree-primary-equi-join</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-join">
-      <compilation-unit name="btree-secondary-equi-join">
-        <output-dir compare="Text">btree-secondary-equi-join</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-join">
-      <compilation-unit name="rtree-spatial-intersect-point">
-        <output-dir compare="Text">rtree-spatial-intersect-point</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="index-selection">
-    <test-case FilePath="index-selection">
-      <compilation-unit name="btree-index-composite-key">
-        <output-dir compare="Text">btree-index-composite-key</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="btree-index-composite-key-mixed-intervals">
-        <output-dir compare="Text">btree-index-composite-key-mixed-intervals</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="btree-index-rewrite-multiple">
-        <output-dir compare="Text">btree-index-rewrite-multiple</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="cust-index-age-nullable">
-        <output-dir compare="Text">cust-index-age-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-ngram-contains">
-        <output-dir compare="Text">inverted-index-ngram-contains</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-ngram-edit-distance-panic">
-        <output-dir compare="Text">inverted-index-ngram-edit-distance-panic</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-ngram-edit-distance">
-        <output-dir compare="Text">inverted-index-ngram-edit-distance</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-ngram-edit-distance-word-tokens">
-        <output-dir compare="Text">inverted-index-ngram-edit-distance-word-tokens</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-ngram-jaccard">
-        <output-dir compare="Text">inverted-index-ngram-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-ngram-edit-distance-contains">
-        <output-dir compare="Text">inverted-index-ngram-edit-distance-contains</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-olist-edit-distance-panic">
-        <output-dir compare="Text">inverted-index-olist-edit-distance-panic</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-olist-edit-distance">
-        <output-dir compare="Text">inverted-index-olist-edit-distance</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-olist-jaccard">
-        <output-dir compare="Text">inverted-index-olist-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-ulist-jaccard">
-        <output-dir compare="Text">inverted-index-ulist-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-word-contains">
-        <output-dir compare="Text">inverted-index-word-contains</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="inverted-index-word-jaccard">
-        <output-dir compare="Text">inverted-index-word-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="orders-index-custkey-conjunctive-open">
-        <output-dir compare="Text">orders-index-custkey-conjunctive-open</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="orders-index-custkey-conjunctive">
-        <output-dir compare="Text">orders-index-custkey-conjunctive</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="orders-index-custkey-open">
-        <output-dir compare="Text">orders-index-custkey-open</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="orders-index-custkey">
-        <output-dir compare="Text">orders-index-custkey</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="range-search-open">
-        <output-dir compare="Text">range-search-open</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="range-search">
-        <output-dir compare="Text">range-search</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="rtree-secondary-index-nullable">
-        <output-dir compare="Text">rtree-secondary-index-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="rtree-secondary-index-open">
-        <output-dir compare="Text">rtree-secondary-index-open</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="rtree-secondary-index">
-        <output-dir compare="Text">rtree-secondary-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="rtree-secondary-index-circular-query">
-        <output-dir compare="Text">rtree-secondary-index-circular-query</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-selection">
-      <compilation-unit name="disjunctive-predicate-1">
-        <output-dir compare="Text">disjunctive-predicate-1</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="inverted-index-join">
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="ngram-edit-distance">
-        <output-dir compare="Text">ngram-edit-distance</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="ngram-edit-distance-inline">
-        <output-dir compare="Text">ngram-edit-distance-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="ngram-jaccard">
-        <output-dir compare="Text">ngram-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="ngram-jaccard-inline">
-        <output-dir compare="Text">ngram-jaccard-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="olist-edit-distance">
-        <output-dir compare="Text">olist-edit-distance</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="olist-edit-distance-inline">
-        <output-dir compare="Text">olist-edit-distance-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="olist-jaccard">
-        <output-dir compare="Text">olist-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="olist-jaccard-inline">
-        <output-dir compare="Text">olist-jaccard-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="ulist-jaccard">
-        <output-dir compare="Text">ulist-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="ulist-jaccard-inline">
-        <output-dir compare="Text">ulist-jaccard-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="word-jaccard">
-        <output-dir compare="Text">word-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join">
-      <compilation-unit name="word-jaccard-inline">
-        <output-dir compare="Text">word-jaccard-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="inverted-index-join-noeqjoin">
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="ngram-edit-distance">
-        <output-dir compare="Text">ngram-edit-distance</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="ngram-edit-distance-inline">
-        <output-dir compare="Text">ngram-edit-distance-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="ngram-jaccard">
-        <output-dir compare="Text">ngram-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="ngram-jaccard-inline">
-        <output-dir compare="Text">ngram-jaccard-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="olist-edit-distance">
-        <output-dir compare="Text">olist-edit-distance</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="olist-edit-distance-inline">
-        <output-dir compare="Text">olist-edit-distance-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="olist-jaccard">
-        <output-dir compare="Text">olist-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="olist-jaccard-inline">
-        <output-dir compare="Text">olist-jaccard-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="ulist-jaccard">
-        <output-dir compare="Text">ulist-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="ulist-jaccard-inline">
-        <output-dir compare="Text">ulist-jaccard-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="word-jaccard">
-        <output-dir compare="Text">word-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="inverted-index-join-noeqjoin">
-      <compilation-unit name="word-jaccard-inline">
-        <output-dir compare="Text">word-jaccard-inline</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="list">
-    <test-case FilePath="list">
-      <compilation-unit name="any-collection-member_01">
-        <output-dir compare="Text">any-collection-member_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="get-item_01">
-        <output-dir compare="Text">get-item_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="get-item_02">
-        <output-dir compare="Text">get-item_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="len_01">
-        <output-dir compare="Text">len_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="len_null_01">
-        <output-dir compare="Text">len_null_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="listify_01">
-        <output-dir compare="Text">listify_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="listify_02">
-        <output-dir compare="Text">listify_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="listify_03">
-        <output-dir compare="Text">listify_03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="ordered-list-constructor_01">
-        <output-dir compare="Text">ordered-list-constructor_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="ordered-list-constructor_02">
-        <output-dir compare="Text">ordered-list-constructor_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="ordered-list-constructor_03">
-        <output-dir compare="Text">ordered-list-constructor_03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="scan-collection_01">
-        <output-dir compare="Text">scan-collection_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="union_01">
-        <output-dir compare="Text">union_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="union_02">
-        <output-dir compare="Text">union_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="unordered-list-constructor_01">
-        <output-dir compare="Text">unordered-list-constructor_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="unordered-list-constructor_02">
-        <output-dir compare="Text">unordered-list-constructor_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="unordered-list-constructor_03">
-        <output-dir compare="Text">unordered-list-constructor_03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="list">
-      <compilation-unit name="query-issue428">
-        <output-dir compare="Text">query-issue428</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="misc">
-  <test-case FilePath="misc">
-      <compilation-unit name="partition-by-nonexistent-field">
-        <output-dir compare="Text">partition-by-nonexistent-field</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="misc">
-      <compilation-unit name="float_01">
-        <output-dir compare="Text">float_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="misc">
-      <compilation-unit name="flushtest">
-        <output-dir compare="Text">flushtest</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="misc">
-      <compilation-unit name="groupby-orderby-count">
-        <output-dir compare="Text">groupby-orderby-count</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="misc">
-      <compilation-unit name="ifthenelse_01">
-        <output-dir compare="Text">ifthenelse_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="misc">
-      <compilation-unit name="is-null_01">
-        <output-dir compare="Text">is-null_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="misc">
-      <compilation-unit name="nested-loop-join_01">
-        <output-dir compare="Text">nested-loop-join_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="misc">
-      <compilation-unit name="query_issue267">
-        <output-dir compare="Text">query_issue267</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="misc">
-      <compilation-unit name="stable_sort">
-        <output-dir compare="Text">stable_sort</output-dir>
-      </compilation-unit>
-    </test-case>
-   <!--
+        <test-case FilePath="fuzzyjoin">
+            <compilation-unit name="opentype">
+                <output-dir compare="Text">opentype</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="index-join">
+        <test-case FilePath="index-join">
+            <compilation-unit name="btree-primary-equi-join">
+                <output-dir compare="Text">btree-primary-equi-join</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-join">
+            <compilation-unit name="btree-secondary-equi-join">
+                <output-dir compare="Text">btree-secondary-equi-join</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-join">
+            <compilation-unit name="rtree-spatial-intersect-point">
+                <output-dir compare="Text">rtree-spatial-intersect-point</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="index-selection">
+        <test-case FilePath="index-selection">
+            <compilation-unit name="btree-index-composite-key">
+                <output-dir compare="Text">btree-index-composite-key</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="btree-index-composite-key-mixed-intervals">
+                <output-dir compare="Text">btree-index-composite-key-mixed-intervals</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="btree-index-rewrite-multiple">
+                <output-dir compare="Text">btree-index-rewrite-multiple</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="cust-index-age-nullable">
+                <output-dir compare="Text">cust-index-age-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-ngram-contains">
+                <output-dir compare="Text">inverted-index-ngram-contains</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-ngram-edit-distance-panic">
+                <output-dir compare="Text">inverted-index-ngram-edit-distance-panic</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-ngram-edit-distance">
+                <output-dir compare="Text">inverted-index-ngram-edit-distance</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-ngram-edit-distance-word-tokens">
+                <output-dir compare="Text">inverted-index-ngram-edit-distance-word-tokens</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-ngram-jaccard">
+                <output-dir compare="Text">inverted-index-ngram-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-ngram-edit-distance-contains">
+                <output-dir compare="Text">inverted-index-ngram-edit-distance-contains</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-olist-edit-distance-panic">
+                <output-dir compare="Text">inverted-index-olist-edit-distance-panic</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-olist-edit-distance">
+                <output-dir compare="Text">inverted-index-olist-edit-distance</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-olist-jaccard">
+                <output-dir compare="Text">inverted-index-olist-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-ulist-jaccard">
+                <output-dir compare="Text">inverted-index-ulist-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-word-contains">
+                <output-dir compare="Text">inverted-index-word-contains</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="inverted-index-word-jaccard">
+                <output-dir compare="Text">inverted-index-word-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="orders-index-custkey-conjunctive-open">
+                <output-dir compare="Text">orders-index-custkey-conjunctive-open</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="orders-index-custkey-conjunctive">
+                <output-dir compare="Text">orders-index-custkey-conjunctive</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="orders-index-custkey-open">
+                <output-dir compare="Text">orders-index-custkey-open</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="orders-index-custkey">
+                <output-dir compare="Text">orders-index-custkey</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="range-search-open">
+                <output-dir compare="Text">range-search-open</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="range-search">
+                <output-dir compare="Text">range-search</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="rtree-secondary-index-nullable">
+                <output-dir compare="Text">rtree-secondary-index-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="rtree-secondary-index-open">
+                <output-dir compare="Text">rtree-secondary-index-open</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="rtree-secondary-index">
+                <output-dir compare="Text">rtree-secondary-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="rtree-secondary-index-circular-query">
+                <output-dir compare="Text">rtree-secondary-index-circular-query</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-selection">
+            <compilation-unit name="disjunctive-predicate-1">
+                <output-dir compare="Text">disjunctive-predicate-1</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="inverted-index-join">
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="ngram-edit-distance">
+                <output-dir compare="Text">ngram-edit-distance</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="ngram-edit-distance-inline">
+                <output-dir compare="Text">ngram-edit-distance-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="ngram-jaccard">
+                <output-dir compare="Text">ngram-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="ngram-jaccard-inline">
+                <output-dir compare="Text">ngram-jaccard-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="olist-edit-distance">
+                <output-dir compare="Text">olist-edit-distance</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="olist-edit-distance-inline">
+                <output-dir compare="Text">olist-edit-distance-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="olist-jaccard">
+                <output-dir compare="Text">olist-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="olist-jaccard-inline">
+                <output-dir compare="Text">olist-jaccard-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="ulist-jaccard">
+                <output-dir compare="Text">ulist-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="ulist-jaccard-inline">
+                <output-dir compare="Text">ulist-jaccard-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="word-jaccard">
+                <output-dir compare="Text">word-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join">
+            <compilation-unit name="word-jaccard-inline">
+                <output-dir compare="Text">word-jaccard-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="inverted-index-join-noeqjoin">
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="ngram-edit-distance">
+                <output-dir compare="Text">ngram-edit-distance</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="ngram-edit-distance-inline">
+                <output-dir compare="Text">ngram-edit-distance-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="ngram-jaccard">
+                <output-dir compare="Text">ngram-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="ngram-jaccard-inline">
+                <output-dir compare="Text">ngram-jaccard-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="olist-edit-distance">
+                <output-dir compare="Text">olist-edit-distance</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="olist-edit-distance-inline">
+                <output-dir compare="Text">olist-edit-distance-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="olist-jaccard">
+                <output-dir compare="Text">olist-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="olist-jaccard-inline">
+                <output-dir compare="Text">olist-jaccard-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="ulist-jaccard">
+                <output-dir compare="Text">ulist-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="ulist-jaccard-inline">
+                <output-dir compare="Text">ulist-jaccard-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="word-jaccard">
+                <output-dir compare="Text">word-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="inverted-index-join-noeqjoin">
+            <compilation-unit name="word-jaccard-inline">
+                <output-dir compare="Text">word-jaccard-inline</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="list">
+        <test-case FilePath="list">
+            <compilation-unit name="any-collection-member_01">
+                <output-dir compare="Text">any-collection-member_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="get-item_01">
+                <output-dir compare="Text">get-item_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="get-item_02">
+                <output-dir compare="Text">get-item_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="len_01">
+                <output-dir compare="Text">len_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="len_null_01">
+                <output-dir compare="Text">len_null_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="listify_01">
+                <output-dir compare="Text">listify_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="listify_02">
+                <output-dir compare="Text">listify_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="listify_03">
+                <output-dir compare="Text">listify_03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="ordered-list-constructor_01">
+                <output-dir compare="Text">ordered-list-constructor_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="ordered-list-constructor_02">
+                <output-dir compare="Text">ordered-list-constructor_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="ordered-list-constructor_03">
+                <output-dir compare="Text">ordered-list-constructor_03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="scan-collection_01">
+                <output-dir compare="Text">scan-collection_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="union_01">
+                <output-dir compare="Text">union_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="union_02">
+                <output-dir compare="Text">union_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="unordered-list-constructor_01">
+                <output-dir compare="Text">unordered-list-constructor_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="unordered-list-constructor_02">
+                <output-dir compare="Text">unordered-list-constructor_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="unordered-list-constructor_03">
+                <output-dir compare="Text">unordered-list-constructor_03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
+            <compilation-unit name="query-issue428">
+                <output-dir compare="Text">query-issue428</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="misc">
+        <test-case FilePath="misc">
+            <compilation-unit name="partition-by-nonexistent-field">
+                <output-dir compare="Text">partition-by-nonexistent-field</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="misc">
+            <compilation-unit name="float_01">
+                <output-dir compare="Text">float_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="misc">
+            <compilation-unit name="flushtest">
+                <output-dir compare="Text">flushtest</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="misc">
+            <compilation-unit name="groupby-orderby-count">
+                <output-dir compare="Text">groupby-orderby-count</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="misc">
+            <compilation-unit name="ifthenelse_01">
+                <output-dir compare="Text">ifthenelse_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="misc">
+            <compilation-unit name="is-null_01">
+                <output-dir compare="Text">is-null_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="misc">
+            <compilation-unit name="nested-loop-join_01">
+                <output-dir compare="Text">nested-loop-join_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="misc">
+            <compilation-unit name="query_issue267">
+                <output-dir compare="Text">query_issue267</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="misc">
+            <compilation-unit name="stable_sort">
+                <output-dir compare="Text">stable_sort</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="misc">
       <compilation-unit name="range_01">
         <output-dir compare="Text">range_01</output-dir>
       </compilation-unit>
     </test-case>
    -->
-  <!--
+        <!--
     <test-case FilePath="misc">
       <compilation-unit name="tid_01">
         <output-dir compare="Text">tid_01</output-dir>
       </compilation-unit>
     </test-case>
    -->
-    <test-case FilePath="misc">
-      <compilation-unit name="year_01">
-        <output-dir compare="Text">year_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="misc">
-      <compilation-unit name="string_eq_01">
-        <output-dir compare="Text">string_eq_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="misc">
-      <compilation-unit name="prefix-search">
-        <output-dir compare="Text">prefix-search</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="nestrecords">
-    <test-case FilePath="nestrecords">
-      <compilation-unit name="nestrecord">
-        <output-dir compare="Text">nestrecord</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="numeric">
-    <test-case FilePath="numeric">
-      <compilation-unit name="caret0">
-        <output-dir compare="Text">caret0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="abs0">
-        <output-dir compare="Text">abs0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="abs1">
-        <output-dir compare="Text">abs1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="abs2">
-        <output-dir compare="Text">abs2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="abs3">
-        <output-dir compare="Text">abs3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="abs4">
-        <output-dir compare="Text">abs4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="add_double">
-        <output-dir compare="Text">add_double</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="add_float">
-        <output-dir compare="Text">add_float</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="add_int16">
-        <output-dir compare="Text">add_int16</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="add_int32">
-        <output-dir compare="Text">add_int32</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="add_int64">
-        <output-dir compare="Text">add_int64</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="add_int8">
-        <output-dir compare="Text">add_int8</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="ceiling0">
-        <output-dir compare="Text">ceiling0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="ceiling1">
-        <output-dir compare="Text">ceiling1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="ceiling2">
-        <output-dir compare="Text">ceiling2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="ceiling3">
-        <output-dir compare="Text">ceiling3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="ceiling4">
-        <output-dir compare="Text">ceiling4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="divide_double">
-        <output-dir compare="Text">divide_double</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="divide_float">
-        <output-dir compare="Text">divide_float</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="divide_int16">
-        <output-dir compare="Text">divide_int16</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="divide_int32">
-        <output-dir compare="Text">divide_int32</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="divide_int64">
-        <output-dir compare="Text">divide_int64</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="divide_int8">
-        <output-dir compare="Text">divide_int8</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="floor0">
-        <output-dir compare="Text">floor0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="floor1">
-        <output-dir compare="Text">floor1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="floor2">
-        <output-dir compare="Text">floor2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="floor3">
-        <output-dir compare="Text">floor3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="floor4">
-        <output-dir compare="Text">floor4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="multiply_double">
-        <output-dir compare="Text">multiply_double</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="multiply_float">
-        <output-dir compare="Text">multiply_float</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="multiply_int16">
-        <output-dir compare="Text">multiply_int16</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="multiply_int32">
-        <output-dir compare="Text">multiply_int32</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="multiply_int64">
-        <output-dir compare="Text">multiply_int64</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="multiply_int8">
-        <output-dir compare="Text">multiply_int8</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even0">
-        <output-dir compare="Text">round-half-to-even0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even1">
-        <output-dir compare="Text">round-half-to-even1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even2">
-        <output-dir compare="Text">round-half-to-even2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even20">
-        <output-dir compare="Text">round-half-to-even20</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even21">
-        <output-dir compare="Text">round-half-to-even21</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even22">
-        <output-dir compare="Text">round-half-to-even22</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even23">
-        <output-dir compare="Text">round-half-to-even23</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even24">
-        <output-dir compare="Text">round-half-to-even24</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even3">
-        <output-dir compare="Text">round-half-to-even3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even4">
-        <output-dir compare="Text">round-half-to-even4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round-half-to-even5">
-        <output-dir compare="Text">round-half-to-even5</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round0">
-        <output-dir compare="Text">round0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round1">
-        <output-dir compare="Text">round1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round2">
-        <output-dir compare="Text">round2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round3">
-        <output-dir compare="Text">round3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="round4">
-        <output-dir compare="Text">round4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="subtract_double">
-        <output-dir compare="Text">subtract_double</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="subtract_float">
-        <output-dir compare="Text">subtract_float</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="subtract_int16">
-        <output-dir compare="Text">subtract_int16</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="subtract_int32">
-        <output-dir compare="Text">subtract_int32</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="subtract_int64">
-        <output-dir compare="Text">subtract_int64</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="subtract_int8">
-        <output-dir compare="Text">subtract_int8</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="unary-minus_double_02">
-        <output-dir compare="Text">unary-minus_double_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="unary-minus_float_02">
-        <output-dir compare="Text">unary-minus_float_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="unary-minus_int_02">
-        <output-dir compare="Text">unary-minus_int_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="unary-minus_null">
-        <output-dir compare="Text">unary-minus_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="numeric">
-      <compilation-unit name="query-issue355">
-        <output-dir compare="Text">query-issue355</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="open-closed">
-    <!--
+        <test-case FilePath="misc">
+            <compilation-unit name="year_01">
+                <output-dir compare="Text">year_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="misc">
+            <compilation-unit name="string_eq_01">
+                <output-dir compare="Text">string_eq_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="misc">
+            <compilation-unit name="prefix-search">
+                <output-dir compare="Text">prefix-search</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="nestrecords">
+        <test-case FilePath="nestrecords">
+            <compilation-unit name="nestrecord">
+                <output-dir compare="Text">nestrecord</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="numeric">
+        <test-case FilePath="numeric">
+            <compilation-unit name="caret0">
+                <output-dir compare="Text">caret0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="abs0">
+                <output-dir compare="Text">abs0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="abs1">
+                <output-dir compare="Text">abs1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="abs2">
+                <output-dir compare="Text">abs2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="abs3">
+                <output-dir compare="Text">abs3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="abs4">
+                <output-dir compare="Text">abs4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="add_double">
+                <output-dir compare="Text">add_double</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="add_float">
+                <output-dir compare="Text">add_float</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="add_int16">
+                <output-dir compare="Text">add_int16</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="add_int32">
+                <output-dir compare="Text">add_int32</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="add_int64">
+                <output-dir compare="Text">add_int64</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="add_int8">
+                <output-dir compare="Text">add_int8</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="ceiling0">
+                <output-dir compare="Text">ceiling0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="ceiling1">
+                <output-dir compare="Text">ceiling1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="ceiling2">
+                <output-dir compare="Text">ceiling2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="ceiling3">
+                <output-dir compare="Text">ceiling3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="ceiling4">
+                <output-dir compare="Text">ceiling4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="divide_double">
+                <output-dir compare="Text">divide_double</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="divide_float">
+                <output-dir compare="Text">divide_float</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="divide_int16">
+                <output-dir compare="Text">divide_int16</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="divide_int32">
+                <output-dir compare="Text">divide_int32</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="divide_int64">
+                <output-dir compare="Text">divide_int64</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="divide_int8">
+                <output-dir compare="Text">divide_int8</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="floor0">
+                <output-dir compare="Text">floor0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="floor1">
+                <output-dir compare="Text">floor1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="floor2">
+                <output-dir compare="Text">floor2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="floor3">
+                <output-dir compare="Text">floor3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="floor4">
+                <output-dir compare="Text">floor4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="multiply_double">
+                <output-dir compare="Text">multiply_double</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="multiply_float">
+                <output-dir compare="Text">multiply_float</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="multiply_int16">
+                <output-dir compare="Text">multiply_int16</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="multiply_int32">
+                <output-dir compare="Text">multiply_int32</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="multiply_int64">
+                <output-dir compare="Text">multiply_int64</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="multiply_int8">
+                <output-dir compare="Text">multiply_int8</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even0">
+                <output-dir compare="Text">round-half-to-even0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even1">
+                <output-dir compare="Text">round-half-to-even1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even2">
+                <output-dir compare="Text">round-half-to-even2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even20">
+                <output-dir compare="Text">round-half-to-even20</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even21">
+                <output-dir compare="Text">round-half-to-even21</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even22">
+                <output-dir compare="Text">round-half-to-even22</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even23">
+                <output-dir compare="Text">round-half-to-even23</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even24">
+                <output-dir compare="Text">round-half-to-even24</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even3">
+                <output-dir compare="Text">round-half-to-even3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even4">
+                <output-dir compare="Text">round-half-to-even4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round-half-to-even5">
+                <output-dir compare="Text">round-half-to-even5</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round0">
+                <output-dir compare="Text">round0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round1">
+                <output-dir compare="Text">round1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round2">
+                <output-dir compare="Text">round2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round3">
+                <output-dir compare="Text">round3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="round4">
+                <output-dir compare="Text">round4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="subtract_double">
+                <output-dir compare="Text">subtract_double</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="subtract_float">
+                <output-dir compare="Text">subtract_float</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="subtract_int16">
+                <output-dir compare="Text">subtract_int16</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="subtract_int32">
+                <output-dir compare="Text">subtract_int32</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="subtract_int64">
+                <output-dir compare="Text">subtract_int64</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="subtract_int8">
+                <output-dir compare="Text">subtract_int8</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="unary-minus_double_02">
+                <output-dir compare="Text">unary-minus_double_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="unary-minus_float_02">
+                <output-dir compare="Text">unary-minus_float_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="unary-minus_int_02">
+                <output-dir compare="Text">unary-minus_int_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="unary-minus_null">
+                <output-dir compare="Text">unary-minus_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="numeric">
+            <compilation-unit name="query-issue355">
+                <output-dir compare="Text">query-issue355</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="open-closed">
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="c2c-w-optional">
         <output-dir compare="Text">c2c-w-optional</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="c2c-wo-optional">
         <output-dir compare="Text">c2c-wo-optional</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="c2c">
         <output-dir compare="Text">c2c</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="open-closed">
-      <compilation-unit name="heterog-list-ordered01">
-        <output-dir compare="Text">heterog-list-ordered01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="heterog-list01">
-        <output-dir compare="Text">heterog-list01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="open-closed">
+            <compilation-unit name="heterog-list-ordered01">
+                <output-dir compare="Text">heterog-list-ordered01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="heterog-list01">
+                <output-dir compare="Text">heterog-list01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="heterog-list02">
         <output-dir compare="Text">heterog-list02</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="heterog-list03">
         <output-dir compare="Text">heterog-list03</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="open-closed">
-      <compilation-unit name="open-closed-01">
-        <output-dir compare="Text">open-closed-01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="open-closed-12">
-        <output-dir compare="Text">open-closed-12</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="open-closed-14">
-        <output-dir compare="Text">open-closed-14</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue134">
-        <output-dir compare="Text">query-issue134</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue55">
-        <output-dir compare="Text">query-issue55</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue55-1">
-        <output-dir compare="Text">query-issue55-1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue166">
-        <output-dir compare="Text">query-issue166</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue208">
-        <output-dir compare="Text">query-issue208</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue236">
-       <output-dir compare="Text">query-issue236</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="open-closed">
+            <compilation-unit name="open-closed-01">
+                <output-dir compare="Text">open-closed-01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="open-closed-12">
+                <output-dir compare="Text">open-closed-12</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="open-closed-14">
+                <output-dir compare="Text">open-closed-14</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue134">
+                <output-dir compare="Text">query-issue134</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue55">
+                <output-dir compare="Text">query-issue55</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue55-1">
+                <output-dir compare="Text">query-issue55-1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue166">
+                <output-dir compare="Text">query-issue166</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue208">
+                <output-dir compare="Text">query-issue208</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue236">
+                <output-dir compare="Text">query-issue236</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="open-closed-15">
         <output-dir compare="Text">open-closed-15</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="open-closed-16">
         <output-dir compare="Text">open-closed-16</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="open-closed-17">
         <output-dir compare="Text">open-closed-17</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="open-closed-19">
         <output-dir compare="Text">open-closed-19</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="open-closed-20">
         <output-dir compare="Text">open-closed-20</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="open-closed-21">
         <output-dir compare="Text">open-closed-21</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="open-closed-22">
         <output-dir compare="Text">open-closed-22</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="open-closed">
-      <compilation-unit name="open-closed-24">
-        <output-dir compare="Text">open-closed-24</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="open-closed-25">
-        <output-dir compare="Text">open-closed-25</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="open-closed-26">
-        <output-dir compare="Text">open-closed-26</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="open-closed">
+            <compilation-unit name="open-closed-24">
+                <output-dir compare="Text">open-closed-24</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="open-closed-25">
+                <output-dir compare="Text">open-closed-25</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="open-closed-26">
+                <output-dir compare="Text">open-closed-26</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="open-closed-28">
         <output-dir compare="Text">open-closed-28</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="open-closed">
-      <compilation-unit name="open-closed-29">
-        <output-dir compare="Text">open-closed-29</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="open-closed">
+            <compilation-unit name="open-closed-29">
+                <output-dir compare="Text">open-closed-29</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="open-closed">
       <compilation-unit name="open-closed-30">
         <output-dir compare="Text">open-closed-30</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="open-closed">
-      <compilation-unit name="open-closed-31">
-        <output-dir compare="Text">open-closed-31</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="open-closed-32">
-        <output-dir compare="Text">open-closed-32</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="open-closed-33">
-        <output-dir compare="Text">open-closed-33</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-proposal02">
-        <output-dir compare="Text">query-proposal02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-proposal">
-        <output-dir compare="Text">query-proposal</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue350">
-        <output-dir compare="Text">query-issue350</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue350-2">
-        <output-dir compare="Text">query-issue350-2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue343">
-        <output-dir compare="Text">query-issue343</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue343-2">
-        <output-dir compare="Text">query-issue343-2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue196">
-        <output-dir compare="Text">query-issue196</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue377">
-        <output-dir compare="Text">query-issue377</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue410">
-        <output-dir compare="Text">query-issue410</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue453">
-        <output-dir compare="Text">query-issue453</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue453-2">
-        <output-dir compare="Text">query-issue453-2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue456">
-        <output-dir compare="Text">query-issue456</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue465">
-        <output-dir compare="Text">query-issue465</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue258">
-        <output-dir compare="Text">query-issue258</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue423">
-        <output-dir compare="Text">query-issue423</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue423-2">
-        <output-dir compare="Text">query-issue423-2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue442">
-        <output-dir compare="Text">query-issue442</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue487">
-        <output-dir compare="Text">query-issue487</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue592">
-        <output-dir compare="Text">query-issue592</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="open-closed">
-      <compilation-unit name="query-issue625">
-        <output-dir compare="Text">query-issue625</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="quantifiers">
-    <test-case FilePath="quantifiers">
-      <compilation-unit name="everysat_01">
-        <output-dir compare="Text">everysat_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="open-closed">
+            <compilation-unit name="open-closed-31">
+                <output-dir compare="Text">open-closed-31</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="open-closed-32">
+                <output-dir compare="Text">open-closed-32</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="open-closed-33">
+                <output-dir compare="Text">open-closed-33</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-proposal02">
+                <output-dir compare="Text">query-proposal02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-proposal">
+                <output-dir compare="Text">query-proposal</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue350">
+                <output-dir compare="Text">query-issue350</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue350-2">
+                <output-dir compare="Text">query-issue350-2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue343">
+                <output-dir compare="Text">query-issue343</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue343-2">
+                <output-dir compare="Text">query-issue343-2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue196">
+                <output-dir compare="Text">query-issue196</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue377">
+                <output-dir compare="Text">query-issue377</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue410">
+                <output-dir compare="Text">query-issue410</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue453">
+                <output-dir compare="Text">query-issue453</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue453-2">
+                <output-dir compare="Text">query-issue453-2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue456">
+                <output-dir compare="Text">query-issue456</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue465">
+                <output-dir compare="Text">query-issue465</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue258">
+                <output-dir compare="Text">query-issue258</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue423">
+                <output-dir compare="Text">query-issue423</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue423-2">
+                <output-dir compare="Text">query-issue423-2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue442">
+                <output-dir compare="Text">query-issue442</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue487">
+                <output-dir compare="Text">query-issue487</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue592">
+                <output-dir compare="Text">query-issue592</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="open-closed">
+            <compilation-unit name="query-issue625">
+                <output-dir compare="Text">query-issue625</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="quantifiers">
+        <test-case FilePath="quantifiers">
+            <compilation-unit name="everysat_01">
+                <output-dir compare="Text">everysat_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="quantifiers">
       <compilation-unit name="everysat_02">
         <output-dir compare="Text">everysat_02</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="quantifiers">
       <compilation-unit name="everysat_03">
         <output-dir compare="Text">everysat_03</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="quantifiers">
-      <compilation-unit name="everysat_04">
-        <output-dir compare="Text">everysat_04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="quantifiers">
-      <compilation-unit name="somesat_01">
-        <output-dir compare="Text">somesat_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="quantifiers">
-      <compilation-unit name="somesat_02">
-        <output-dir compare="Text">somesat_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="quantifiers">
+            <compilation-unit name="everysat_04">
+                <output-dir compare="Text">everysat_04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="quantifiers">
+            <compilation-unit name="somesat_01">
+                <output-dir compare="Text">somesat_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="quantifiers">
+            <compilation-unit name="somesat_02">
+                <output-dir compare="Text">somesat_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="quantifiers">
       <compilation-unit name="somesat_03">
         <output-dir compare="Text">somesat_03</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="quantifiers">
       <compilation-unit name="somesat_04">
         <output-dir compare="Text">somesat_04</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--
+        <!--
     <test-case FilePath="quantifiers">
       <compilation-unit name="somesat_05">
         <output-dir compare="Text">somesat_05</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="quantifiers">
-      <compilation-unit name="somesat_06">
-        <output-dir compare="Text">somesat_06</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="records">
-    <test-case FilePath="records">
-      <compilation-unit name="closed-record-constructor_01">
-        <output-dir compare="Text">closed-record-constructor_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="records">
-      <compilation-unit name="closed-record-constructor_02">
-        <output-dir compare="Text">closed-record-constructor_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="records">
-      <compilation-unit name="closed-record-constructor_03">
-        <output-dir compare="Text">closed-record-constructor_03</output-dir>
-      </compilation-unit>
-    </test-case>
-    -->
-    <test-case FilePath="records">
-      <compilation-unit name="expFieldName">
-        <output-dir compare="Text">expFieldName</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="records">
-      <compilation-unit name="field-access-by-index_01">
-        <output-dir compare="Text">field-access-by-index_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="records">
-      <compilation-unit name="field-access-on-open-field">
-        <output-dir compare="Text">field-access-on-open-field</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="records">
-      <compilation-unit name="open-record-constructor_01">
-        <output-dir compare="Text">open-record-constructor_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="records">
-      <compilation-unit name="open-record-constructor_02">
-        <output-dir compare="Text">open-record-constructor_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="records">
-      <compilation-unit name="closed-closed-fieldname-conflict_issue173">
-        <output-dir compare="Text">closed-closed-fieldname-conflict_issue173</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-  <test-case FilePath="records">
-      <compilation-unit name="open-closed-fieldname-conflict_issue173">
-        <output-dir compare="Text">open-closed-fieldname-conflict_issue173</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="records">
-      <compilation-unit name="open-open-fieldname-conflict_issue173">
-        <output-dir compare="Text">open-open-fieldname-conflict_issue173</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="scan">
-    <test-case FilePath="scan">
-      <compilation-unit name="10">
-        <output-dir compare="Text">10</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="scan">
-      <compilation-unit name="20">
-        <output-dir compare="Text">20</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="scan">
-      <compilation-unit name="issue238_query_1">
-        <output-dir compare="Text">issue238_query_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="scan">
-      <compilation-unit name="issue238_query_2">
-        <output-dir compare="Text">issue238_query_2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="scan">
-      <compilation-unit name="invalid-scan-syntax">
-        <output-dir compare="Text">invalid-scan-syntax</output-dir>
-        <expected-error>SyntaxError</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="scan">
-      <compilation-unit name="30">
-        <output-dir compare="Text">30</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="scan">
-      <compilation-unit name="alltypes_01">
-        <output-dir compare="Text">alltypes_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="scan">
-      <compilation-unit name="alltypes_02">
-        <output-dir compare="Text">alltypes_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="scan">
-      <compilation-unit name="numeric_types_01">
-        <output-dir compare="Text">numeric_types_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="scan">
-      <compilation-unit name="spatial_types_01">
-        <output-dir compare="Text">spatial_types_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="quantifiers">
+            <compilation-unit name="somesat_06">
+                <output-dir compare="Text">somesat_06</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="records">
+        <test-case FilePath="records">
+            <compilation-unit name="closed-record-constructor_01">
+                <output-dir compare="Text">closed-record-constructor_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="records">
+            <compilation-unit name="closed-record-constructor_02">
+                <output-dir compare="Text">closed-record-constructor_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="records">
+            <compilation-unit name="closed-record-constructor_03">
+                <output-dir compare="Text">closed-record-constructor_03</output-dir>
+            </compilation-unit>
+        </test-case>
+        -->
+        <test-case FilePath="records">
+            <compilation-unit name="expFieldName">
+                <output-dir compare="Text">expFieldName</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="records">
+            <compilation-unit name="field-access-by-index_01">
+                <output-dir compare="Text">field-access-by-index_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="records">
+            <compilation-unit name="field-access-on-open-field">
+                <output-dir compare="Text">field-access-on-open-field</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="records">
+            <compilation-unit name="open-record-constructor_01">
+                <output-dir compare="Text">open-record-constructor_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="records">
+            <compilation-unit name="open-record-constructor_02">
+                <output-dir compare="Text">open-record-constructor_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="records">
+            <compilation-unit name="closed-closed-fieldname-conflict_issue173">
+                <output-dir compare="Text">closed-closed-fieldname-conflict_issue173</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="records">
+            <compilation-unit name="open-closed-fieldname-conflict_issue173">
+                <output-dir compare="Text">open-closed-fieldname-conflict_issue173</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="records">
+            <compilation-unit name="open-open-fieldname-conflict_issue173">
+                <output-dir compare="Text">open-open-fieldname-conflict_issue173</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="scan">
+        <test-case FilePath="scan">
+            <compilation-unit name="10">
+                <output-dir compare="Text">10</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="scan">
+            <compilation-unit name="20">
+                <output-dir compare="Text">20</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="scan">
+            <compilation-unit name="issue238_query_1">
+                <output-dir compare="Text">issue238_query_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="scan">
+            <compilation-unit name="issue238_query_2">
+                <output-dir compare="Text">issue238_query_2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="scan">
+            <compilation-unit name="invalid-scan-syntax">
+                <output-dir compare="Text">invalid-scan-syntax</output-dir>
+                <expected-error>SyntaxError</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="scan">
+            <compilation-unit name="30">
+                <output-dir compare="Text">30</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="scan">
+            <compilation-unit name="alltypes_01">
+                <output-dir compare="Text">alltypes_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="scan">
+            <compilation-unit name="alltypes_02">
+                <output-dir compare="Text">alltypes_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="scan">
+            <compilation-unit name="numeric_types_01">
+                <output-dir compare="Text">numeric_types_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="scan">
+            <compilation-unit name="spatial_types_01">
+                <output-dir compare="Text">spatial_types_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="scan">
       <compilation-unit name="spatial_types_02">
         <output-dir compare="Text">spatial_types_02</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="scan">
-      <compilation-unit name="temp_types_01">
-        <output-dir compare="Text">temp_types_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+        <test-case FilePath="scan">
+            <compilation-unit name="temp_types_01">
+                <output-dir compare="Text">temp_types_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="scan">
       <compilation-unit name="temp_types_02">
         <output-dir compare="Text">temp_types_02</output-dir>
       </compilation-unit>
     </test-case>
     -->
-  </test-group>
-  <test-group name="semistructured">
-    <test-case FilePath="semistructured">
-      <compilation-unit name="count-nullable">
-        <output-dir compare="Text">count-nullable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="semistructured">
-      <compilation-unit name="cust-filter">
-        <output-dir compare="Text">cust-filter</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="semistructured">
-      <compilation-unit name="has-param1">
-        <output-dir compare="Text">has-param1</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="similarity">
-    <test-case FilePath="similarity">
-      <compilation-unit name="edit-distance-check_ints">
-        <output-dir compare="Text">edit-distance-check_ints</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="edit-distance-check_strings">
-        <output-dir compare="Text">edit-distance-check_strings</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="edit-distance-check_unicode">
-        <output-dir compare="Text">edit-distance-check_unicode</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="edit-distance-list-is-filterable">
-        <output-dir compare="Text">edit-distance-list-is-filterable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="edit-distance-string-is-filterable">
-        <output-dir compare="Text">edit-distance-string-is-filterable</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="edit-distance_ints">
-        <output-dir compare="Text">edit-distance_ints</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="edit-distance_strings">
-        <output-dir compare="Text">edit-distance_strings</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="fuzzyeq-edit-distance">
-        <output-dir compare="Text">fuzzyeq-edit-distance</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="fuzzyeq-similarity-jaccard">
-        <output-dir compare="Text">fuzzyeq-similarity-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="prefix-len-jaccard">
-        <output-dir compare="Text">prefix-len-jaccard</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-check_ints">
-        <output-dir compare="Text">similarity-jaccard-check_ints</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-check_query">
-        <output-dir compare="Text">similarity-jaccard-check_query</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-check_strings">
-        <output-dir compare="Text">similarity-jaccard-check_strings</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-prefix-check">
-        <output-dir compare="Text">similarity-jaccard-prefix-check</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-prefix">
-        <output-dir compare="Text">similarity-jaccard-prefix</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-sorted-check_ints">
-        <output-dir compare="Text">similarity-jaccard-sorted-check_ints</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-sorted-check_query">
-        <output-dir compare="Text">similarity-jaccard-sorted-check_query</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-sorted-check_strings">
-        <output-dir compare="Text">similarity-jaccard-sorted-check_strings</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-sorted_ints">
-        <output-dir compare="Text">similarity-jaccard-sorted_ints</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-sorted_query">
-        <output-dir compare="Text">similarity-jaccard-sorted_query</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-sorted_strings">
-        <output-dir compare="Text">similarity-jaccard-sorted_strings</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard_ints">
-        <output-dir compare="Text">similarity-jaccard_ints</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard_query">
-        <output-dir compare="Text">similarity-jaccard_query</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard_strings">
-        <output-dir compare="Text">similarity-jaccard_strings</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="similarity">
-      <compilation-unit name="similarity-jaccard-check_strings_issue628">
-        <output-dir compare="Text">similarity-jaccard-check_strings_issue628</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="spatial">
-    <test-case FilePath="spatial">
-      <compilation-unit name="cell-aggregation-with-filtering">
-        <output-dir compare="Text">cell-aggregation-with-filtering</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="cell-aggregation">
-        <output-dir compare="Text">cell-aggregation</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="circle_accessor">
-        <output-dir compare="Text">circle_accessor</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="circle-intersect-circle">
-        <output-dir compare="Text">circle-intersect-circle</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="create-rtree-index">
-        <output-dir compare="Text">create-rtree-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="distance-between-points">
-        <output-dir compare="Text">distance-between-points</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="line_accessor">
-        <output-dir compare="Text">line_accessor</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="line-intersect-circle">
-        <output-dir compare="Text">line-intersect-circle</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="line-intersect-line">
-        <output-dir compare="Text">line-intersect-line</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="line-intersect-polygon">
-        <output-dir compare="Text">line-intersect-polygon</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="line-intersect-rectangle">
-        <output-dir compare="Text">line-intersect-rectangle</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="point_accessor">
-        <output-dir compare="Text">point_accessor</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="point-equals-point">
-        <output-dir compare="Text">point-equals-point</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="point-in-circle">
-        <output-dir compare="Text">point-in-circle</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="point-in-polygon">
-        <output-dir compare="Text">point-in-polygon</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="point-in-rectangle">
-        <output-dir compare="Text">point-in-rectangle</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="point-on-line">
-        <output-dir compare="Text">point-on-line</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="polygon_accessor">
-        <output-dir compare="Text">polygon_accessor</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="polygon-intersect-circle">
-        <output-dir compare="Text">polygon-intersect-circle</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="polygon-intersect-polygon">
-        <output-dir compare="Text">polygon-intersect-polygon</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="polygon-intersect-rectangle">
-        <output-dir compare="Text">polygon-intersect-rectangle</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="rectangle_accessor">
-        <output-dir compare="Text">rectangle_accessor</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="rectangle-intersect-circle">
-        <output-dir compare="Text">rectangle-intersect-circle</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="rectangle-intersect-rectangle">
-        <output-dir compare="Text">rectangle-intersect-rectangle</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="spatial">
-      <compilation-unit name="spatial-area">
-        <output-dir compare="Text">spatial-area</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="string">
-    <test-case FilePath="string">
-      <compilation-unit name="codepoint-to-string1">
-        <output-dir compare="Text">codepoint-to-string1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="codepoint-to-string2">
-        <output-dir compare="Text">codepoint-to-string2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="concat_01">
-        <output-dir compare="Text">concat_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="concat_02">
-        <output-dir compare="Text">concat_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="contains_01">
-        <output-dir compare="Text">contains_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="cpttostr01">
-        <output-dir compare="Text">cpttostr01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="cpttostr02">
-        <output-dir compare="Text">cpttostr02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="cpttostr04">
-        <output-dir compare="Text">cpttostr04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="end-with1">
-        <output-dir compare="Text">end-with1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="end-with2">
-        <output-dir compare="Text">end-with2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="end-with3">
-        <output-dir compare="Text">end-with3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="end-with4">
-        <output-dir compare="Text">end-with4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="end-with5">
-        <output-dir compare="Text">end-with5</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="ends-with_01">
-        <output-dir compare="Text">ends-with_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="endwith02">
-        <output-dir compare="Text">endwith02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="endwith03">
-        <output-dir compare="Text">endwith03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="escapes01">
-        <output-dir compare="Text">escapes01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="escapes02">
-        <output-dir compare="Text">escapes02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="length_01">
-        <output-dir compare="Text">length_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="length_02">
-        <output-dir compare="Text">length_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="like_01">
-        <output-dir compare="Text">like_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="like_null">
-        <output-dir compare="Text">like_null</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="lowercase">
-        <output-dir compare="Text">lowercase</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches02">
-        <output-dir compare="Text">matches02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches03">
-        <output-dir compare="Text">matches03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches04">
-        <output-dir compare="Text">matches04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches05">
-        <output-dir compare="Text">matches05</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches06">
-        <output-dir compare="Text">matches06</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches1">
-        <output-dir compare="Text">matches1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches11">
-        <output-dir compare="Text">matches11</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches2">
-        <output-dir compare="Text">matches2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches21">
-        <output-dir compare="Text">matches21</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches22">
-        <output-dir compare="Text">matches22</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches23">
-        <output-dir compare="Text">matches23</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matches3">
-        <output-dir compare="Text">matches3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="matchesnull">
-        <output-dir compare="Text">matchesnull</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="replace1">
-        <output-dir compare="Text">replace1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="replace2">
-        <output-dir compare="Text">replace2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="replace21">
-        <output-dir compare="Text">replace21</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="replace22">
-        <output-dir compare="Text">replace22</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="replace3">
-        <output-dir compare="Text">replace3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="start-with1">
-        <output-dir compare="Text">start-with1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="start-with2">
-        <output-dir compare="Text">start-with2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="start-with3">
-        <output-dir compare="Text">start-with3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="start-with4">
-        <output-dir compare="Text">start-with4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="start-with5">
-        <output-dir compare="Text">start-with5</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="starts-with_01">
-        <output-dir compare="Text">starts-with_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="startwith02">
-        <output-dir compare="Text">startwith02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--
+    </test-group>
+    <test-group name="semistructured">
+        <test-case FilePath="semistructured">
+            <compilation-unit name="count-nullable">
+                <output-dir compare="Text">count-nullable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="semistructured">
+            <compilation-unit name="cust-filter">
+                <output-dir compare="Text">cust-filter</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="semistructured">
+            <compilation-unit name="has-param1">
+                <output-dir compare="Text">has-param1</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="similarity">
+        <test-case FilePath="similarity">
+            <compilation-unit name="edit-distance-check_ints">
+                <output-dir compare="Text">edit-distance-check_ints</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="edit-distance-check_strings">
+                <output-dir compare="Text">edit-distance-check_strings</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="edit-distance-check_unicode">
+                <output-dir compare="Text">edit-distance-check_unicode</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="edit-distance-list-is-filterable">
+                <output-dir compare="Text">edit-distance-list-is-filterable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="edit-distance-string-is-filterable">
+                <output-dir compare="Text">edit-distance-string-is-filterable</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="edit-distance_ints">
+                <output-dir compare="Text">edit-distance_ints</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="edit-distance_strings">
+                <output-dir compare="Text">edit-distance_strings</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="fuzzyeq-edit-distance">
+                <output-dir compare="Text">fuzzyeq-edit-distance</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="fuzzyeq-similarity-jaccard">
+                <output-dir compare="Text">fuzzyeq-similarity-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="prefix-len-jaccard">
+                <output-dir compare="Text">prefix-len-jaccard</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-check_ints">
+                <output-dir compare="Text">similarity-jaccard-check_ints</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-check_query">
+                <output-dir compare="Text">similarity-jaccard-check_query</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-check_strings">
+                <output-dir compare="Text">similarity-jaccard-check_strings</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-prefix-check">
+                <output-dir compare="Text">similarity-jaccard-prefix-check</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-prefix">
+                <output-dir compare="Text">similarity-jaccard-prefix</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-sorted-check_ints">
+                <output-dir compare="Text">similarity-jaccard-sorted-check_ints</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-sorted-check_query">
+                <output-dir compare="Text">similarity-jaccard-sorted-check_query</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-sorted-check_strings">
+                <output-dir compare="Text">similarity-jaccard-sorted-check_strings</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-sorted_ints">
+                <output-dir compare="Text">similarity-jaccard-sorted_ints</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-sorted_query">
+                <output-dir compare="Text">similarity-jaccard-sorted_query</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-sorted_strings">
+                <output-dir compare="Text">similarity-jaccard-sorted_strings</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard_ints">
+                <output-dir compare="Text">similarity-jaccard_ints</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard_query">
+                <output-dir compare="Text">similarity-jaccard_query</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard_strings">
+                <output-dir compare="Text">similarity-jaccard_strings</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="similarity">
+            <compilation-unit name="similarity-jaccard-check_strings_issue628">
+                <output-dir compare="Text">similarity-jaccard-check_strings_issue628</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="spatial">
+        <test-case FilePath="spatial">
+            <compilation-unit name="cell-aggregation-with-filtering">
+                <output-dir compare="Text">cell-aggregation-with-filtering</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="cell-aggregation">
+                <output-dir compare="Text">cell-aggregation</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="circle_accessor">
+                <output-dir compare="Text">circle_accessor</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="circle-intersect-circle">
+                <output-dir compare="Text">circle-intersect-circle</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="create-rtree-index">
+                <output-dir compare="Text">create-rtree-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="distance-between-points">
+                <output-dir compare="Text">distance-between-points</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="line_accessor">
+                <output-dir compare="Text">line_accessor</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="line-intersect-circle">
+                <output-dir compare="Text">line-intersect-circle</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="line-intersect-line">
+                <output-dir compare="Text">line-intersect-line</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="line-intersect-polygon">
+                <output-dir compare="Text">line-intersect-polygon</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="line-intersect-rectangle">
+                <output-dir compare="Text">line-intersect-rectangle</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="point_accessor">
+                <output-dir compare="Text">point_accessor</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="point-equals-point">
+                <output-dir compare="Text">point-equals-point</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="point-in-circle">
+                <output-dir compare="Text">point-in-circle</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="point-in-polygon">
+                <output-dir compare="Text">point-in-polygon</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="point-in-rectangle">
+                <output-dir compare="Text">point-in-rectangle</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="point-on-line">
+                <output-dir compare="Text">point-on-line</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="polygon_accessor">
+                <output-dir compare="Text">polygon_accessor</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="polygon-intersect-circle">
+                <output-dir compare="Text">polygon-intersect-circle</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="polygon-intersect-polygon">
+                <output-dir compare="Text">polygon-intersect-polygon</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="polygon-intersect-rectangle">
+                <output-dir compare="Text">polygon-intersect-rectangle</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="rectangle_accessor">
+                <output-dir compare="Text">rectangle_accessor</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="rectangle-intersect-circle">
+                <output-dir compare="Text">rectangle-intersect-circle</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="rectangle-intersect-rectangle">
+                <output-dir compare="Text">rectangle-intersect-rectangle</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="spatial">
+            <compilation-unit name="spatial-area">
+                <output-dir compare="Text">spatial-area</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="string">
+        <test-case FilePath="string">
+            <compilation-unit name="codepoint-to-string1">
+                <output-dir compare="Text">codepoint-to-string1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="codepoint-to-string2">
+                <output-dir compare="Text">codepoint-to-string2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="concat_01">
+                <output-dir compare="Text">concat_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="concat_02">
+                <output-dir compare="Text">concat_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="contains_01">
+                <output-dir compare="Text">contains_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="cpttostr01">
+                <output-dir compare="Text">cpttostr01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="cpttostr02">
+                <output-dir compare="Text">cpttostr02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="cpttostr04">
+                <output-dir compare="Text">cpttostr04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="end-with1">
+                <output-dir compare="Text">end-with1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="end-with2">
+                <output-dir compare="Text">end-with2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="end-with3">
+                <output-dir compare="Text">end-with3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="end-with4">
+                <output-dir compare="Text">end-with4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="end-with5">
+                <output-dir compare="Text">end-with5</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="ends-with_01">
+                <output-dir compare="Text">ends-with_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="endwith02">
+                <output-dir compare="Text">endwith02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="endwith03">
+                <output-dir compare="Text">endwith03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="escapes01">
+                <output-dir compare="Text">escapes01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="escapes02">
+                <output-dir compare="Text">escapes02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="length_01">
+                <output-dir compare="Text">length_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="length_02">
+                <output-dir compare="Text">length_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="like_01">
+                <output-dir compare="Text">like_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="like_null">
+                <output-dir compare="Text">like_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="lowercase">
+                <output-dir compare="Text">lowercase</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches02">
+                <output-dir compare="Text">matches02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches03">
+                <output-dir compare="Text">matches03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches04">
+                <output-dir compare="Text">matches04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches05">
+                <output-dir compare="Text">matches05</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches06">
+                <output-dir compare="Text">matches06</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches1">
+                <output-dir compare="Text">matches1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches11">
+                <output-dir compare="Text">matches11</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches2">
+                <output-dir compare="Text">matches2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches21">
+                <output-dir compare="Text">matches21</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches22">
+                <output-dir compare="Text">matches22</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches23">
+                <output-dir compare="Text">matches23</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matches3">
+                <output-dir compare="Text">matches3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="matchesnull">
+                <output-dir compare="Text">matchesnull</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="replace1">
+                <output-dir compare="Text">replace1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="replace2">
+                <output-dir compare="Text">replace2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="replace21">
+                <output-dir compare="Text">replace21</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="replace22">
+                <output-dir compare="Text">replace22</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="replace3">
+                <output-dir compare="Text">replace3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="start-with1">
+                <output-dir compare="Text">start-with1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="start-with2">
+                <output-dir compare="Text">start-with2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="start-with3">
+                <output-dir compare="Text">start-with3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="start-with4">
+                <output-dir compare="Text">start-with4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="start-with5">
+                <output-dir compare="Text">start-with5</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="starts-with_01">
+                <output-dir compare="Text">starts-with_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="startwith02">
+                <output-dir compare="Text">startwith02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--
     <test-case FilePath="string">
       <compilation-unit name="startwith03">
         <output-dir compare="Text">startwith03</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="string">
-      <compilation-unit name="strconcat01">
-        <output-dir compare="Text">strconcat01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="strconcat02">
-        <output-dir compare="Text">strconcat02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="string-concat1">
-        <output-dir compare="Text">string-concat1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="string-equal1">
-        <output-dir compare="Text">string-equal1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="string-equal2">
-        <output-dir compare="Text">string-equal2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="string-equal3">
-        <output-dir compare="Text">string-equal3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="string-equal4">
-        <output-dir compare="Text">string-equal4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="string-join1">
-        <output-dir compare="Text">string-join1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="string-to-codepoint">
-        <output-dir compare="Text">string-to-codepoint</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="string-to-codepoint1">
-        <output-dir compare="Text">string-to-codepoint1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="string-to-codepoint2">
-        <output-dir compare="Text">string-to-codepoint2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="strlen02">
-        <output-dir compare="Text">strlen02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="strlen03">
-        <output-dir compare="Text">strlen03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="strtocpt01">
-        <output-dir compare="Text">strtocpt01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="strtocpt02">
-        <output-dir compare="Text">strtocpt02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="strtocpt03">
-        <output-dir compare="Text">strtocpt03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substr01">
-        <output-dir compare="Text">substr01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substr04">
-        <output-dir compare="Text">substr04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substr05">
-        <output-dir compare="Text">substr05</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substr06">
-        <output-dir compare="Text">substr06</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring-after-1">
-        <output-dir compare="Text">substring-after-1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring-after-2">
-        <output-dir compare="Text">substring-after-2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring-after-3">
-        <output-dir compare="Text">substring-after-3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring-after-4">
-        <output-dir compare="Text">substring-after-4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring-before-1">
-        <output-dir compare="Text">substring-before-1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring-before-2">
-        <output-dir compare="Text">substring-before-2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring-before-3">
-        <output-dir compare="Text">substring-before-3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring2-1">
-        <output-dir compare="Text">substring2-1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring2-2">
-        <output-dir compare="Text">substring2-2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring2-3">
-        <output-dir compare="Text">substring2-3</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring2-4">
-        <output-dir compare="Text">substring2-4</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="substring_01">
-        <output-dir compare="Text">substring_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="toLowerCase02">
-        <output-dir compare="Text">toLowerCase02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="toLowerCase03">
-        <output-dir compare="Text">toLowerCase03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="toLowerCase04">
-        <output-dir compare="Text">toLowerCase04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="string">
-      <compilation-unit name="uppercase">
-        <output-dir compare="Text">uppercase</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="subset-collection">
-    <test-case FilePath="subset-collection">
-      <compilation-unit name="01">
-        <output-dir compare="Text">01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="subset-collection">
-      <compilation-unit name="02">
-        <output-dir compare="Text">02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="subset-collection">
-      <compilation-unit name="03">
-        <output-dir compare="Text">03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="subset-collection">
-      <compilation-unit name="05">
-        <output-dir compare="Text">05</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="subset-collection">
-      <compilation-unit name="06">
-        <output-dir compare="Text">06</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="subset-collection">
-      <compilation-unit name="07">
-        <output-dir compare="Text">07</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="tokenizers">
-    <test-case FilePath="tokenizers">
-      <compilation-unit name="counthashed-gram-tokens_01">
-        <output-dir compare="Text">counthashed-gram-tokens_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tokenizers">
-      <compilation-unit name="counthashed-gram-tokens_02">
-        <output-dir compare="Text">counthashed-gram-tokens_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tokenizers">
-      <compilation-unit name="counthashed-word-tokens_01">
-        <output-dir compare="Text">counthashed-word-tokens_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tokenizers">
-      <compilation-unit name="gram-tokens_01">
-        <output-dir compare="Text">gram-tokens_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tokenizers">
-      <compilation-unit name="gram-tokens_02">
-        <output-dir compare="Text">gram-tokens_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tokenizers">
-      <compilation-unit name="hashed-gram-tokens_01">
-        <output-dir compare="Text">hashed-gram-tokens_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tokenizers">
-      <compilation-unit name="hashed-gram-tokens_02">
-        <output-dir compare="Text">hashed-gram-tokens_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tokenizers">
-      <compilation-unit name="hashed-word-tokens_01">
-        <output-dir compare="Text">hashed-word-tokens_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tokenizers">
-      <compilation-unit name="word-tokens_01">
-        <output-dir compare="Text">word-tokens_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tokenizers">
-      <compilation-unit name="word-tokens_02">
-        <output-dir compare="Text">word-tokens_02</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="tpch">
-    <test-case FilePath="tpch">
-      <compilation-unit name="distinct_by">
-        <output-dir compare="Text">distinct_by</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="group_no_agg">
-        <output-dir compare="Text">group_no_agg</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="nest_aggregate">
-        <output-dir compare="Text">nest_aggregate</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="query-issue638">
-        <output-dir compare="Text">query-issue638</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="query-issue785">
-        <output-dir compare="Text">query-issue785</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="query-issue785-2">
-        <output-dir compare="Text">query-issue785-2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="query-issue786">
-        <output-dir compare="Text">query-issue786</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="query-issue601">
-        <output-dir compare="Text">query-issue601</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q10_returned_item">
-        <output-dir compare="Text">q10_returned_item</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q10_returned_item_int64">
-       <output-dir compare="Text">q10_returned_item_int64</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q11_important_stock">
-        <output-dir compare="Text">q11_important_stock</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q12_shipping">
-        <output-dir compare="Text">q12_shipping</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q13_customer_distribution">
-        <output-dir compare="Text">q13_customer_distribution</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q14_promotion_effect">
-        <output-dir compare="Text">q14_promotion_effect</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q15_top_supplier">
-        <output-dir compare="Text">q15_top_supplier</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q16_parts_supplier_relationship">
-        <output-dir compare="Text">q16_parts_supplier_relationship</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q17_small_quantity_order_revenue">
-        <output-dir compare="Text">q17_small_quantity_order_revenue</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q17_large_gby_variant">
-        <output-dir compare="Text">q17_large_gby_variant</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q18_large_volume_customer">
-        <output-dir compare="Text">q18_large_volume_customer</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q19_discounted_revenue">
-        <output-dir compare="Text">q19_discounted_revenue</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q01_pricing_summary_report_nt">
-        <output-dir compare="Text">q01_pricing_summary_report_nt</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q20_potential_part_promotion">
-        <output-dir compare="Text">q20_potential_part_promotion</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q21_suppliers_who_kept_orders_waiting">
-        <output-dir compare="Text">q21_suppliers_who_kept_orders_waiting</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q22_global_sales_opportunity">
-        <output-dir compare="Text">q22_global_sales_opportunity</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q02_minimum_cost_supplier">
-        <output-dir compare="Text">q02_minimum_cost_supplier</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q03_shipping_priority_nt">
-        <output-dir compare="Text">q03_shipping_priority_nt</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q04_order_priority">
-        <output-dir compare="Text">q04_order_priority</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q05_local_supplier_volume">
-        <output-dir compare="Text">q05_local_supplier_volume</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q06_forecast_revenue_change">
-        <output-dir compare="Text">q06_forecast_revenue_change</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q07_volume_shipping">
-        <output-dir compare="Text">q07_volume_shipping</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q08_national_market_share">
-        <output-dir compare="Text">q08_national_market_share</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="tpch">
-      <compilation-unit name="q09_product_type_profit_nt">
-        <output-dir compare="Text">q09_product_type_profit_nt</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="writers">
-    <test-case FilePath="writers">
-      <compilation-unit name="print_01">
-        <output-dir compare="Text">print_01</output-dir>
-      </compilation-unit>
-    </test-case>
-<!--  TODO(madhusudancs): Enable this test when REST API supports serialized output support.
+        <test-case FilePath="string">
+            <compilation-unit name="strconcat01">
+                <output-dir compare="Text">strconcat01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="strconcat02">
+                <output-dir compare="Text">strconcat02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="string-concat1">
+                <output-dir compare="Text">string-concat1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="string-equal1">
+                <output-dir compare="Text">string-equal1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="string-equal2">
+                <output-dir compare="Text">string-equal2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="string-equal3">
+                <output-dir compare="Text">string-equal3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="string-equal4">
+                <output-dir compare="Text">string-equal4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="string-join1">
+                <output-dir compare="Text">string-join1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="string-to-codepoint">
+                <output-dir compare="Text">string-to-codepoint</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="string-to-codepoint1">
+                <output-dir compare="Text">string-to-codepoint1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="string-to-codepoint2">
+                <output-dir compare="Text">string-to-codepoint2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="strlen02">
+                <output-dir compare="Text">strlen02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="strlen03">
+                <output-dir compare="Text">strlen03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="strtocpt01">
+                <output-dir compare="Text">strtocpt01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="strtocpt02">
+                <output-dir compare="Text">strtocpt02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="strtocpt03">
+                <output-dir compare="Text">strtocpt03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substr01">
+                <output-dir compare="Text">substr01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substr04">
+                <output-dir compare="Text">substr04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substr05">
+                <output-dir compare="Text">substr05</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substr06">
+                <output-dir compare="Text">substr06</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring-after-1">
+                <output-dir compare="Text">substring-after-1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring-after-2">
+                <output-dir compare="Text">substring-after-2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring-after-3">
+                <output-dir compare="Text">substring-after-3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring-after-4">
+                <output-dir compare="Text">substring-after-4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring-before-1">
+                <output-dir compare="Text">substring-before-1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring-before-2">
+                <output-dir compare="Text">substring-before-2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring-before-3">
+                <output-dir compare="Text">substring-before-3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring2-1">
+                <output-dir compare="Text">substring2-1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring2-2">
+                <output-dir compare="Text">substring2-2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring2-3">
+                <output-dir compare="Text">substring2-3</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring2-4">
+                <output-dir compare="Text">substring2-4</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="substring_01">
+                <output-dir compare="Text">substring_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="toLowerCase02">
+                <output-dir compare="Text">toLowerCase02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="toLowerCase03">
+                <output-dir compare="Text">toLowerCase03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="toLowerCase04">
+                <output-dir compare="Text">toLowerCase04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="string">
+            <compilation-unit name="uppercase">
+                <output-dir compare="Text">uppercase</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="subset-collection">
+        <test-case FilePath="subset-collection">
+            <compilation-unit name="01">
+                <output-dir compare="Text">01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="subset-collection">
+            <compilation-unit name="02">
+                <output-dir compare="Text">02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="subset-collection">
+            <compilation-unit name="03">
+                <output-dir compare="Text">03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="subset-collection">
+            <compilation-unit name="05">
+                <output-dir compare="Text">05</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="subset-collection">
+            <compilation-unit name="06">
+                <output-dir compare="Text">06</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="subset-collection">
+            <compilation-unit name="07">
+                <output-dir compare="Text">07</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="tokenizers">
+        <test-case FilePath="tokenizers">
+            <compilation-unit name="counthashed-gram-tokens_01">
+                <output-dir compare="Text">counthashed-gram-tokens_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tokenizers">
+            <compilation-unit name="counthashed-gram-tokens_02">
+                <output-dir compare="Text">counthashed-gram-tokens_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tokenizers">
+            <compilation-unit name="counthashed-word-tokens_01">
+                <output-dir compare="Text">counthashed-word-tokens_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tokenizers">
+            <compilation-unit name="gram-tokens_01">
+                <output-dir compare="Text">gram-tokens_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tokenizers">
+            <compilation-unit name="gram-tokens_02">
+                <output-dir compare="Text">gram-tokens_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tokenizers">
+            <compilation-unit name="hashed-gram-tokens_01">
+                <output-dir compare="Text">hashed-gram-tokens_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tokenizers">
+            <compilation-unit name="hashed-gram-tokens_02">
+                <output-dir compare="Text">hashed-gram-tokens_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tokenizers">
+            <compilation-unit name="hashed-word-tokens_01">
+                <output-dir compare="Text">hashed-word-tokens_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tokenizers">
+            <compilation-unit name="word-tokens_01">
+                <output-dir compare="Text">word-tokens_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tokenizers">
+            <compilation-unit name="word-tokens_02">
+                <output-dir compare="Text">word-tokens_02</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="tpch">
+        <test-case FilePath="tpch">
+            <compilation-unit name="distinct_by">
+                <output-dir compare="Text">distinct_by</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="group_no_agg">
+                <output-dir compare="Text">group_no_agg</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="nest_aggregate">
+                <output-dir compare="Text">nest_aggregate</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="query-issue638">
+                <output-dir compare="Text">query-issue638</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="query-issue785">
+                <output-dir compare="Text">query-issue785</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="query-issue785-2">
+                <output-dir compare="Text">query-issue785-2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="query-issue786">
+                <output-dir compare="Text">query-issue786</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="query-issue601">
+                <output-dir compare="Text">query-issue601</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q10_returned_item">
+                <output-dir compare="Text">q10_returned_item</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q10_returned_item_int64">
+                <output-dir compare="Text">q10_returned_item_int64</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q11_important_stock">
+                <output-dir compare="Text">q11_important_stock</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q12_shipping">
+                <output-dir compare="Text">q12_shipping</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q13_customer_distribution">
+                <output-dir compare="Text">q13_customer_distribution</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q14_promotion_effect">
+                <output-dir compare="Text">q14_promotion_effect</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q15_top_supplier">
+                <output-dir compare="Text">q15_top_supplier</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q16_parts_supplier_relationship">
+                <output-dir compare="Text">q16_parts_supplier_relationship</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q17_small_quantity_order_revenue">
+                <output-dir compare="Text">q17_small_quantity_order_revenue</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q17_large_gby_variant">
+                <output-dir compare="Text">q17_large_gby_variant</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q18_large_volume_customer">
+                <output-dir compare="Text">q18_large_volume_customer</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q19_discounted_revenue">
+                <output-dir compare="Text">q19_discounted_revenue</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q01_pricing_summary_report_nt">
+                <output-dir compare="Text">q01_pricing_summary_report_nt</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q20_potential_part_promotion">
+                <output-dir compare="Text">q20_potential_part_promotion</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q21_suppliers_who_kept_orders_waiting">
+                <output-dir compare="Text">q21_suppliers_who_kept_orders_waiting</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q22_global_sales_opportunity">
+                <output-dir compare="Text">q22_global_sales_opportunity</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q02_minimum_cost_supplier">
+                <output-dir compare="Text">q02_minimum_cost_supplier</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q03_shipping_priority_nt">
+                <output-dir compare="Text">q03_shipping_priority_nt</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q04_order_priority">
+                <output-dir compare="Text">q04_order_priority</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q05_local_supplier_volume">
+                <output-dir compare="Text">q05_local_supplier_volume</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q06_forecast_revenue_change">
+                <output-dir compare="Text">q06_forecast_revenue_change</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q07_volume_shipping">
+                <output-dir compare="Text">q07_volume_shipping</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q08_national_market_share">
+                <output-dir compare="Text">q08_national_market_share</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="tpch">
+            <compilation-unit name="q09_product_type_profit_nt">
+                <output-dir compare="Text">q09_product_type_profit_nt</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="writers">
+        <test-case FilePath="writers">
+            <compilation-unit name="print_01">
+                <output-dir compare="Text">print_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--  TODO(madhusudancs): Enable this test when REST API supports serialized output support.
     <test-case FilePath="writers">
       <compilation-unit name="serialized_01">
         <output-dir compare="Text">serialized_01</output-dir>
       </compilation-unit>
     </test-case>
 -->
-  </test-group>
-  <test-group name="cross-dataverse">
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv01">
-        <output-dir compare="Text">cross-dv01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv02">
-        <output-dir compare="Text">cross-dv02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv03">
-        <output-dir compare="Text">cross-dv03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv04">
-        <output-dir compare="Text">cross-dv04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv07">
-        <output-dir compare="Text">cross-dv07</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--NotImplementedException: No binary comparator factory implemented for type RECORD.
+    </test-group>
+    <test-group name="cross-dataverse">
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv01">
+                <output-dir compare="Text">cross-dv01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv02">
+                <output-dir compare="Text">cross-dv02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv03">
+                <output-dir compare="Text">cross-dv03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv04">
+                <output-dir compare="Text">cross-dv04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv07">
+                <output-dir compare="Text">cross-dv07</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--NotImplementedException: No binary comparator factory implemented for type RECORD.
     <test-case FilePath="cross-dataverse">
       <compilation-unit name="cross-dv08">
         <output-dir compare="Text">cross-dv08</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv09">
-        <output-dir compare="Text">cross-dv09</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv11">
-        <output-dir compare="Text">cross-dv11</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv12">
-        <output-dir compare="Text">cross-dv12</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv13">
-        <output-dir compare="Text">cross-dv13</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv14">
-        <output-dir compare="Text">cross-dv14</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv15">
-        <output-dir compare="Text">cross-dv15</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv16">
-        <output-dir compare="Text">cross-dv16</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <!--NotImplementedException: No binary comparator factory implemented for type RECORD.
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv09">
+                <output-dir compare="Text">cross-dv09</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv11">
+                <output-dir compare="Text">cross-dv11</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv12">
+                <output-dir compare="Text">cross-dv12</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv13">
+                <output-dir compare="Text">cross-dv13</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv14">
+                <output-dir compare="Text">cross-dv14</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv15">
+                <output-dir compare="Text">cross-dv15</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv16">
+                <output-dir compare="Text">cross-dv16</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <!--NotImplementedException: No binary comparator factory implemented for type RECORD.
     <test-case FilePath="cross-dataverse">
       <compilation-unit name="cross-dv17">
         <output-dir compare="Text">cross-dv17</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!--NotImplementedException: No binary comparator factory implemented for type RECORD.
+        <!--NotImplementedException: No binary comparator factory implemented for type RECORD.
     <test-case FilePath="cross-dataverse">
       <compilation-unit name="cross-dv18">
         <output-dir compare="Text">cross-dv18</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv19">
-        <output-dir compare="Text">cross-dv19</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="cross-dv20">
-        <output-dir compare="Text">cross-dv20</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="insert_across_dataverses">
-        <output-dir compare="Text">insert_across_dataverses</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="cross-dataverse">
-      <compilation-unit name="join_across_dataverses">
-        <output-dir compare="Text">join_across_dataverses</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="user-defined-functions">
-      <test-case FilePath="user-defined-functions">
-      <compilation-unit name="query-issue218-2">
-        <output-dir compare="Text">query-issue218-2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="query-issue218">
-        <output-dir compare="Text">query-issue218</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="query-issue201">
-        <output-dir compare="Text">query-issue201</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="query-issue172">
-        <output-dir compare="Text">query-issue172</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="query-issue455">
-        <output-dir compare="Text">query-issue455</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="query-issue489">
-        <output-dir compare="Text">query-issue489</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf01">
-        <output-dir compare="Text">udf01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf02">
-        <output-dir compare="Text">udf02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!-- causes NPE: Issue 200
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv19">
+                <output-dir compare="Text">cross-dv19</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="cross-dv20">
+                <output-dir compare="Text">cross-dv20</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="insert_across_dataverses">
+                <output-dir compare="Text">insert_across_dataverses</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="cross-dataverse">
+            <compilation-unit name="join_across_dataverses">
+                <output-dir compare="Text">join_across_dataverses</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="user-defined-functions">
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="query-issue218-2">
+                <output-dir compare="Text">query-issue218-2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="query-issue218">
+                <output-dir compare="Text">query-issue218</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="query-issue201">
+                <output-dir compare="Text">query-issue201</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="query-issue172">
+                <output-dir compare="Text">query-issue172</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="query-issue455">
+                <output-dir compare="Text">query-issue455</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="query-issue489">
+                <output-dir compare="Text">query-issue489</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf01">
+                <output-dir compare="Text">udf01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf02">
+                <output-dir compare="Text">udf02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!-- causes NPE: Issue 200
     <test-case FilePath="user-defined-functions">
       <compilation-unit name="udf03">
         <output-dir compare="Text">udf03</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf04">
-        <output-dir compare="Text">udf04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf05">
-        <output-dir compare="Text">udf05</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf06">
-        <output-dir compare="Text">udf06</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf07">
-        <output-dir compare="Text">udf07</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf08">
-        <output-dir compare="Text">udf08</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf09">
-        <output-dir compare="Text">udf09</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf10">
-        <output-dir compare="Text">udf10</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf11">
-        <output-dir compare="Text">udf11</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf12">
-        <output-dir compare="Text">udf12</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf13">
-        <output-dir compare="Text">udf13</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf14">
-        <output-dir compare="Text">udf14</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!-- Issue 166
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf04">
+                <output-dir compare="Text">udf04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf05">
+                <output-dir compare="Text">udf05</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf06">
+                <output-dir compare="Text">udf06</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf07">
+                <output-dir compare="Text">udf07</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf08">
+                <output-dir compare="Text">udf08</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf09">
+                <output-dir compare="Text">udf09</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf10">
+                <output-dir compare="Text">udf10</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf11">
+                <output-dir compare="Text">udf11</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf12">
+                <output-dir compare="Text">udf12</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf13">
+                <output-dir compare="Text">udf13</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf14">
+                <output-dir compare="Text">udf14</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!-- Issue 166
     <test-case FilePath="user-defined-functions">
       <compilation-unit name="udf15">
         <output-dir compare="Text">udf15</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf16">
-        <output-dir compare="Text">udf16</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf17">
-        <output-dir compare="Text">udf17</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf18">
-        <output-dir compare="Text">udf18</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf19">
-        <output-dir compare="Text">udf19</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf20">
-        <output-dir compare="Text">udf20</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf21">
-        <output-dir compare="Text">udf21</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf22">
-        <output-dir compare="Text">udf22</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf23">
-        <output-dir compare="Text">udf23</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!-- Issue 195
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf16">
+                <output-dir compare="Text">udf16</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf17">
+                <output-dir compare="Text">udf17</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf18">
+                <output-dir compare="Text">udf18</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf19">
+                <output-dir compare="Text">udf19</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf20">
+                <output-dir compare="Text">udf20</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf21">
+                <output-dir compare="Text">udf21</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf22">
+                <output-dir compare="Text">udf22</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf23">
+                <output-dir compare="Text">udf23</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!-- Issue 195
     <test-case FilePath="user-defined-functions">
       <compilation-unit name="udf24">
         <output-dir compare="Text">udf24</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <!-- Issue 218
+        <!-- Issue 218
     <test-case FilePath="user-defined-functions">
       <compilation-unit name="udf25">
         <output-dir compare="Text">udf25</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf26">
-        <output-dir compare="Text">udf26</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf27">
-        <output-dir compare="Text">udf27</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf28">
-        <output-dir compare="Text">udf28</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf29">
-        <output-dir compare="Text">udf29</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="udf30">
-        <output-dir compare="Text">udf30</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="f01">
-        <output-dir compare="Text">f01</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="user-defined-functions">
-      <compilation-unit name="invoke-private-function">
-        <output-dir compare="Text">invoke-private-function</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="load">
-    <test-case FilePath="load">
-      <compilation-unit name="csv_01">
-        <output-dir compare="Text">csv_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="csv_02">
-        <output-dir compare="Text">csv_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="csv_03">
-        <output-dir compare="Text">csv_03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="csv_04">
-        <output-dir compare="Text">csv_04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="csv_05">
-        <output-dir compare="Text">csv_05</output-dir>
-        <expected-error>edu.uci.ics.hyracks.api.exceptions.HyracksDataException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="csv_06">
-        <output-dir compare="Text">csv_06</output-dir>
-        <expected-error>edu.uci.ics.hyracks.api.exceptions.HyracksDataException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="csv_07">
-        <output-dir compare="Text">csv_07</output-dir>
-        <expected-error>edu.uci.ics.hyracks.api.exceptions.HyracksDataException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="issue14_query">
-        <output-dir compare="Text">none</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="issue315_query">
-        <output-dir compare="Text">none</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="issue289_query">
-        <output-dir compare="Text">issue289_query</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="issue650_query">
-        <output-dir compare="Text">none</output-dir>
-        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="type_promotion_0">
-        <output-dir compare="Text">type_promotion_0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="escapes01">
-        <output-dir compare="Text">escapes01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="escapes02">
-        <output-dir compare="Text">escapes02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="escapes-err-1">
-        <output-dir compare="Text">none</output-dir>
-        <expected-error>edu.uci.ics.hyracks.api.exceptions.HyracksException</expected-error>
-      </compilation-unit>
-    </test-case>
-     <test-case FilePath="user-defined-functions">
-      <compilation-unit name="query-issue244">
-        <output-dir compare="Text">query-issue244</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="duplicate-key-error">
-        <output-dir compare="Text">none</output-dir>
-        <expected-error>edu.uci.ics.hyracks.api.exceptions.HyracksException</expected-error>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="load">
-      <compilation-unit name="issue610_adm_token_end_collection">
-        <output-dir compare="Text">issue610_adm_token_end_collection</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="hints">
-    <test-case FilePath="hints">
-      <compilation-unit name="issue_251_dataset_hint_5">
-        <output-dir compare="Text">issue_251_dataset_hint_5</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="hints">
-      <compilation-unit name="issue_251_dataset_hint_6">
-        <output-dir compare="Text">issue_251_dataset_hint_6</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="hints">
-      <compilation-unit name="issue_251_dataset_hint_7">
-        <output-dir compare="Text">issue_251_dataset_hint_7</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="feeds">
-    <test-case FilePath="feeds">
-      <compilation-unit name="feeds_01">
-        <output-dir compare="Text">feeds_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="feeds">
-      <compilation-unit name="feeds_02">
-        <output-dir compare="Text">feeds_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="feeds">
-      <compilation-unit name="feeds_03">
-        <output-dir compare="Text">feeds_03</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="feeds">
-      <compilation-unit name="feeds_04">
-        <output-dir compare="Text">feeds_04</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="feeds">
-      <compilation-unit name="feeds_05">
-        <output-dir compare="Text">feeds_05</output-dir>
-      </compilation-unit>
-    </test-case>
-    <!--Disable it because of sporadic failures. Raman will re-enable it.
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf26">
+                <output-dir compare="Text">udf26</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf27">
+                <output-dir compare="Text">udf27</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf28">
+                <output-dir compare="Text">udf28</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf29">
+                <output-dir compare="Text">udf29</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="udf30">
+                <output-dir compare="Text">udf30</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="f01">
+                <output-dir compare="Text">f01</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="invoke-private-function">
+                <output-dir compare="Text">invoke-private-function</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="load">
+        <test-case FilePath="load">
+            <compilation-unit name="csv_01">
+                <output-dir compare="Text">csv_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="csv_02">
+                <output-dir compare="Text">csv_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="csv_03">
+                <output-dir compare="Text">csv_03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="csv_04">
+                <output-dir compare="Text">csv_04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="csv_05">
+                <output-dir compare="Text">csv_05</output-dir>
+                <expected-error>edu.uci.ics.hyracks.api.exceptions.HyracksDataException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="csv_06">
+                <output-dir compare="Text">csv_06</output-dir>
+                <expected-error>edu.uci.ics.hyracks.api.exceptions.HyracksDataException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="csv_07">
+                <output-dir compare="Text">csv_07</output-dir>
+                <expected-error>edu.uci.ics.hyracks.api.exceptions.HyracksDataException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="issue14_query">
+                <output-dir compare="Text">none</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="issue315_query">
+                <output-dir compare="Text">none</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="issue289_query">
+                <output-dir compare="Text">issue289_query</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="issue650_query">
+                <output-dir compare="Text">none</output-dir>
+                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="type_promotion_0">
+                <output-dir compare="Text">type_promotion_0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="escapes01">
+                <output-dir compare="Text">escapes01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="escapes02">
+                <output-dir compare="Text">escapes02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="escapes-err-1">
+                <output-dir compare="Text">none</output-dir>
+                <expected-error>edu.uci.ics.hyracks.api.exceptions.HyracksException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="user-defined-functions">
+            <compilation-unit name="query-issue244">
+                <output-dir compare="Text">query-issue244</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="duplicate-key-error">
+                <output-dir compare="Text">none</output-dir>
+                <expected-error>edu.uci.ics.hyracks.api.exceptions.HyracksException</expected-error>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="issue610_adm_token_end_collection">
+                <output-dir compare="Text">issue610_adm_token_end_collection</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="load">
+            <compilation-unit name="adm_binary">
+                <output-dir compare="Text">adm_binary</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="hints">
+        <test-case FilePath="hints">
+            <compilation-unit name="issue_251_dataset_hint_5">
+                <output-dir compare="Text">issue_251_dataset_hint_5</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="hints">
+            <compilation-unit name="issue_251_dataset_hint_6">
+                <output-dir compare="Text">issue_251_dataset_hint_6</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="hints">
+            <compilation-unit name="issue_251_dataset_hint_7">
+                <output-dir compare="Text">issue_251_dataset_hint_7</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="feeds">
+        <test-case FilePath="feeds">
+            <compilation-unit name="feeds_01">
+                <output-dir compare="Text">feeds_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="feeds">
+            <compilation-unit name="feeds_02">
+                <output-dir compare="Text">feeds_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="feeds">
+            <compilation-unit name="feeds_03">
+                <output-dir compare="Text">feeds_03</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="feeds">
+            <compilation-unit name="feeds_04">
+                <output-dir compare="Text">feeds_04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="feeds">
+            <compilation-unit name="feeds_05">
+                <output-dir compare="Text">feeds_05</output-dir>
+            </compilation-unit>
+        </test-case>
+        <!--Disable it because of sporadic failures. Raman will re-enable it.
     <test-case FilePath="feeds">
       <compilation-unit name="feeds_06">
         <output-dir compare="Text">feeds_06</output-dir>
       </compilation-unit>
     </test-case>
     -->
-    <test-case FilePath="feeds">
-      <compilation-unit name="feeds_07">
-        <output-dir compare="Text">feeds_07</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="feeds">
-      <compilation-unit name="feeds_08">
-        <output-dir compare="Text">feeds_08</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="feeds">
-      <compilation-unit name="issue_230_feeds">
-        <output-dir compare="Text">issue_230_feeds</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="feeds">
-      <compilation-unit name="issue_711_feeds">
-        <output-dir compare="Text">issue_711_feeds</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="hdfs">
-    <test-case FilePath="hdfs">
-      <compilation-unit name="issue_245_hdfs">
-        <output-dir compare="Text">issue_245_hdfs</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="hdfs">
-      <compilation-unit name="hdfs_02">
-        <output-dir compare="Text">hdfs_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="hdfs">
-      <compilation-unit name="hdfs_03">
-        <output-dir compare="Text">hdfs_03</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="external-indexing">
-      <test-case FilePath="external-indexing">
-      <compilation-unit name="text-format">
-        <output-dir compare="Text">text-format</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="external-indexing">
-      <compilation-unit name="sequence-format">
-        <output-dir compare="Text">sequence-format</output-dir>
-      </compilation-unit>
-    </test-case>
-      <test-case FilePath="external-indexing">
-      <compilation-unit name="rc-format">
-        <output-dir compare="Text">rc-format</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="external-indexing">
-      <compilation-unit name="rtree-index">
-        <output-dir compare="Text">rtree-index</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="external-indexing">
-      <compilation-unit name="leftouterjoin">
-        <output-dir compare="Text">leftouterjoin</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="external-indexing">
-      <compilation-unit name="leftouterjoin-rtree">
-        <output-dir compare="Text">leftouterjoin-rtree</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="temporal">
-    <test-case FilePath="temporal">
-     <compilation-unit name="parse_02">
-        <output-dir compare="Text">parse_02</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="temporal">
-     <compilation-unit name="parse_01">
-        <output-dir compare="Text">parse_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="temporal">
-     <compilation-unit name="day_of_week_01">
-        <output-dir compare="Text">day_of_week_01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="temporal">
-     <compilation-unit name="interval_bin">
-        <output-dir compare="Text">interval_bin</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="temporal">
-     <compilation-unit name="interval_bin_gby_0">
-        <output-dir compare="Text">interval_bin_gby_0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="temporal">
-     <compilation-unit name="interval_bin_gby_1">
-        <output-dir compare="Text">interval_bin_gby_1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="temporal">
-        <compilation-unit name="accessors">
-        <output-dir compare="Text">accessors</output-dir>
-      </compilation-unit>
-    </test-case>
-  <test-case FilePath="temporal">
-      <compilation-unit name="accessors_interval">
-        <output-dir compare="Text">accessors_interval</output-dir>
-      </compilation-unit>
-  </test-case>
-  <test-case FilePath="temporal">
-      <compilation-unit name="accessors_interval_null">
-        <output-dir compare="Text">accessors_interval_null</output-dir>
-      </compilation-unit>
-  </test-case>
-      <test-case FilePath="temporal">
-          <compilation-unit name="adjust_timezone">
-        <output-dir compare="Text">adjust_timezone</output-dir>
-      </compilation-unit>
-      </test-case>
-      <test-case FilePath="temporal">
-          <compilation-unit name="calendar_duration">
-        <output-dir compare="Text">calendar_duration</output-dir>
-      </compilation-unit>
-      </test-case>
-      <test-case FilePath="temporal">
-          <compilation-unit name="date_functions">
-        <output-dir compare="Text">date_functions</output-dir>
-      </compilation-unit>
-      </test-case>
-      <test-case FilePath="temporal">
-          <compilation-unit name="datetime_functions">
-        <output-dir compare="Text">datetime_functions</output-dir>
-      </compilation-unit>
-      </test-case>
+        <test-case FilePath="feeds">
+            <compilation-unit name="feeds_07">
+                <output-dir compare="Text">feeds_07</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="feeds">
+            <compilation-unit name="feeds_08">
+                <output-dir compare="Text">feeds_08</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="feeds">
+            <compilation-unit name="issue_230_feeds">
+                <output-dir compare="Text">issue_230_feeds</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="feeds">
+            <compilation-unit name="issue_711_feeds">
+                <output-dir compare="Text">issue_711_feeds</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="hdfs">
+        <test-case FilePath="hdfs">
+            <compilation-unit name="issue_245_hdfs">
+                <output-dir compare="Text">issue_245_hdfs</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="hdfs">
+            <compilation-unit name="hdfs_02">
+                <output-dir compare="Text">hdfs_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="hdfs">
+            <compilation-unit name="hdfs_03">
+                <output-dir compare="Text">hdfs_03</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="external-indexing">
+        <test-case FilePath="external-indexing">
+            <compilation-unit name="text-format">
+                <output-dir compare="Text">text-format</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="external-indexing">
+            <compilation-unit name="sequence-format">
+                <output-dir compare="Text">sequence-format</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="external-indexing">
+            <compilation-unit name="rc-format">
+                <output-dir compare="Text">rc-format</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="external-indexing">
+            <compilation-unit name="rtree-index">
+                <output-dir compare="Text">rtree-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="external-indexing">
+            <compilation-unit name="leftouterjoin">
+                <output-dir compare="Text">leftouterjoin</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="external-indexing">
+            <compilation-unit name="leftouterjoin-rtree">
+                <output-dir compare="Text">leftouterjoin-rtree</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="temporal">
+        <test-case FilePath="temporal">
+            <compilation-unit name="parse_02">
+                <output-dir compare="Text">parse_02</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="parse_01">
+                <output-dir compare="Text">parse_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="day_of_week_01">
+                <output-dir compare="Text">day_of_week_01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="interval_bin">
+                <output-dir compare="Text">interval_bin</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="interval_bin_gby_0">
+                <output-dir compare="Text">interval_bin_gby_0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="interval_bin_gby_1">
+                <output-dir compare="Text">interval_bin_gby_1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="accessors">
+                <output-dir compare="Text">accessors</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="accessors_interval">
+                <output-dir compare="Text">accessors_interval</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="accessors_interval_null">
+                <output-dir compare="Text">accessors_interval_null</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="adjust_timezone">
+                <output-dir compare="Text">adjust_timezone</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="calendar_duration">
+                <output-dir compare="Text">calendar_duration</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="date_functions">
+                <output-dir compare="Text">date_functions</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="datetime_functions">
+                <output-dir compare="Text">datetime_functions</output-dir>
+            </compilation-unit>
+        </test-case>
         <!--
        <test-case FilePath="temporal">
            <compilation-unit name="insert_from_delimited_ds">
@@ -5136,131 +5158,131 @@
            </compilation-unit>
       </test-case>
         -->
-      <test-case FilePath="temporal">
-          <compilation-unit name="insert_from_ext_ds">
-        <output-dir compare="Text">insert_from_ext_ds</output-dir>
-      </compilation-unit>
-      </test-case>
-   <test-case FilePath="temporal">
-    <compilation-unit name="insert_from_ext_ds_2">
-        <output-dir compare="Text">insert_from_ext_ds_2</output-dir>
-      </compilation-unit>
-   </test-case>
-      <test-case FilePath="temporal">
-          <compilation-unit name="interval_functions">
-        <output-dir compare="Text">interval_functions</output-dir>
-      </compilation-unit>
-      </test-case>
-      <test-case FilePath="temporal">
-          <compilation-unit name="time_functions">
-        <output-dir compare="Text">time_functions</output-dir>
-      </compilation-unit>
-      </test-case>
-      <test-case FilePath="constructor">
-          <compilation-unit name="interval">
-        <output-dir compare="Text">interval</output-dir>
-      </compilation-unit>
-      </test-case>
-      <test-case FilePath="temporal">
-          <compilation-unit name="duration_comps">
-        <output-dir compare="Text">duration_comps</output-dir>
-      </compilation-unit>
-      </test-case>
-  </test-group>
-  <test-group name="leftouterjoin">
-    <test-case FilePath="leftouterjoin">
-      <compilation-unit name="query_issue658">
-        <output-dir compare="Text">query_issue658</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="leftouterjoin">
-      <compilation-unit name="query_issue285">
-        <output-dir compare="Text">query_issue285</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="leftouterjoin">
-      <compilation-unit name="query_issue285-2">
-        <output-dir compare="Text">query_issue285-2</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
+        <test-case FilePath="temporal">
+            <compilation-unit name="insert_from_ext_ds">
+                <output-dir compare="Text">insert_from_ext_ds</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="insert_from_ext_ds_2">
+                <output-dir compare="Text">insert_from_ext_ds_2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="interval_functions">
+                <output-dir compare="Text">interval_functions</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="time_functions">
+                <output-dir compare="Text">time_functions</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="constructor">
+            <compilation-unit name="interval">
+                <output-dir compare="Text">interval</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="temporal">
+            <compilation-unit name="duration_comps">
+                <output-dir compare="Text">duration_comps</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="leftouterjoin">
+        <test-case FilePath="leftouterjoin">
+            <compilation-unit name="query_issue658">
+                <output-dir compare="Text">query_issue658</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="leftouterjoin">
+            <compilation-unit name="query_issue285">
+                <output-dir compare="Text">query_issue285</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="leftouterjoin">
+            <compilation-unit name="query_issue285-2">
+                <output-dir compare="Text">query_issue285-2</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
     <test-group name="index-leftouterjoin">
-    <test-case FilePath="index-leftouterjoin">
-      <compilation-unit name="probe-pidx-with-join-btree-sidx1">
-        <output-dir compare="Text">probe-pidx-with-join-btree-sidx1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-leftouterjoin">
-      <compilation-unit name="probe-pidx-with-join-btree-sidx2">
-        <output-dir compare="Text">probe-pidx-with-join-btree-sidx2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-leftouterjoin">
-      <compilation-unit name="probe-pidx-with-join-rtree-sidx1">
-        <output-dir compare="Text">probe-pidx-with-join-rtree-sidx1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-leftouterjoin">
-      <compilation-unit name="probe-pidx-with-join-rtree-sidx2">
-        <output-dir compare="Text">probe-pidx-with-join-rtree-sidx2</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-leftouterjoin">
-      <compilation-unit name="probe-pidx-with-join-invidx-sidx1">
-        <output-dir compare="Text">probe-pidx-with-join-invidx-sidx1</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="index-leftouterjoin">
-      <compilation-unit name="probe-pidx-with-join-invidx-sidx2">
-        <output-dir compare="Text">probe-pidx-with-join-invidx-sidx2</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="distinct">
-      <test-case FilePath="distinct">
-      <compilation-unit name="query-issue443">
-        <output-dir compare="Text">query-issue443</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="distinct">
-      <compilation-unit name="query-issue443-2">
-        <output-dir compare="Text">query-issue443-2</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="tinysocial">
-    <test-case FilePath="tinysocial">
-      <compilation-unit name="tinysocial-suite">
-        <output-dir compare="Text">tinysocial-suite</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="types">
-    <test-case FilePath="types">
-      <compilation-unit name="record01">
-        <output-dir compare="Text">record01</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="types">
-      <compilation-unit name="type_promotion_0">
-        <output-dir compare="Text">type_promotion_0</output-dir>
-      </compilation-unit>
-    </test-case>
-    <test-case FilePath="types">
-      <compilation-unit name="type_promotion_1">
-        <output-dir compare="Text">type_promotion_1</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="materialization">
-    <test-case FilePath="materialization">
-      <compilation-unit name="assign-reuse">
-        <output-dir compare="Text">assign-reuse</output-dir>
-      </compilation-unit>
-    </test-case>
-  </test-group>
-  <test-group name="filters">
-          <test-case FilePath="filters">
+        <test-case FilePath="index-leftouterjoin">
+            <compilation-unit name="probe-pidx-with-join-btree-sidx1">
+                <output-dir compare="Text">probe-pidx-with-join-btree-sidx1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-leftouterjoin">
+            <compilation-unit name="probe-pidx-with-join-btree-sidx2">
+                <output-dir compare="Text">probe-pidx-with-join-btree-sidx2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-leftouterjoin">
+            <compilation-unit name="probe-pidx-with-join-rtree-sidx1">
+                <output-dir compare="Text">probe-pidx-with-join-rtree-sidx1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-leftouterjoin">
+            <compilation-unit name="probe-pidx-with-join-rtree-sidx2">
+                <output-dir compare="Text">probe-pidx-with-join-rtree-sidx2</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-leftouterjoin">
+            <compilation-unit name="probe-pidx-with-join-invidx-sidx1">
+                <output-dir compare="Text">probe-pidx-with-join-invidx-sidx1</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="index-leftouterjoin">
+            <compilation-unit name="probe-pidx-with-join-invidx-sidx2">
+                <output-dir compare="Text">probe-pidx-with-join-invidx-sidx2</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="distinct">
+        <test-case FilePath="distinct">
+            <compilation-unit name="query-issue443">
+                <output-dir compare="Text">query-issue443</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="distinct">
+            <compilation-unit name="query-issue443-2">
+                <output-dir compare="Text">query-issue443-2</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="tinysocial">
+        <test-case FilePath="tinysocial">
+            <compilation-unit name="tinysocial-suite">
+                <output-dir compare="Text">tinysocial-suite</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="types">
+        <test-case FilePath="types">
+            <compilation-unit name="record01">
+                <output-dir compare="Text">record01</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="types">
+            <compilation-unit name="type_promotion_0">
+                <output-dir compare="Text">type_promotion_0</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="types">
+            <compilation-unit name="type_promotion_1">
+                <output-dir compare="Text">type_promotion_1</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="materialization">
+        <test-case FilePath="materialization">
+            <compilation-unit name="assign-reuse">
+                <output-dir compare="Text">assign-reuse</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+    <test-group name="filters">
+        <test-case FilePath="filters">
             <compilation-unit name="equality-predicate">
                 <output-dir compare="Text">equality-predicate</output-dir>
             </compilation-unit>
@@ -5323,4 +5345,58 @@
             </compilation-unit>
         </test-case>
     </test-group>
+    <test-group name="binary">
+        <test-case FilePath="binary">
+            <compilation-unit name="parse">
+                <output-dir compare="Text">parse</output-dir>
+            </compilation-unit>
+        </test-case>
+
+        <test-case FilePath="binary">
+            <compilation-unit name="print">
+                <output-dir compare="Text">print</output-dir>
+            </compilation-unit>
+        </test-case>
+
+        <test-case FilePath="binary">
+            <compilation-unit name="concat">
+                <output-dir compare="Text">concat</output-dir>
+            </compilation-unit>
+        </test-case>
+
+        <test-case FilePath="binary">
+            <compilation-unit name="subbinary">
+                <output-dir compare="Text">subbinary</output-dir>
+            </compilation-unit>
+        </test-case>
+
+        <test-case FilePath="binary">
+            <compilation-unit name="find">
+                <output-dir compare="Text">find</output-dir>
+            </compilation-unit>
+        </test-case>
+
+        <test-case FilePath="binary">
+            <compilation-unit name="insert">
+                <output-dir compare="Text">insert</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="binary">
+            <compilation-unit name="equal_join">
+                <output-dir compare="Text">equal_join</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="binary">
+            <compilation-unit name="index_join">
+                <output-dir compare="Text">index_join</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="binary">
+            <compilation-unit name="length">
+                <output-dir compare="Text">length</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
+
+
 </test-suite>
diff --git a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/adapter/factory/StreamBasedAdapterFactory.java b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/adapter/factory/StreamBasedAdapterFactory.java
index 6fed446..8daa7d0 100644
--- a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/adapter/factory/StreamBasedAdapterFactory.java
+++ b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/adapter/factory/StreamBasedAdapterFactory.java
@@ -71,6 +71,7 @@
     protected List<ExternalFile> files;
 
     protected static final HashMap<ATypeTag, IValueParserFactory> typeToValueParserFactMap = new HashMap<ATypeTag, IValueParserFactory>();
+
     static {
         typeToValueParserFactMap.put(ATypeTag.INT32, IntegerParserFactory.INSTANCE);
         typeToValueParserFactMap.put(ATypeTag.FLOAT, FloatParserFactory.INSTANCE);
@@ -120,7 +121,7 @@
         try {
             return conditionalPush ? new ConditionalPushTupleParserFactory(recordType, configuration)
                     : new AdmSchemafullRecordParserFactory(recordType, isPKAutoGenerated, primaryKeyPosition,
-                            origSourceDataTypeForAutoGeneratedPK);
+                    origSourceDataTypeForAutoGeneratedPK);
         } catch (Exception e) {
             throw new AsterixException(e);
         }
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/entities/AsterixBuiltinTypeMap.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/entities/AsterixBuiltinTypeMap.java
index 3617bba..9645344 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/entities/AsterixBuiltinTypeMap.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/entities/AsterixBuiltinTypeMap.java
@@ -36,6 +36,7 @@
         _builtinTypeMap.put("float", BuiltinType.AFLOAT);
         _builtinTypeMap.put("double", BuiltinType.ADOUBLE);
         _builtinTypeMap.put("string", BuiltinType.ASTRING);
+        _builtinTypeMap.put("binary", BuiltinType.ABINARY);
         _builtinTypeMap.put("date", BuiltinType.ADATE);
         _builtinTypeMap.put("time", BuiltinType.ATIME);
         _builtinTypeMap.put("datetime", BuiltinType.ADATETIME);
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/functions/ExternalFunctionCompilerUtil.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/functions/ExternalFunctionCompilerUtil.java
index d0e6aeb..f9c6040 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/functions/ExternalFunctionCompilerUtil.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/functions/ExternalFunctionCompilerUtil.java
@@ -31,6 +31,7 @@
 import edu.uci.ics.asterix.metadata.entities.Function;
 import edu.uci.ics.asterix.om.functions.AsterixFunction;
 import edu.uci.ics.asterix.om.typecomputer.base.IResultTypeComputer;
+import edu.uci.ics.asterix.om.typecomputer.impl.ABinaryTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.ADoubleTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.AFloatTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.AInt32TypeComputer;
@@ -142,6 +143,8 @@
                 return AFloatTypeComputer.INSTANCE;
             case DOUBLE:
                 return ADoubleTypeComputer.INSTANCE;
+            case BINARY:
+                return ABinaryTypeComputer.INSTANCE;
             case STRING:
                 return AStringTypeComputer.INSTANCE;
             case ORDEREDLIST:
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AObjectAscBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AObjectAscBinaryComparatorFactory.java
index c409a4a..739064e 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AObjectAscBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AObjectAscBinaryComparatorFactory.java
@@ -19,10 +19,7 @@
 import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
 import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import edu.uci.ics.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
-import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
-import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
-import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
-import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+import edu.uci.ics.hyracks.data.std.primitive.*;
 
 public class AObjectAscBinaryComparatorFactory implements IBinaryComparatorFactory {
 
@@ -42,6 +39,8 @@
             final IBinaryComparator ascLongComp = LongBinaryComparatorFactory.INSTANCE.createBinaryComparator();
             final IBinaryComparator ascStrComp = new PointableBinaryComparatorFactory(UTF8StringPointable.FACTORY)
                     .createBinaryComparator();
+            final IBinaryComparator ascByteArrayComp = new PointableBinaryComparatorFactory(ByteArrayPointable.FACTORY)
+                    .createBinaryComparator();
             final IBinaryComparator ascFloatComp = new PointableBinaryComparatorFactory(FloatPointable.FACTORY)
                     .createBinaryComparator();
             final IBinaryComparator ascDoubleComp = new PointableBinaryComparatorFactory(DoublePointable.FACTORY)
@@ -133,6 +132,9 @@
                     case INTERVAL: {
                         return ascIntervalComp.compare(b1, s1 + 1, l1 - 1, b2, s2 + 1, l2 - 1);
                     }
+                    case BINARY: {
+                        return ascByteArrayComp.compare(b1, s1 + 1, l1 - 1, b2, s2 + 1, l2 -1);
+                    }
                     default: {
                         return rawComp.compare(b1, s1 + 1, l1 - 1, b2, s2 + 1, l2 - 1);
                     }
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AUUIDPartialBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AUUIDPartialBinaryComparatorFactory.java
index 63c9a5a..21189bb 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AUUIDPartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/AUUIDPartialBinaryComparatorFactory.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 package edu.uci.ics.asterix.dataflow.data.nontagged.comparators;
 
 import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ListItemBinaryComparatorFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ListItemBinaryComparatorFactory.java
index e25ad2f..c0cc407 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ListItemBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/comparators/ListItemBinaryComparatorFactory.java
@@ -21,10 +21,7 @@
 import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
 import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import edu.uci.ics.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
-import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
-import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
-import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
-import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+import edu.uci.ics.hyracks.data.std.primitive.*;
 
 public class ListItemBinaryComparatorFactory implements IBinaryComparatorFactory {
 
@@ -71,6 +68,8 @@
             final IBinaryComparator ascPolygonComp = APolygonPartialBinaryComparatorFactory.INSTANCE
                     .createBinaryComparator();
             final IBinaryComparator ascUUIDComp = AUUIDPartialBinaryComparatorFactory.INSTANCE.createBinaryComparator();
+            final IBinaryComparator ascByteArrayComp = new PointableBinaryComparatorFactory(ByteArrayPointable.FACTORY)
+                    .createBinaryComparator();
             final IBinaryComparator rawComp = RawBinaryComparatorFactory.INSTANCE.createBinaryComparator();
 
             @Override
@@ -159,6 +158,9 @@
                     case INTERVAL: {
                         return ascIntervalComp.compare(b1, s1 + skip1, l1 - skip1, b2, s2 + skip2, l2 - skip2);
                     }
+                    case BINARY: {
+                        return ascByteArrayComp.compare(b1, s1 + skip1, l1 - skip1, b2, s2 + skip2, l2 - skip2);
+                    }
                     default: {
                         return rawComp.compare(b1, s1 + skip1, l1 - skip1, b2, s2 + skip2, l2 - skip2);
                     }
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryBase64Printer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryBase64Printer.java
new file mode 100644
index 0000000..f86e90e
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryBase64Printer.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.dataflow.data.nontagged.printers;
+
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ABinarySerializerDeserializer;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.data.IPrinter;
+
+import java.io.IOException;
+import java.io.PrintStream;
+
+public class ABinaryBase64Printer implements IPrinter {
+    private ABinaryBase64Printer() {
+    }
+
+    public static final ABinaryBase64Printer INSTANCE = new ABinaryBase64Printer();
+
+    @Override public void init() throws AlgebricksException {
+
+    }
+
+    @Override public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
+        int validLength = ABinarySerializerDeserializer.getLength(b, s + 1);
+        int start = s + 1 + ABinarySerializerDeserializer.SIZE_OF_LENGTH;
+        try {
+            ps.print("base64(\"");
+            printBase64Binary(b, start, validLength, ps);
+            ps.print("\")");
+        } catch (IOException e) {
+            throw new AlgebricksException(e);
+        }
+    }
+
+    /**
+     * Encodes a byte array into a {@code Appendable} stream by doing base64 encoding.
+     *
+     * @return the same stream in purpose of chained process.
+     */
+    public static Appendable printBase64Binary(byte[] input, int offset, int len, Appendable appendable)
+            throws IOException {
+        // encode elements until only 1 or 2 elements are left to encode
+        int remaining = len;
+        int i;
+        for (i = offset; remaining >= 3; remaining -= 3, i += 3) {
+            appendable.append(encode(input[i] >> 2));
+            appendable.append(encode(
+                    ((input[i] & 0x3) << 4)
+                            | ((input[i + 1] >> 4) & 0xF)));
+            appendable.append(encode(
+                    ((input[i + 1] & 0xF) << 2)
+                            | ((input[i + 2] >> 6) & 0x3)));
+            appendable.append(encode(input[i + 2] & 0x3F));
+        }
+        // encode when exactly 1 element (left) to encode
+        if (remaining == 1) {
+            appendable.append(encode(input[i] >> 2));
+            appendable.append(encode(((input[i]) & 0x3) << 4));
+            appendable.append('=');
+            appendable.append('=');
+        }
+        // encode when exactly 2 elements (left) to encode
+        if (remaining == 2) {
+            appendable.append(encode(input[i] >> 2));
+            appendable.append(encode(((input[i] & 0x3) << 4)
+                    | ((input[i + 1] >> 4) & 0xF)));
+            appendable.append(encode((input[i + 1] & 0xF) << 2));
+            appendable.append('=');
+        }
+        return appendable;
+    }
+
+    /**
+     * Encodes a byte array into a char array by doing base64 encoding.
+     * The caller must supply a big enough buffer.
+     *
+     * @return the value of {@code ptr+((len+2)/3)*4}, which is the new offset
+     * in the output buffer where the further bytes should be placed.
+     */
+    public static int printBase64Binary(byte[] input, int offset, int len, char[] buf, int ptr) {
+        // encode elements until only 1 or 2 elements are left to encode
+        int remaining = len;
+        int i;
+        for (i = offset; remaining >= 3; remaining -= 3, i += 3) {
+            buf[ptr++] = encode(input[i] >> 2);
+            buf[ptr++] = encode(
+                    ((input[i] & 0x3) << 4)
+                            | ((input[i + 1] >> 4) & 0xF));
+            buf[ptr++] = encode(
+                    ((input[i + 1] & 0xF) << 2)
+                            | ((input[i + 2] >> 6) & 0x3));
+            buf[ptr++] = encode(input[i + 2] & 0x3F);
+        }
+        // encode when exactly 1 element (left) to encode
+        if (remaining == 1) {
+            buf[ptr++] = encode(input[i] >> 2);
+            buf[ptr++] = encode(((input[i]) & 0x3) << 4);
+            buf[ptr++] = '=';
+            buf[ptr++] = '=';
+        }
+        // encode when exactly 2 elements (left) to encode
+        if (remaining == 2) {
+            buf[ptr++] = encode(input[i] >> 2);
+            buf[ptr++] = encode(((input[i] & 0x3) << 4)
+                    | ((input[i + 1] >> 4) & 0xF));
+            buf[ptr++] = encode((input[i + 1] & 0xF) << 2);
+            buf[ptr++] = '=';
+        }
+        return ptr;
+    }
+
+    private static final char[] encodeMap = initEncodeMap();
+
+    private static char[] initEncodeMap() {
+        char[] map = new char[64];
+        int i;
+        for (i = 0; i < 26; i++) {
+            map[i] = (char) ('A' + i);
+        }
+        for (i = 26; i < 52; i++) {
+            map[i] = (char) ('a' + (i - 26));
+        }
+        for (i = 52; i < 62; i++) {
+            map[i] = (char) ('0' + (i - 52));
+        }
+        map[62] = '+';
+        map[63] = '/';
+
+        return map;
+    }
+
+    public static char encode(int i) {
+        return encodeMap[i & 0x3F];
+    }
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryHexPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryHexPrinter.java
new file mode 100644
index 0000000..c539e4e
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryHexPrinter.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.dataflow.data.nontagged.printers;
+
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ABinarySerializerDeserializer;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.data.IPrinter;
+
+import java.io.IOException;
+import java.io.PrintStream;
+
+public class ABinaryHexPrinter implements IPrinter {
+    private ABinaryHexPrinter() {
+    }
+
+    public static final ABinaryHexPrinter INSTANCE = new ABinaryHexPrinter();
+
+    @Override public void init() throws AlgebricksException {
+
+    }
+
+    @Override public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
+        int validLength = ABinarySerializerDeserializer.getLength(b, s + 1);
+        int start = s + 1 + ABinarySerializerDeserializer.SIZE_OF_LENGTH;
+        try {
+            ps.print("hex(\"");
+            printHexString(b, start, validLength, ps);
+            ps.print("\")");
+        } catch (IOException e) {
+            throw new AlgebricksException(e);
+        }
+    }
+
+    public static Appendable printHexString(byte[] bytes, int start, int length, Appendable appendable)
+            throws IOException {
+        for (int i = 0; i < length; ++i) {
+            appendable.append((char) PrintTools.hex((bytes[start + i] >>> 4) & 0x0f, PrintTools.CASE.UPPER_CASE));
+            appendable.append((char) PrintTools.hex((bytes[start + i] & 0x0f), PrintTools.CASE.UPPER_CASE));
+        }
+        return appendable;
+    }
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryPrinterFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryPrinterFactory.java
new file mode 100644
index 0000000..505f942
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryPrinterFactory.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.dataflow.data.nontagged.printers;
+
+import edu.uci.ics.hyracks.algebricks.data.IPrinter;
+import edu.uci.ics.hyracks.algebricks.data.IPrinterFactory;
+
+public class ABinaryPrinterFactory implements IPrinterFactory {
+
+    private ABinaryPrinterFactory() {
+    }
+
+    public static final ABinaryPrinterFactory INSTANCE = new ABinaryPrinterFactory();
+
+    @Override public IPrinter createPrinter() {
+        return ABinaryHexPrinter.INSTANCE;
+    }
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AObjectPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AObjectPrinter.java
index 5ca940a..5a96e52 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AObjectPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AObjectPrinter.java
@@ -123,6 +123,10 @@
                 AStringPrinter.INSTANCE.print(b, s, l, ps);
                 break;
             }
+            case BINARY: {
+                ABinaryHexPrinter.INSTANCE.print(b, s, l, ps);
+                break;
+            }
             case RECORD: {
                 this.recordPrinter.init();
                 recordPrinter.print(b, s, l, ps);
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AUUIDPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AUUIDPrinter.java
index 5feb335..d98ca86 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AUUIDPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AUUIDPrinter.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 package edu.uci.ics.asterix.dataflow.data.nontagged.printers;
 
 import java.io.PrintStream;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AUUIDPrinterFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AUUIDPrinterFactory.java
index 015b8b8..fa65fd2 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AUUIDPrinterFactory.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AUUIDPrinterFactory.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 package edu.uci.ics.asterix.dataflow.data.nontagged.printers;
 
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
index d109ae9..92beb61 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
@@ -14,12 +14,18 @@
  */
 package edu.uci.ics.asterix.dataflow.data.nontagged.printers;
 
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+import javax.xml.bind.DatatypeConverter;
 import java.io.IOException;
 import java.io.OutputStream;
 
-import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
-
 public class PrintTools {
+    public static enum CASE {
+        LOWER_CASE,
+        UPPER_CASE,
+    }
+
     public static void writeUTF8StringWithEscapes(byte[] b, int s, int l, OutputStream os) throws IOException {
         int stringLength = UTF8StringPointable.getUTFLength(b, s);
         int position = s + 2; // skip 2 bytes containing string size
@@ -29,7 +35,7 @@
             char c = UTF8StringPointable.charAt(b, position);
             int sz = UTF8StringPointable.charSize(b, position);
             switch (c) {
-            // escape
+                // escape
                 case '\b':
                     os.write('\\');
                     os.write('b');
@@ -115,11 +121,18 @@
         os.write('u');
         os.write('0');
         os.write('0');
-        os.write(hex((c >>> 4) & 0x0f));
-        os.write(hex(c & 0x0f));
+        os.write(hex((c >>> 4) & 0x0f, CASE.LOWER_CASE));
+        os.write(hex(c & 0x0f, CASE.LOWER_CASE));
     }
 
-    private static byte hex(int i) {
-        return (byte) (i < 10 ? i + '0' : i + ('a' - 10));
+    static byte hex(int i, CASE c) {
+        switch (c) {
+            case LOWER_CASE:
+                return (byte) (i < 10 ? i + '0' : i + ('a' - 10));
+            case UPPER_CASE:
+                return (byte) (i < 10 ? i + '0' : i + ('A' - 10));
+        }
+        return Byte.parseByte(null);
     }
+
 }
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AObjectPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AObjectPrinter.java
index 026c499..c626791 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AObjectPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AObjectPrinter.java
@@ -16,6 +16,7 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ABinaryHexPrinter;
 import edu.uci.ics.asterix.om.types.ATypeTag;
 import edu.uci.ics.asterix.om.types.EnumDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -119,6 +120,10 @@
                 AStringPrinter.INSTANCE.print(b, s, l, ps);
                 break;
             }
+            case BINARY: {
+                ABinaryHexPrinter.INSTANCE.print(b, s, l, ps);
+                break;
+            }
             case RECORD: {
                 this.recordPrinter.init();
                 recordPrinter.print(b, s, l, ps);
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/ABinarySerializerDeserializer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/ABinarySerializerDeserializer.java
new file mode 100644
index 0000000..61b4fa7
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/ABinarySerializerDeserializer.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.dataflow.data.nontagged.serde;
+
+import edu.uci.ics.asterix.om.base.ABinary;
+import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.marshalling.ByteArraySerializerDeserializer;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+public class ABinarySerializerDeserializer implements ISerializerDeserializer<ABinary>{
+
+    private static final long serialVersionUID = 1L;
+    public static final int SIZE_OF_LENGTH = ByteArrayPointable.SIZE_OF_LENGTH;
+
+    public static final ABinarySerializerDeserializer INSTANCE = new ABinarySerializerDeserializer();
+
+    private ABinarySerializerDeserializer(){}
+
+    @Override
+    public ABinary deserialize(DataInput in) throws HyracksDataException {
+        return new ABinary(ByteArraySerializerDeserializer.INSTANCE.deserialize(in));
+    }
+
+    @Override
+    public void serialize(ABinary binary, DataOutput out) throws HyracksDataException {
+        ByteArraySerializerDeserializer.INSTANCE.serialize(binary.getBytes(), binary.getStart(),
+                binary.getLength() , out);
+    }
+
+    public static int getLength(byte [] bytes, int offset){
+        return ByteArrayPointable.getLength(bytes,offset);
+    }
+
+    public static void putLength(int length, byte [] bytes, int offset){
+        ByteArrayPointable.putLength(length, bytes, offset);
+    }
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AObjectSerializerDeserializer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AObjectSerializerDeserializer.java
index 14ec491..864849b 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AObjectSerializerDeserializer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AObjectSerializerDeserializer.java
@@ -18,6 +18,7 @@
 import java.io.DataOutput;
 import java.io.IOException;
 
+import edu.uci.ics.asterix.om.base.ABinary;
 import edu.uci.ics.asterix.om.base.ABoolean;
 import edu.uci.ics.asterix.om.base.ACircle;
 import edu.uci.ics.asterix.om.base.ADate;
@@ -88,6 +89,9 @@
             case STRING: {
                 return AStringSerializerDeserializer.INSTANCE.deserialize(in);
             }
+            case BINARY: {
+                return ABinarySerializerDeserializer.INSTANCE.deserialize(in);
+            }
             case DATE: {
                 return ADateSerializerDeserializer.INSTANCE.deserialize(in);
             }
@@ -191,6 +195,9 @@
                 AStringSerializerDeserializer.INSTANCE.serialize((AString) instance, out);
                 break;
             }
+            case BINARY: {
+                ABinarySerializerDeserializer.INSTANCE.serialize((ABinary) instance, out);
+            }
             case DATE: {
                 ADateSerializerDeserializer.INSTANCE.serialize((ADate) instance, out);
                 break;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
index 64cc90d..7c8f1ad 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
@@ -67,6 +67,7 @@
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(in.readByte());
             switch (typeTag) {
                 case STRING:
+                case BINARY:
                 case RECORD:
                 case ORDEREDLIST:
                 case UNORDEREDLIST:
@@ -136,6 +137,7 @@
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serOrderedList[offset + 1]);
             switch (typeTag) {
                 case STRING:
+                case BINARY:
                 case RECORD:
                 case ORDEREDLIST:
                 case UNORDEREDLIST:
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AUUIDSerializerDeserializer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AUUIDSerializerDeserializer.java
index acd0888..eaba0ae 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AUUIDSerializerDeserializer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AUUIDSerializerDeserializer.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 package edu.uci.ics.asterix.dataflow.data.nontagged.serde;
 
 import java.io.DataInput;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
index 323b86d..163eb4c 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
@@ -69,6 +69,7 @@
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(in.readByte());
             switch (typeTag) {
                 case STRING:
+                case BINARY:
                 case RECORD:
                 case ORDEREDLIST:
                 case UNORDEREDLIST:
@@ -137,6 +138,7 @@
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serOrderedList[offset + 1]);
             switch (typeTag) {
                 case STRING:
+                case BINARY:
                 case RECORD:
                 case ORDEREDLIST:
                 case UNORDEREDLIST:
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java
index 672621a..4d323cf 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlBinaryComparatorFactoryProvider.java
@@ -35,6 +35,7 @@
 import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
 import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import edu.uci.ics.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
 import edu.uci.ics.hyracks.data.std.primitive.BytePointable;
 import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
 import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
@@ -64,6 +65,8 @@
     // Equivalent to UTF8STRING_POINTABLE_INSTANCE but all characters are considered lower case to implement case-insensitive comparisons.    
     public static final PointableBinaryComparatorFactory UTF8STRING_LOWERCASE_POINTABLE_INSTANCE = new PointableBinaryComparatorFactory(
             UTF8StringLowercasePointable.FACTORY);
+    public static final PointableBinaryComparatorFactory BINARY_POINTABLE_INSTANCE = new PointableBinaryComparatorFactory(
+            ByteArrayPointable.FACTORY);
 
     private AqlBinaryComparatorFactoryProvider() {
     }
@@ -169,6 +172,9 @@
             case UUID: {
                 return addOffset(AUUIDPartialBinaryComparatorFactory.INSTANCE, ascending);
             }
+            case BINARY: {
+                return addOffset(BINARY_POINTABLE_INSTANCE, ascending);
+            }
             default: {
                 return addOffset(RawBinaryComparatorFactory.INSTANCE, ascending);
             }
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlJSONPrinterFactoryProvider.java b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlJSONPrinterFactoryProvider.java
index 22ebd99..9ae9dbc 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlJSONPrinterFactoryProvider.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlJSONPrinterFactoryProvider.java
@@ -14,6 +14,7 @@
  */
 package edu.uci.ics.asterix.formats.nontagged;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ABinaryPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.AUUIDPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ShortWithoutTypeInfoPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.json.ABooleanPrinterFactory;
@@ -110,6 +111,8 @@
                     return ARectanglePrinterFactory.INSTANCE;
                 case STRING:
                     return AStringPrinterFactory.INSTANCE;
+                case BINARY:
+                    return ABinaryPrinterFactory.INSTANCE;
                 case RECORD:
                     return new ARecordPrinterFactory((ARecordType) aqlType);
                 case ORDEREDLIST:
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlNormalizedKeyComputerFactoryProvider.java b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlNormalizedKeyComputerFactoryProvider.java
index 9014a13..ffc3cdf 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlNormalizedKeyComputerFactoryProvider.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlNormalizedKeyComputerFactoryProvider.java
@@ -19,6 +19,7 @@
 import edu.uci.ics.asterix.om.types.IAType;
 import edu.uci.ics.hyracks.algebricks.data.INormalizedKeyComputerFactoryProvider;
 import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import edu.uci.ics.hyracks.dataflow.common.data.normalizers.ByteArrayNormalizedKeyComputerFactory;
 import edu.uci.ics.hyracks.dataflow.common.data.normalizers.DoubleNormalizedKeyComputerFactory;
 import edu.uci.ics.hyracks.dataflow.common.data.normalizers.FloatNormalizedKeyComputerFactory;
 import edu.uci.ics.hyracks.dataflow.common.data.normalizers.Integer64NormalizedKeyComputerFactory;
@@ -57,6 +58,9 @@
                 case STRING: {
                     return new AWrappedAscNormalizedKeyComputerFactory(new UTF8StringNormalizedKeyComputerFactory());
                 }
+                case BINARY: {
+                    return new AWrappedAscNormalizedKeyComputerFactory(new ByteArrayNormalizedKeyComputerFactory());
+                }
                 default: {
                     return null;
                 }
@@ -83,6 +87,9 @@
                 case STRING: {
                     return new AWrappedDescNormalizedKeyComputerFactory(new UTF8StringNormalizedKeyComputerFactory());
                 }
+                case BINARY: {
+                    return new AWrappedDescNormalizedKeyComputerFactory(new ByteArrayNormalizedKeyComputerFactory());
+                }
                 default: {
                     return null;
                 }
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlPrinterFactoryProvider.java b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlPrinterFactoryProvider.java
index a306608..bf941d0 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlPrinterFactoryProvider.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlPrinterFactoryProvider.java
@@ -14,6 +14,7 @@
  */
 package edu.uci.ics.asterix.formats.nontagged;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ABinaryPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ABooleanPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ACirclePrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ADatePrinterFactory;
@@ -65,8 +66,8 @@
 
         if (aqlType != null) {
             switch (aqlType.getTypeTag()) {
-            // case ANYTYPE:
-            // return AAnyTypePrinterFactory.INSTANCE;
+                // case ANYTYPE:
+                // return AAnyTypePrinterFactory.INSTANCE;
                 case INT8:
                     return AInt8PrinterFactory.INSTANCE;
                 case INT16:
@@ -107,6 +108,8 @@
                     return ARectanglePrinterFactory.INSTANCE;
                 case STRING:
                     return AStringPrinterFactory.INSTANCE;
+                case BINARY:
+                    return ABinaryPrinterFactory.INSTANCE;
                 case RECORD:
                     return new ARecordPrinterFactory((ARecordType) aqlType);
                 case ORDEREDLIST:
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlSerializerDeserializerProvider.java b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlSerializerDeserializerProvider.java
index 12de85c..8d083ee 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlSerializerDeserializerProvider.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlSerializerDeserializerProvider.java
@@ -19,6 +19,7 @@
 import java.io.IOException;
 import java.io.Serializable;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ABinarySerializerDeserializer;
 import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ABooleanSerializerDeserializer;
 import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ACircleSerializerDeserializer;
 import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer;
@@ -128,6 +129,9 @@
             case STRING: {
                 return AStringSerializerDeserializer.INSTANCE;
             }
+            case BINARY: {
+                return ABinarySerializerDeserializer.INSTANCE;
+            }
             case TIME: {
                 return ATimeSerializerDeserializer.INSTANCE;
             }
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/ABinary.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/ABinary.java
index 7749a40..9152bcf 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/ABinary.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/ABinary.java
@@ -14,28 +14,54 @@
  */
 package edu.uci.ics.asterix.om.base;
 
-import org.json.JSONException;
-import org.json.JSONObject;
-
 import edu.uci.ics.asterix.common.exceptions.AsterixException;
+import edu.uci.ics.asterix.dataflow.data.nontagged.serde.ABinarySerializerDeserializer;
 import edu.uci.ics.asterix.om.types.BuiltinType;
 import edu.uci.ics.asterix.om.types.IAType;
 import edu.uci.ics.asterix.om.visitors.IOMVisitor;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
 
 public class ABinary implements IAObject {
 
     private static final int HASH_PREFIX = 31;
 
-    private final byte[] bytes;
+    protected byte[] bytes;
+    protected int start;
+    protected int length;
 
     public ABinary(byte[] byteArray) {
         this.bytes = byteArray;
+        this.start = 0;
+        this.length = byteArray.length;
+    }
+
+    public ABinary(byte[] byteArray, int start, int length) {
+        this.bytes = byteArray;
+        this.start = start;
+        this.length = length;
     }
 
     public byte[] getBytes() {
         return bytes;
     }
 
+    public int getStart() {
+        return start;
+    }
+
+    public int getLength() {
+        return getByteArrayContentLength() + SIZE_OF_LEADING_LENGTH_FIELD;
+    }
+
+    public int getByteArrayContentLength() {
+        return ABinarySerializerDeserializer.getLength(bytes, start);
+    }
+
+    public static final int SIZE_OF_LEADING_LENGTH_FIELD = ByteArrayPointable.SIZE_OF_LENGTH;
+
     @Override
     public void accept(IOMVisitor visitor) throws AsterixException {
         visitor.visitABinary(this);
@@ -52,11 +78,14 @@
             return false;
         }
         byte[] x = ((ABinary) obj).getBytes();
-        if (bytes.length != x.length) {
+        int xStart = ((ABinary) obj).getStart();
+        int xLength = ((ABinary) obj).getLength();
+
+        if (getLength() != xLength) {
             return false;
         }
-        for (int k = 0; k < bytes.length; k++) {
-            if (bytes[k] != x[k]) {
+        for (int k = 0; k < xLength; k++) {
+            if (bytes[start + k] != x[xStart + k]) {
                 return false;
             }
         }
@@ -65,25 +94,44 @@
 
     @Override
     public int hash() {
-        int m = HASH_PREFIX <= bytes.length ? HASH_PREFIX : bytes.length;
+        int m = HASH_PREFIX <= getLength() ? HASH_PREFIX : getLength();
         int h = 0;
         for (int i = 0; i < m; i++) {
-            h += 31 * h + bytes[i];
+            h += 31 * h + bytes[start + i];
         }
         return h;
     }
 
     @Override
     public String toString() {
-        return "ABinary";
+        StringBuilder sb = new StringBuilder();
+        int validLength = getByteArrayContentLength();
+        int start = getStart() + SIZE_OF_LEADING_LENGTH_FIELD;
+        sb.append("ABinary: [ ");
+        for (int i = 0; i < validLength; i++) {
+            if (i > 0) {
+                sb.append(", ");
+            }
+            sb.append(bytes[start + i]);
+        }
+        sb.append(" ]");
+        return sb.toString();
+
     }
 
     @Override
     public JSONObject toJSON() throws JSONException {
         JSONObject json = new JSONObject();
 
-        json.put("ABinary", bytes);
+        int validLength = getByteArrayContentLength();
+        int start = getStart() + SIZE_OF_LEADING_LENGTH_FIELD;
+        JSONArray byteArray = new JSONArray();
+        for (int i = 0; i < validLength; i++) {
+            byteArray.put(bytes[start + i]);
+        }
+        json.put("ABinary", byteArray);
 
         return json;
     }
+
 }
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AMutableBinary.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AMutableBinary.java
new file mode 100644
index 0000000..14c7e1e
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AMutableBinary.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.om.base;
+
+public class AMutableBinary extends ABinary {
+
+    public AMutableBinary(byte[] byteArray, int start, int length) {
+        super(byteArray, start, length);
+    }
+
+    public void setValue(byte[] b, int s, int l) {
+        super.bytes = b;
+        super.start = s;
+        super.length = l;
+    }
+
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AMutableUUID.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AMutableUUID.java
index 23241e2..be0bf98 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AMutableUUID.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AMutableUUID.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 package edu.uci.ics.asterix.om.base;
 
 public class AMutableUUID extends AUUID {
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AUUID.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AUUID.java
index 69dac5d..2fe7c1e 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AUUID.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/AUUID.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 package edu.uci.ics.asterix.om.base;
 
 import java.security.SecureRandom;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/temporal/GregorianCalendarSystem.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/temporal/GregorianCalendarSystem.java
index 3be0858..4a85e7d 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/temporal/GregorianCalendarSystem.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/base/temporal/GregorianCalendarSystem.java
@@ -1,5 +1,20 @@
 /*
  * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * you may obtain a copy of the License from
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/functions/AsterixBuiltinFunctions.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/functions/AsterixBuiltinFunctions.java
index caec0f6..683cce5 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/functions/AsterixBuiltinFunctions.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/functions/AsterixBuiltinFunctions.java
@@ -61,6 +61,7 @@
 import edu.uci.ics.asterix.om.typecomputer.impl.NonTaggedUnaryMinusTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.NotNullTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.OpenRecordConstructorResultType;
+import edu.uci.ics.asterix.om.typecomputer.impl.OptionalABinaryTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.OptionalABooleanTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.OptionalACircleTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.OptionalADateTimeTypeComputer;
@@ -95,6 +96,7 @@
 import edu.uci.ics.asterix.om.typecomputer.impl.SubstringTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.TripleStringBoolOrNullTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.TripleStringStringOrNullTypeComputer;
+import edu.uci.ics.asterix.om.typecomputer.impl.UnaryBinaryInt32OrNullTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.UnaryBooleanOrNullFunctionTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.UnaryStringInt32OrNullTypeComputer;
 import edu.uci.ics.asterix.om.typecomputer.impl.UnaryStringOrNullTypeComputer;
@@ -207,6 +209,24 @@
             FunctionConstants.ASTERIX_NS, "round-half-to-even", 1);
     public final static FunctionIdentifier NUMERIC_ROUND_HALF_TO_EVEN2 = new FunctionIdentifier(
             FunctionConstants.ASTERIX_NS, "round-half-to-even", 2);
+
+    // binary functions
+    public final static FunctionIdentifier BINARY_LENGTH = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
+            "binary-length", 1);
+    public final static FunctionIdentifier PARSE_BINARY = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
+            "parse-binary", 2);
+    public final static FunctionIdentifier PRINT_BINARY = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
+            "print-binary", 2);
+    public final static FunctionIdentifier BINARY_CONCAT = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
+            "binary-concat", 1);
+    public final static FunctionIdentifier SUBBINARY_FROM = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
+            "sub-binary", 2);
+    public final static FunctionIdentifier SUBBINARY_FROM_TO = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
+            "sub-binary", 3);
+    public final static FunctionIdentifier FIND_BINARY = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
+            "find-binary", 2);
+    public final static FunctionIdentifier FIND_BINARY_FROM = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
+            "find-binary", 3);
     // String funcitons
     public final static FunctionIdentifier STRING_EQUAL = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
             "string-equal", 2);
@@ -429,6 +449,11 @@
             "null", 1);
     public final static FunctionIdentifier STRING_CONSTRUCTOR = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
             "string", 1);
+    public final static FunctionIdentifier BINARY_HEX_CONSTRUCTOR = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
+            "hex", 1);
+    public final static FunctionIdentifier BINARY_BASE64_CONSTRUCTOR = new FunctionIdentifier(
+            FunctionConstants.ASTERIX_NS,
+            "base64", 1);
     public final static FunctionIdentifier INT8_CONSTRUCTOR = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
             "int8", 1);
     public final static FunctionIdentifier INT16_CONSTRUCTOR = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
@@ -656,7 +681,8 @@
     public static final FunctionIdentifier IS_NULL = AlgebricksBuiltinFunctions.IS_NULL;
 
     public static final FunctionIdentifier IS_SYSTEM_NULL = new FunctionIdentifier(FunctionConstants.ASTERIX_NS,
-            "is-system-null", 1);;
+            "is-system-null", 1);
+    ;
     public static final FunctionIdentifier NOT_NULL = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "not-null",
             1);
     public static final FunctionIdentifier COLLECTION_TO_SEQUENCE = new FunctionIdentifier(
@@ -784,6 +810,15 @@
         addFunction(NUMERIC_ROUND_HALF_TO_EVEN, NonTaggedNumericUnaryFunctionTypeComputer.INSTANCE, true);
         addFunction(NUMERIC_ROUND_HALF_TO_EVEN2, NonTaggedNumericRoundHalfToEven2TypeComputer.INSTANCE, true);
 
+        addFunction(BINARY_LENGTH, UnaryBinaryInt32OrNullTypeComputer.INSTANCE, true);
+        addFunction(PARSE_BINARY, OptionalABinaryTypeComputer.INSTANCE, true);
+        addFunction(PRINT_BINARY, OptionalAStringTypeComputer.INSTANCE, true);
+        addFunction(BINARY_CONCAT, OptionalABinaryTypeComputer.INSTANCE, true);
+        addFunction(SUBBINARY_FROM, OptionalABinaryTypeComputer.INSTANCE, true);
+        addFunction(SUBBINARY_FROM_TO, OptionalABinaryTypeComputer.INSTANCE, true);
+        addFunction(FIND_BINARY, OptionalAInt32TypeComputer.INSTANCE, true);
+        addFunction(FIND_BINARY_FROM, OptionalAInt32TypeComputer.INSTANCE, true);
+
         addFunction(STRING_TO_CODEPOINT, OrderedListOfAInt32TypeComputer.INSTANCE, true);
         addFunction(CODEPOINT_TO_STRING, AStringTypeComputer.INSTANCE, true);
         addFunction(STRING_CONCAT, OptionalAStringTypeComputer.INSTANCE, true);
@@ -871,6 +906,8 @@
         addFunction(GET_POINTS_LINE_RECTANGLE_POLYGON_ACCESSOR, OrderedListOfAPointTypeComputer.INSTANCE, true);
         addFunction(STARTS_WITH, ABooleanTypeComputer.INSTANCE, true);
         addFunction(STRING_CONSTRUCTOR, OptionalAStringTypeComputer.INSTANCE, true);
+        addFunction(BINARY_HEX_CONSTRUCTOR, OptionalABinaryTypeComputer.INSTANCE, true);
+        addFunction(BINARY_BASE64_CONSTRUCTOR, OptionalABinaryTypeComputer.INSTANCE, true);
         addPrivateFunction(SUBSET_COLLECTION, new IResultTypeComputer() {
 
             @Override
@@ -1208,7 +1245,8 @@
                 || (includePrivateFunctions && builtinPrivateFunctionsSet.keySet().contains(finfo))) {
             return true;
         }
-        fi = new FunctionIdentifier(AlgebricksBuiltinFunctions.ALGEBRICKS_NS, signature.getName(), signature.getArity());
+        fi = new FunctionIdentifier(AlgebricksBuiltinFunctions.ALGEBRICKS_NS, signature.getName(),
+                signature.getArity());
         finfo = getAsterixFunctionInfo(fi);
         if (builtinPublicFunctionsSet.keySet().contains(finfo)
                 || (includePrivateFunctions && builtinPrivateFunctionsSet.keySet().contains(finfo))) {
@@ -1315,7 +1353,8 @@
         registeredFunctions.put(fi, functionInfo);
     }
 
-    public static void addPrivateFunction(FunctionIdentifier fi, IResultTypeComputer typeComputer, boolean isFunctional) {
+    public static void addPrivateFunction(FunctionIdentifier fi, IResultTypeComputer typeComputer,
+            boolean isFunctional) {
         IFunctionInfo functionInfo = new AsterixFunctionInfo(fi, isFunctional);
         builtinPrivateFunctionsSet.put(functionInfo, functionInfo);
         funTypeComputer.put(functionInfo, typeComputer);
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/AListPointable.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/AListPointable.java
index 2f7b608..95192e5 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/AListPointable.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/AListPointable.java
@@ -100,6 +100,7 @@
         if (typedItemList) {
             switch (itemTag) {
                 case STRING:
+                case BINARY:
                 case RECORD:
                 case ORDEREDLIST:
                 case UNORDEREDLIST:
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/printer/APrintVisitor.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/printer/APrintVisitor.java
index 15de81c..7d4cc86 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/printer/APrintVisitor.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/printer/APrintVisitor.java
@@ -20,6 +20,7 @@
 import java.util.Map;
 
 import edu.uci.ics.asterix.common.exceptions.AsterixException;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ABinaryHexPrinter;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ABooleanPrinter;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ACirclePrinter;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ADatePrinter;
@@ -186,6 +187,10 @@
                     AStringPrinter.INSTANCE.print(b, s, l, ps);
                     break;
                 }
+                case BINARY: {
+                    ABinaryHexPrinter.INSTANCE.print(b, s, l, ps);
+                    break;
+                }
                 case INTERVAL: {
                     AIntervalPrinter.INSTANCE.print(b, s, l, ps);
                     break;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/printer/json/APrintVisitor.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/printer/json/APrintVisitor.java
index 24e8ba5..2d716d6 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/printer/json/APrintVisitor.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/pointables/printer/json/APrintVisitor.java
@@ -20,6 +20,7 @@
 import java.util.Map;
 
 import edu.uci.ics.asterix.common.exceptions.AsterixException;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ABinaryHexPrinter;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.AUUIDPrinter;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ShortWithoutTypeInfoPrinter;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.json.ABooleanPrinter;
@@ -177,6 +178,10 @@
                     AStringPrinter.INSTANCE.print(b, s, l, ps);
                     break;
                 }
+                case BINARY: {
+                    ABinaryHexPrinter.INSTANCE.print(b, s, l, ps);
+                    break;
+                }
                 case YEARMONTHDURATION: {
                     AYearMonthDurationPrinter.INSTANCE.print(b, s, l, ps);
                     break;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/ABinaryTypeComputer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/ABinaryTypeComputer.java
new file mode 100644
index 0000000..16ec981
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/ABinaryTypeComputer.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.om.typecomputer.impl;
+
+import edu.uci.ics.asterix.om.typecomputer.base.IResultTypeComputer;
+import edu.uci.ics.asterix.om.types.BuiltinType;
+import edu.uci.ics.asterix.om.types.IAType;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+
+public class ABinaryTypeComputer implements IResultTypeComputer {
+    public static final ABinaryTypeComputer INSTANCE = new ABinaryTypeComputer();
+
+    private ABinaryTypeComputer() {
+
+    }
+
+    @Override public IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env,
+            IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException {
+        return BuiltinType.ABINARY;
+    }
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/AUUIDTypeComputer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/AUUIDTypeComputer.java
index 18d269b..3d46705 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/AUUIDTypeComputer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/AUUIDTypeComputer.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 package edu.uci.ics.asterix.om.typecomputer.impl;
 
 import edu.uci.ics.asterix.om.typecomputer.base.IResultTypeComputer;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/FlowRecordResultTypeComputer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/FlowRecordResultTypeComputer.java
index a982a1f..91b0138 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/FlowRecordResultTypeComputer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/FlowRecordResultTypeComputer.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 package edu.uci.ics.asterix.om.typecomputer.impl;
 
 import edu.uci.ics.asterix.om.typecomputer.base.IResultTypeComputer;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/OptionalABinaryTypeComputer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/OptionalABinaryTypeComputer.java
new file mode 100644
index 0000000..01d507f
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/OptionalABinaryTypeComputer.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.om.typecomputer.impl;
+
+import edu.uci.ics.asterix.om.typecomputer.base.IResultTypeComputer;
+import edu.uci.ics.asterix.om.typecomputer.base.TypeComputerUtilities;
+import edu.uci.ics.asterix.om.types.AUnionType;
+import edu.uci.ics.asterix.om.types.BuiltinType;
+import edu.uci.ics.asterix.om.types.IAType;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class OptionalABinaryTypeComputer implements IResultTypeComputer {
+    public static final OptionalABinaryTypeComputer INSTANCE = new OptionalABinaryTypeComputer();
+
+    private OptionalABinaryTypeComputer(){
+
+    }
+
+    @Override public IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env,
+            IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException {
+        if (TypeComputerUtilities.nullableType(expression, env)) {
+            List<IAType> unionList = new ArrayList<IAType>();
+            unionList.add(BuiltinType.ANULL);
+            unionList.add(BuiltinType.ABINARY);
+            return new AUnionType(unionList, "OptionalBinary");
+        } else {
+            return BuiltinType.ABINARY;
+        }
+    }
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/RecordMergeTypeComputer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/RecordMergeTypeComputer.java
index 75ed41d..9f963f4 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/RecordMergeTypeComputer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/RecordMergeTypeComputer.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 package edu.uci.ics.asterix.om.typecomputer.impl;
 
 import java.io.IOException;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/TypeCompatibilityChecker.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/TypeCompatibilityChecker.java
index 0739b2f..7c8ae51 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/TypeCompatibilityChecker.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/TypeCompatibilityChecker.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 package edu.uci.ics.asterix.om.typecomputer.impl;
 
 import java.util.ArrayList;
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/UnaryBinaryInt32OrNullTypeComputer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/UnaryBinaryInt32OrNullTypeComputer.java
new file mode 100644
index 0000000..3a28b52
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/typecomputer/impl/UnaryBinaryInt32OrNullTypeComputer.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.om.typecomputer.impl;
+
+import edu.uci.ics.asterix.om.typecomputer.base.IResultTypeComputer;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.om.types.AUnionType;
+import edu.uci.ics.asterix.om.types.BuiltinType;
+import edu.uci.ics.asterix.om.types.IAType;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.NotImplementedException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class UnaryBinaryInt32OrNullTypeComputer implements IResultTypeComputer {
+    public static final UnaryBinaryInt32OrNullTypeComputer INSTANCE = new UnaryBinaryInt32OrNullTypeComputer();
+
+    private UnaryBinaryInt32OrNullTypeComputer() {
+
+    }
+
+    @Override public IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env,
+            IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException {
+        AbstractFunctionCallExpression fce = (AbstractFunctionCallExpression) expression;
+        if (fce.getArguments().size() != 1) {
+            throw new AlgebricksException("Wrong Argument Number.");
+        }
+        ILogicalExpression arg0 = fce.getArguments().get(0).getValue();
+        IAType t0;
+        t0 = (IAType) env.getType(arg0);
+        if (t0.getTypeTag() != ATypeTag.NULL
+                && t0.getTypeTag() != ATypeTag.BINARY
+                && (t0.getTypeTag() == ATypeTag.UNION && !((AUnionType) t0).getUnionList()
+                .contains(BuiltinType.ABINARY))) {
+            throw new NotImplementedException("Expects Binary Type.");
+        }
+
+        List<IAType> unionList = new ArrayList<IAType>();
+        unionList.add(BuiltinType.ANULL);
+        if (t0.getTypeTag() == ATypeTag.NULL) {
+            return BuiltinType.ANULL;
+        }
+
+        if (t0.getTypeTag() == ATypeTag.BINARY || t0.getTypeTag().equals(ATypeTag.UNION)) {
+            unionList.add(BuiltinType.AINT32);
+        }
+
+        return new AUnionType(unionList, "binary-length-Result");
+
+    }
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/ARecordType.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/ARecordType.java
index 493709e..be14ef7 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/ARecordType.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/ARecordType.java
@@ -279,6 +279,7 @@
                     case FLOAT:
                     case DOUBLE:
                     case STRING:
+                    case BINARY:
                     case DATE:
                     case TIME:
                     case UUID:
@@ -336,6 +337,7 @@
                         case FLOAT:
                         case DOUBLE:
                         case STRING:
+                        case BINARY:
                         case DATE:
                         case TIME:
                         case DATETIME:
@@ -438,6 +440,7 @@
             case FLOAT:
             case DOUBLE:
             case STRING:
+            case BINARY:
             case DATE:
             case TIME:
             case DATETIME:
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/util/NonTaggedFormatUtil.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/util/NonTaggedFormatUtil.java
index b16fddb..cbc5054 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/util/NonTaggedFormatUtil.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/util/NonTaggedFormatUtil.java
@@ -45,6 +45,7 @@
     public static final boolean isFixedSizedCollection(IAType type) {
         switch (type.getTypeTag()) {
             case STRING:
+            case BINARY:
             case RECORD:
             case ORDEREDLIST:
             case UNORDEREDLIST:
@@ -135,6 +136,7 @@
                 else
                     return AInt16SerializerDeserializer.getShort(serNonTaggedAObject, offset) * 16 + 2;
             case STRING:
+            case BINARY:
                 if (tagged)
                     return AInt16SerializerDeserializer.getUnsignedShort(serNonTaggedAObject, offset + 1) + 2;
                 else
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/visitors/OMPrintToStringVisitor.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/visitors/OMPrintToStringVisitor.java
index 073fb0f..5571769 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/visitors/OMPrintToStringVisitor.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/visitors/OMPrintToStringVisitor.java
@@ -71,6 +71,7 @@
 
     @Override
     public void visitABinary(ABinary obj) throws AsterixException {
+        // TODO Auto-generated method stub
         throw new NotImplementedException();
     }
 
diff --git a/asterix-om/src/test/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryPrinterTest.java b/asterix-om/src/test/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryPrinterTest.java
new file mode 100644
index 0000000..04036df
--- /dev/null
+++ b/asterix-om/src/test/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ABinaryPrinterTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.dataflow.data.nontagged.printers;
+
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
+import org.junit.Test;
+
+import javax.xml.bind.DatatypeConverter;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.Arrays;
+
+import static org.junit.Assert.*;
+
+public class ABinaryPrinterTest {
+
+    public static byte[] generateABinaryBytesByStringContent(String content){
+        String padding = "000000" + content;
+        byte [] bytes = DatatypeConverter.parseHexBinary(padding);
+        ByteArrayPointable.putLength(content.length() / 2, bytes, 1);
+        return bytes;
+    }
+
+    public static void testOneInputString(String input) throws AlgebricksException {
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        PrintStream ps = new PrintStream(baos);
+
+        byte [] bytes = generateABinaryBytesByStringContent(input);
+        ABinaryHexPrinter.INSTANCE.print(bytes, 0, bytes.length, ps);
+
+        String pureHex = baos.toString();
+        assertTrue(pureHex.startsWith("hex("));
+        assertTrue(pureHex.endsWith("\")"));
+        assertTrue(pureHex.substring(5,pureHex.length()-2).equalsIgnoreCase(input));
+    }
+
+    @Test
+    public void testPrintEveryChar() throws Exception {
+        testOneInputString("ABCDEF0123456789");
+        testOneInputString("0A0B0C0D0E0F00010203040506070809");
+        testOneInputString("A0B0C0D0E0F000102030405060708090");
+    }
+
+    @Test
+    public void testSpecialString() throws Exception{
+        testOneInputString("");
+        char [] chars = new char[(ByteArrayPointable.MAX_LENGTH ) * 2];
+        Arrays.fill(chars, 'F');
+        testOneInputString(new String(chars));
+    }
+}
\ No newline at end of file
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/common/AbstractAsterixListIterator.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/common/AbstractAsterixListIterator.java
index 56e5139..e95e9cb 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/common/AbstractAsterixListIterator.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/common/AbstractAsterixListIterator.java
@@ -124,6 +124,10 @@
                 }
                 break;
             }
+            case BINARY: {
+                cmp = AqlBinaryComparatorFactoryProvider.BINARY_POINTABLE_INSTANCE.createBinaryComparator();
+                break;
+            }
             default: {
                 cmp = null;
                 break;
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
index e5a26fc..ee1d98a 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/comparisons/AbstractComparisonEvaluator.java
@@ -42,6 +42,8 @@
 import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
 import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
 import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
+import edu.uci.ics.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
 import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
 import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
 import edu.uci.ics.hyracks.dataflow.common.data.marshalling.FloatSerializerDeserializer;
@@ -54,7 +56,9 @@
         EQUAL,
         GREATER_THAN,
         UNKNOWN
-    };
+    }
+
+    ;
 
     protected DataOutput out;
     protected ArrayBackedValueStorage outLeft = new ArrayBackedValueStorage();
@@ -85,6 +89,9 @@
             .createBinaryComparator();
     protected IBinaryComparator rectangleBinaryComparator = ARectanglePartialBinaryComparatorFactory.INSTANCE
             .createBinaryComparator();
+    protected final IBinaryComparator byteArrayComparator = new PointableBinaryComparatorFactory(
+            ByteArrayPointable.FACTORY)
+            .createBinaryComparator();
 
     public AbstractComparisonEvaluator(DataOutput out, ICopyEvaluatorFactory evalLeftFactory,
             ICopyEvaluatorFactory evalRightFactory) throws AlgebricksException {
@@ -142,8 +149,9 @@
             }
         }
 
-        if (isLeftNull || isRightNull)
+        if (isLeftNull || isRightNull) {
             return ComparisonResult.UNKNOWN;
+        }
 
         switch (typeTag1) {
             case INT8: {
@@ -228,15 +236,20 @@
                 result = rectangleBinaryComparator.compare(outLeft.getByteArray(), 1, outLeft.getLength() - 1,
                         outRight.getByteArray(), 1, outRight.getLength() - 1);
                 break;
+            case BINARY:
+                result = byteArrayComparator.compare(outLeft.getByteArray(), 1, outLeft.getLength() - 1,
+                        outRight.getByteArray(), 1, outRight.getLength() - 1);
+                break;
             default:
                 throw new AlgebricksException("Comparison for " + actualTypeTag + " is not supported.");
         }
-        if (result == 0)
+        if (result == 0) {
             return ComparisonResult.EQUAL;
-        else if (result < 0)
+        } else if (result < 0) {
             return ComparisonResult.LESS_THAN;
-        else
+        } else {
             return ComparisonResult.GREATER_THAN;
+        }
     }
 
     private ComparisonResult compareBooleanWithArg(ATypeTag typeTag2) throws AlgebricksException {
@@ -252,12 +265,13 @@
         if (typeTag2 == ATypeTag.STRING) {
             int result = strBinaryComp.compare(outLeft.getByteArray(), 1, outLeft.getLength() - 1,
                     outRight.getByteArray(), 1, outRight.getLength() - 1);
-            if (result == 0)
+            if (result == 0) {
                 return ComparisonResult.EQUAL;
-            else if (result < 0)
+            } else if (result < 0) {
                 return ComparisonResult.LESS_THAN;
-            else
+            } else {
                 return ComparisonResult.GREATER_THAN;
+            }
         }
         throw new AlgebricksException("Comparison is undefined between types AString and " + typeTag2 + " .");
     }
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ABinaryBase64StringConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ABinaryBase64StringConstructorDescriptor.java
new file mode 100644
index 0000000..e492c82
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ABinaryBase64StringConstructorDescriptor.java
@@ -0,0 +1,35 @@
+package edu.uci.ics.asterix.runtime.evaluators.constructors;
+
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
+import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.dataflow.common.data.parsers.ByteArrayBase64ParserFactory;
+
+public class ABinaryBase64StringConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+
+    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        @Override public IFunctionDescriptor createFunctionDescriptor() {
+            return new ABinaryBase64StringConstructorDescriptor();
+        }
+    };
+
+    @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args)
+            throws AlgebricksException {
+        return new ICopyEvaluatorFactory() {
+            @Override public ICopyEvaluator createEvaluator(IDataOutputProvider output) throws AlgebricksException {
+                return new ABinaryHexStringConstructorDescriptor.ABinaryConstructorEvaluator(output, args[0],
+                        ByteArrayBase64ParserFactory.INSTANCE);
+            }
+        };
+    }
+
+    @Override public FunctionIdentifier getIdentifier() {
+        return AsterixBuiltinFunctions.BINARY_BASE64_CONSTRUCTOR;
+    }
+}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ABinaryHexStringConstructorDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ABinaryHexStringConstructorDescriptor.java
new file mode 100644
index 0000000..bcf2715
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/constructors/ABinaryHexStringConstructorDescriptor.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.runtime.evaluators.constructors;
+
+import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
+import edu.uci.ics.asterix.om.base.ANull;
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.om.types.BuiltinType;
+import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+import edu.uci.ics.hyracks.dataflow.common.data.parsers.ByteArrayHexParserFactory;
+import edu.uci.ics.hyracks.dataflow.common.data.parsers.IValueParser;
+import edu.uci.ics.hyracks.dataflow.common.data.parsers.IValueParserFactory;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+public class ABinaryHexStringConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+    private static final long serialVersionUID = 1L;
+    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        public IFunctionDescriptor createFunctionDescriptor() {
+            return new ABinaryHexStringConstructorDescriptor();
+        }
+    };
+
+    @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args)
+            throws AlgebricksException {
+        return new ICopyEvaluatorFactory() {
+            @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output)
+                    throws AlgebricksException {
+                return new ABinaryConstructorEvaluator(output, args[0], ByteArrayHexParserFactory.INSTANCE);
+            }
+        };
+    }
+
+    @Override public FunctionIdentifier getIdentifier() {
+        return AsterixBuiltinFunctions.BINARY_HEX_CONSTRUCTOR;
+    }
+
+    static class ABinaryConstructorEvaluator implements ICopyEvaluator {
+        private DataOutput out;
+        private ArrayBackedValueStorage outInput;
+        private ICopyEvaluator eval;
+        private IValueParser byteArrayParser;
+
+        @SuppressWarnings("unchecked")
+        private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
+                .getSerializerDeserializer(BuiltinType.ANULL);
+
+        public ABinaryConstructorEvaluator(final IDataOutputProvider output, ICopyEvaluatorFactory copyEvaluatorFactory,
+                IValueParserFactory valueParserFactory)
+                throws AlgebricksException {
+            out = output.getDataOutput();
+            outInput = new ArrayBackedValueStorage();
+            eval = copyEvaluatorFactory.createEvaluator(outInput);
+            byteArrayParser = valueParserFactory.createValueParser();
+        }
+
+        @Override public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
+
+            try {
+                outInput.reset();
+                eval.evaluate(tuple);
+                byte[] binary = outInput.getByteArray();
+
+                ATypeTag tt = ATypeTag.VALUE_TYPE_MAPPING[binary[0]];
+                if (tt == ATypeTag.NULL) {
+                    nullSerde.serialize(ANull.NULL, out);
+                } else if (tt == ATypeTag.BINARY) {
+                    out.write(outInput.getByteArray(), outInput.getStartOffset(), outInput.getLength());
+                } else if (tt == ATypeTag.STRING) {
+                    String string = new String(outInput.getByteArray(), 3, outInput.getLength() - 3,
+                            "UTF-8");
+                    char[] buffer = string.toCharArray();
+                    out.write(ATypeTag.BINARY.serialize());
+                    byteArrayParser.parse(buffer, 0, buffer.length, out);
+                } else {
+                    throw new AlgebricksException("binary type of " + tt + "haven't implemented yet.");
+                }
+            } catch (IOException e) {
+                throw new AlgebricksException(e);
+            }
+        }
+    }
+
+    ;
+}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/AbstractCopyEvaluator.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/AbstractCopyEvaluator.java
new file mode 100644
index 0000000..09dc82d
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/AbstractCopyEvaluator.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.runtime.evaluators.functions.binary;
+
+import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
+import edu.uci.ics.asterix.om.base.ANull;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.om.types.BuiltinType;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+
+import java.io.DataOutput;
+
+public abstract class AbstractCopyEvaluator implements ICopyEvaluator {
+    @SuppressWarnings("unchecked")
+    protected ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
+            .getSerializerDeserializer(BuiltinType.ANULL);
+
+    protected DataOutput dataOutput;
+    protected ArrayBackedValueStorage[] storages;
+    protected ICopyEvaluator[] evaluators;
+
+    public AbstractCopyEvaluator(final IDataOutputProvider output, final ICopyEvaluatorFactory[] copyEvaluatorFactories)
+            throws AlgebricksException {
+        dataOutput = output.getDataOutput();
+        storages = new ArrayBackedValueStorage[copyEvaluatorFactories.length];
+        evaluators = new ICopyEvaluator[copyEvaluatorFactories.length];
+        for (int i = 0; i < evaluators.length; ++i) {
+            storages[i] = new ArrayBackedValueStorage();
+            evaluators[i] = copyEvaluatorFactories[i].createEvaluator(storages[i]);
+        }
+    }
+
+    public ATypeTag evaluateTuple(IFrameTupleReference tuple, int id) throws AlgebricksException {
+        storages[id].reset();
+        evaluators[id].evaluate(tuple);
+        return ATypeTag.VALUE_TYPE_MAPPING[storages[id].getByteArray()[0]];
+    }
+
+    public boolean serializeNullIfAnyNull(ATypeTag... tags) throws HyracksDataException {
+        for (ATypeTag typeTag : tags) {
+            if (typeTag == ATypeTag.NULL) {
+                nullSerde.serialize(ANull.NULL, dataOutput);
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static final String FIRST = "1st";
+    private static final String SECOND = "2nd";
+    private static final String THIRD = "3rd";
+    private static final String TH = "th";
+
+    public static String idToString(int i) {
+        String prefix = "";
+        if (i >= 10) {
+            prefix = String.valueOf(i / 10);
+        }
+        switch (i % 10) {
+            case 1:
+                return prefix + FIRST;
+            case 2:
+                return prefix + SECOND;
+            case 3:
+                return prefix + THIRD;
+            default:
+                return String.valueOf(i) + TH;
+        }
+    }
+
+    public static void checkTypeMachingThrowsIfNot(String title, ATypeTag[] expected, ATypeTag... actual)
+            throws AlgebricksException {
+        for (int i = 0; i < expected.length; i++) {
+            if (expected[i] != actual[i]) {
+                throw new AlgebricksException(title +
+                        ": expects " + expected[i] + " at " + idToString(i + 1) + " argument, but got " + actual[i]);
+            }
+        }
+    }
+
+}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/BinaryConcatDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/BinaryConcatDescriptor.java
new file mode 100644
index 0000000..ab1d6e1
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/BinaryConcatDescriptor.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.runtime.evaluators.functions.binary;
+
+import edu.uci.ics.asterix.common.exceptions.AsterixException;
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import edu.uci.ics.asterix.runtime.evaluators.common.AsterixListAccessor;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+
+import java.io.IOException;
+
+public class BinaryConcatDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        @Override public IFunctionDescriptor createFunctionDescriptor() {
+            return new BinaryConcatDescriptor();
+        }
+    };
+
+    @Override public FunctionIdentifier getIdentifier() {
+        return AsterixBuiltinFunctions.BINARY_CONCAT;
+    }
+
+    @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args)
+            throws AlgebricksException {
+        return new ICopyEvaluatorFactory() {
+            @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output)
+                    throws AlgebricksException {
+                return new AbstractCopyEvaluator(output, args) {
+
+                    private final AsterixListAccessor listAccessor = new AsterixListAccessor();
+                    private final byte SER_BINARY_TYPE = ATypeTag.BINARY.serialize();
+
+                    @Override public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
+                        ATypeTag typeTag = evaluateTuple(tuple, 0);
+                        if (typeTag != ATypeTag.UNORDEREDLIST && typeTag != ATypeTag.ORDEREDLIST) {
+                            throw new AlgebricksException(getIdentifier().getName()
+                                    + ": expects input type ORDEREDLIST/UNORDEREDLIST, but got "
+                                    + typeTag);
+                        }
+                        try {
+                            listAccessor.reset(storages[0].getByteArray(), 0);
+
+                            int concatLength = 0;
+                            for (int i = 0; i < listAccessor.size(); i++) {
+                                int itemOffset = listAccessor.getItemOffset(i);
+                                ATypeTag itemType = listAccessor.getItemType(itemOffset);
+                                if (itemType != ATypeTag.BINARY) {
+                                    if (serializeNullIfAnyNull(itemType)) {
+                                        return;
+                                    }
+                                    throw new AlgebricksException(getIdentifier().getName()
+                                            + ": expects type STRING/NULL for the list item but got " + itemType);
+                                }
+                                concatLength += ByteArrayPointable.getLength(storages[0].getByteArray(), itemOffset);
+                            }
+                            if (concatLength > ByteArrayPointable.MAX_LENGTH) {
+                                throw new AlgebricksException("the concatenated binary is too long.");
+                            }
+                            dataOutput.writeByte(SER_BINARY_TYPE);
+                            dataOutput.writeShort(concatLength);
+
+                            for (int i = 0; i < listAccessor.size(); i++) {
+                                int itemOffset = listAccessor.getItemOffset(i);
+                                int length = ByteArrayPointable.getLength(storages[0].getByteArray(), itemOffset);
+                                dataOutput.write(storages[0].getByteArray(),
+                                        itemOffset + ByteArrayPointable.SIZE_OF_LENGTH, length);
+                            }
+                        } catch (HyracksDataException e) {
+                            throw new AlgebricksException(e);
+                        } catch (IOException e) {
+                            throw new AlgebricksException(e);
+                        } catch (AsterixException e) {
+                            throw new AlgebricksException(e);
+                        }
+
+                    }
+                };
+
+            }
+        };
+
+    }
+}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/BinaryLengthDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/BinaryLengthDescriptor.java
new file mode 100644
index 0000000..1d4717e
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/BinaryLengthDescriptor.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.runtime.evaluators.functions.binary;
+
+import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
+import edu.uci.ics.asterix.om.base.AInt32;
+import edu.uci.ics.asterix.om.base.AMutableInt32;
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.om.types.BuiltinType;
+import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+
+public class BinaryLengthDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+    private static final long serialVersionUID = 1L;
+    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        public IFunctionDescriptor createFunctionDescriptor() {
+            return new BinaryLengthDescriptor();
+        }
+    };
+
+    private static final ATypeTag[] EXPECTED_TAGS = { ATypeTag.BINARY };
+
+    @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args)
+            throws AlgebricksException {
+        return new ICopyEvaluatorFactory() {
+            @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output)
+                    throws AlgebricksException {
+                return new AbstractCopyEvaluator(output, args) {
+
+                    private AMutableInt32 result = new AMutableInt32(0);
+                    @SuppressWarnings("unchecked")
+                    private ISerializerDeserializer<AInt32> intSerde = AqlSerializerDeserializerProvider.INSTANCE
+                            .getSerializerDeserializer(BuiltinType.AINT32);
+
+                    @Override public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
+                        ATypeTag tag = evaluateTuple(tuple, 0);
+                        try {
+                            if (serializeNullIfAnyNull(tag)) {
+                                return;
+                            }
+                            checkTypeMachingThrowsIfNot(getIdentifier().getName(), EXPECTED_TAGS, tag);
+                            int len = ByteArrayPointable.getLength(storages[0].getByteArray(), 1);
+                            result.setValue(len);
+                            intSerde.serialize(result, dataOutput);
+                        } catch (HyracksDataException e) {
+                            throw new AlgebricksException(e);
+                        }
+
+                    }
+                };
+            }
+        };
+    }
+
+    @Override public FunctionIdentifier getIdentifier() {
+        return AsterixBuiltinFunctions.BINARY_LENGTH;
+    }
+}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/FindBinaryDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/FindBinaryDescriptor.java
new file mode 100644
index 0000000..4ba91d9
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/FindBinaryDescriptor.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.runtime.evaluators.functions.binary;
+
+import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
+import edu.uci.ics.asterix.om.base.AInt32;
+import edu.uci.ics.asterix.om.base.AMutableInt32;
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.om.types.BuiltinType;
+import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+
+public class FindBinaryDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+
+    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        @Override public IFunctionDescriptor createFunctionDescriptor() {
+            return new FindBinaryDescriptor();
+        }
+    };
+
+    @Override public FunctionIdentifier getIdentifier() {
+        return AsterixBuiltinFunctions.FIND_BINARY;
+    }
+
+    private static final ATypeTag[] EXPECTED_INPUT_TAG = { ATypeTag.BINARY, ATypeTag.BINARY };
+
+    @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args)
+            throws AlgebricksException {
+        return new ICopyEvaluatorFactory() {
+            @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output)
+                    throws AlgebricksException {
+                return new AbstractFindBinaryCopyEvaluator(output, args, getIdentifier().getName()) {
+                    @Override protected int getFromOffset(IFrameTupleReference tuple) throws AlgebricksException {
+                        return 0;
+                    }
+                };
+            }
+        };
+    }
+
+    static abstract class AbstractFindBinaryCopyEvaluator extends AbstractCopyEvaluator {
+
+        public AbstractFindBinaryCopyEvaluator(IDataOutputProvider output,
+                ICopyEvaluatorFactory[] copyEvaluatorFactories, String functionName) throws AlgebricksException {
+            super(output, copyEvaluatorFactories);
+            this.functionName = functionName;
+        }
+
+        protected String functionName;
+        protected AMutableInt32 result = new AMutableInt32(-1);
+
+        @SuppressWarnings("unchecked")
+        protected ISerializerDeserializer<AInt32> intSerde = AqlSerializerDeserializerProvider.INSTANCE
+                .getSerializerDeserializer(BuiltinType.AINT32);
+
+        @Override public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
+            ATypeTag textTag = evaluateTuple(tuple, 0);
+            ATypeTag wordTag = evaluateTuple(tuple, 1);
+            int fromOffset = getFromOffset(tuple);
+
+            try {
+                if (serializeNullIfAnyNull(textTag, wordTag)) {
+                    return;
+                }
+                checkTypeMachingThrowsIfNot(functionName, EXPECTED_INPUT_TAG, textTag,
+                        wordTag);
+
+                byte[] textBytes = storages[0].getByteArray();
+                byte[] wordBytes = storages[1].getByteArray();
+                int textLength = ByteArrayPointable.getLength(textBytes, 1);
+                int wordLength = ByteArrayPointable.getLength(wordBytes, 1);
+                result.setValue(1 + indexOf(textBytes, 3, textLength, wordBytes, 3, wordLength, fromOffset));
+                intSerde.serialize(result, dataOutput);
+            } catch (HyracksDataException e) {
+                throw new AlgebricksException(e);
+            }
+        }
+
+        protected abstract int getFromOffset(IFrameTupleReference tuple) throws AlgebricksException;
+    }
+
+    // copy from String.indexOf(String)
+    static int indexOf(byte[] source, int sourceOffset, int sourceCount,
+            byte[] target, int targetOffset, int targetCount,
+            int fromIndex) {
+        if (fromIndex >= sourceCount) {
+            return (targetCount == 0 ? sourceCount : -1);
+        }
+        if (fromIndex < 0) {
+            fromIndex = 0;
+        }
+        if (targetCount == 0) {
+            return fromIndex;
+        }
+
+        byte first = target[targetOffset];
+        int max = sourceOffset + (sourceCount - targetCount);
+
+        for (int i = sourceOffset + fromIndex; i <= max; i++) {
+            /* Look for first character. */
+            if (source[i] != first) {
+                while (++i <= max && source[i] != first)
+                    ;
+            }
+
+            /* Found first character, now look at the rest of v2 */
+            if (i <= max) {
+                int j = i + 1;
+                int end = j + targetCount - 1;
+                for (int k = targetOffset + 1; j < end && source[j]
+                        == target[k]; j++, k++)
+                    ;
+
+                if (j == end) {
+                    /* Found whole string. */
+                    return i - sourceOffset;
+                }
+            }
+        }
+        return -1;
+    }
+
+}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/FindBinaryFromDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/FindBinaryFromDescriptor.java
new file mode 100644
index 0000000..4d0598b
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/FindBinaryFromDescriptor.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.runtime.evaluators.functions.binary;
+
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+import edu.uci.ics.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
+
+public class FindBinaryFromDescriptor extends AbstractScalarFunctionDynamicDescriptor{
+
+    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        @Override public IFunctionDescriptor createFunctionDescriptor() {
+            return new FindBinaryFromDescriptor();
+        }
+    };
+
+    @Override public FunctionIdentifier getIdentifier() {
+        return AsterixBuiltinFunctions.FIND_BINARY_FROM;
+    }
+
+    @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args)
+            throws AlgebricksException {
+        return new ICopyEvaluatorFactory() {
+            @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException {
+                return new FindBinaryDescriptor.AbstractFindBinaryCopyEvaluator(output, args, getIdentifier().getName()) {
+                    @Override protected int getFromOffset(IFrameTupleReference tuple) throws AlgebricksException {
+                        ATypeTag offsetTag = evaluateTuple(tuple, 2);
+                        if (offsetTag != ATypeTag.INT32){
+                            throw new AlgebricksException(functionName + ":expects INT32 at 3rd arguments, but got " + offsetTag);
+                        }
+                        return IntegerSerializerDeserializer.getInt(storages[2].getByteArray(), 1);
+                    }
+                };
+            }
+        };
+    }
+
+}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/ParseBinaryDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/ParseBinaryDescriptor.java
new file mode 100644
index 0000000..35a7fec
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/ParseBinaryDescriptor.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.runtime.evaluators.functions.binary;
+
+import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
+import edu.uci.ics.asterix.om.base.ABinary;
+import edu.uci.ics.asterix.om.base.AMutableBinary;
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.om.types.BuiltinType;
+import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+import edu.uci.ics.hyracks.dataflow.common.data.parsers.ByteArrayBase64ParserFactory;
+import edu.uci.ics.hyracks.dataflow.common.data.parsers.ByteArrayHexParserFactory;
+
+public class ParseBinaryDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+
+    static final String HEX_FORMAT = "hex";
+    static final String BASE64_FORMAT = "base64";
+
+    static boolean isCaseIgnoreEqual(String expectedLowerCaseString, byte[] bytes, int start,
+            int length) {
+        int pos = start;
+        int index = 0;
+        while (pos < start + length) {
+            char c1 = UTF8StringPointable.charAt(bytes, pos);
+            c1 = Character.toLowerCase(c1);
+            if (expectedLowerCaseString.charAt(index++) != c1) {
+                return false;
+            }
+            pos += UTF8StringPointable.charSize(bytes, pos);
+        }
+        return index == expectedLowerCaseString.length();
+    }
+
+    public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        @Override
+        public IFunctionDescriptor createFunctionDescriptor() {
+            return new ParseBinaryDescriptor();
+        }
+    };
+
+    public static final ATypeTag[] EXPECTED_INPUT_TAGS = { ATypeTag.STRING, ATypeTag.STRING };
+
+    @Override public FunctionIdentifier getIdentifier() {
+        return AsterixBuiltinFunctions.PARSE_BINARY;
+    }
+
+    @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args)
+            throws AlgebricksException {
+        return new ICopyEvaluatorFactory() {
+            @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output)
+                    throws AlgebricksException {
+                return new AbstractCopyEvaluator(output, args) {
+
+                    @SuppressWarnings("unchecked")
+                    private ISerializerDeserializer<ABinary> binarySerde = AqlSerializerDeserializerProvider.INSTANCE
+                            .getSerializerDeserializer(BuiltinType.ABINARY);
+
+                    private AMutableBinary aBinary = new AMutableBinary(new byte[0], 0, 0);
+                    private final byte[] quadruplet = new byte[4];
+
+                    @Override public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
+                        ATypeTag binaryTag = evaluateTuple(tuple, 0);
+                        ATypeTag formatTag = evaluateTuple(tuple, 1);
+
+                        try {
+                            if (serializeNullIfAnyNull(binaryTag, formatTag)) {
+                                return;
+                            }
+                            checkTypeMachingThrowsIfNot(getIdentifier().getName(), EXPECTED_INPUT_TAGS, binaryTag,
+                                    formatTag);
+                            int lengthString = UTF8StringPointable.getUTFLength(storages[0].getByteArray(), 1);
+                            int lengthFormat = UTF8StringPointable.getUTFLength(storages[1].getByteArray(), 1);
+                            byte[] buffer;
+                            if (isCaseIgnoreEqual(HEX_FORMAT, storages[1].getByteArray(), 3, lengthFormat)) {
+                                buffer = ByteArrayHexParserFactory
+                                        .extractPointableArrayFromHexString(storages[0].getByteArray(), 3,
+                                                lengthString, aBinary.getBytes());
+                            } else if (isCaseIgnoreEqual(BASE64_FORMAT, storages[1].getByteArray(), 3, lengthFormat)) {
+                                buffer = ByteArrayBase64ParserFactory
+                                        .extractPointableArrayFromBase64String(storages[0].getByteArray(), 3
+                                                , lengthString, aBinary.getBytes(), quadruplet);
+                            } else {
+                                throw new AlgebricksException(getIdentifier().getName()
+                                        + ": expects format indicator of \"hex\" or \"base64\" in the 2nd argument");
+                            }
+                            aBinary.setValue(buffer, 0, buffer.length);
+                            binarySerde.serialize(aBinary, dataOutput);
+                        } catch (HyracksDataException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                };
+
+            }
+
+        };
+    }
+
+}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/PrintBinaryDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/PrintBinaryDescriptor.java
new file mode 100644
index 0000000..dd29782
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/PrintBinaryDescriptor.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.runtime.evaluators.functions.binary;
+
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ABinaryBase64Printer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ABinaryHexPrinter;
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+
+import java.io.IOException;
+
+import static edu.uci.ics.asterix.runtime.evaluators.functions.binary.ParseBinaryDescriptor.*;
+
+public class PrintBinaryDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+
+    private static final byte SER_STRING_BYTE = ATypeTag.STRING.serialize();
+
+    @Override public FunctionIdentifier getIdentifier() {
+        return AsterixBuiltinFunctions.PRINT_BINARY;
+    }
+
+    public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        @Override
+        public IFunctionDescriptor createFunctionDescriptor() {
+            return new PrintBinaryDescriptor();
+        }
+    };
+
+    public final static ATypeTag[] EXPECTED_INPUT_TAGS = { ATypeTag.BINARY, ATypeTag.STRING };
+
+    @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args)
+            throws AlgebricksException {
+        return new ICopyEvaluatorFactory() {
+            @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output)
+                    throws AlgebricksException {
+                return new AbstractCopyEvaluator(output, args) {
+
+                    private StringBuilder stringBuilder = new StringBuilder();
+
+                    @Override public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
+                        ATypeTag arg0Tag = evaluateTuple(tuple, 0);
+                        ATypeTag arg1Tag = evaluateTuple(tuple, 1);
+
+                        try {
+                            if (serializeNullIfAnyNull(arg0Tag, arg1Tag)) {
+                                return;
+                            }
+                            checkTypeMachingThrowsIfNot(getIdentifier().getName(), EXPECTED_INPUT_TAGS, arg0Tag,
+                                    arg1Tag);
+
+                            byte[] binaryBytes = storages[0].getByteArray();
+                            byte[] formatBytes = storages[1].getByteArray();
+
+                            int lengthBinary = ByteArrayPointable.getLength(binaryBytes, 1);
+                            int lengthFormat = UTF8StringPointable.getUTFLength(formatBytes, 1);
+                            stringBuilder.setLength(0);
+                            if (isCaseIgnoreEqual(HEX_FORMAT, formatBytes, 3, lengthFormat)) {
+                                ABinaryHexPrinter
+                                        .printHexString(binaryBytes, 3, lengthBinary, stringBuilder);
+
+                            } else if (isCaseIgnoreEqual(BASE64_FORMAT, formatBytes, 3, lengthFormat)) {
+                                ABinaryBase64Printer
+                                        .printBase64Binary(binaryBytes, 3, lengthBinary, stringBuilder);
+                            } else {
+                                throw new AlgebricksException(getIdentifier().getName()
+                                        + ": expects format indicator of \"hex\" or \"base64\" in the 2nd argument");
+                            }
+                            dataOutput.writeByte(SER_STRING_BYTE);
+                            dataOutput.writeUTF(stringBuilder.toString());
+                        } catch (HyracksDataException e) {
+                            throw new AlgebricksException(e);
+                        } catch (IOException e) {
+                            throw new AlgebricksException(e);
+                        }
+                    }
+                };
+            }
+        };
+
+    }
+}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/SubBinaryFromDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/SubBinaryFromDescriptor.java
new file mode 100644
index 0000000..2247f2e
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/SubBinaryFromDescriptor.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.runtime.evaluators.functions.binary;
+
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
+import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+
+public class SubBinaryFromDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+
+    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        @Override public IFunctionDescriptor createFunctionDescriptor() {
+            return new SubBinaryFromDescriptor();
+        }
+    };
+
+    @Override public FunctionIdentifier getIdentifier() {
+        return AsterixBuiltinFunctions.SUBBINARY_FROM;
+    }
+
+    @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args)
+            throws AlgebricksException {
+        return new ICopyEvaluatorFactory() {
+            @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output)
+                    throws AlgebricksException {
+                return new SubBinaryFromToDescriptor.AbstractSubBinaryCopyEvaluator(output, args,
+                        getIdentifier().getName()) {
+                    @Override protected int getSubLength(IFrameTupleReference tuple) throws AlgebricksException {
+                        return ByteArrayPointable.MAX_LENGTH;
+                    }
+                };
+            }
+        };
+    }
+
+}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/SubBinaryFromToDescriptor.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/SubBinaryFromToDescriptor.java
new file mode 100644
index 0000000..9b3a48f
--- /dev/null
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/evaluators/functions/binary/SubBinaryFromToDescriptor.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package edu.uci.ics.asterix.runtime.evaluators.functions.binary;
+
+import edu.uci.ics.asterix.om.functions.AsterixBuiltinFunctions;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptor;
+import edu.uci.ics.asterix.om.functions.IFunctionDescriptorFactory;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
+import edu.uci.ics.hyracks.data.std.primitive.ByteArrayPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+import edu.uci.ics.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
+
+import java.io.IOException;
+
+public class SubBinaryFromToDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+
+    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        @Override public IFunctionDescriptor createFunctionDescriptor() {
+            return new SubBinaryFromToDescriptor();
+        }
+    };
+
+    @Override public FunctionIdentifier getIdentifier() {
+        return AsterixBuiltinFunctions.SUBBINARY_FROM_TO;
+    }
+
+    @Override public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args)
+            throws AlgebricksException {
+        return new ICopyEvaluatorFactory() {
+            @Override public ICopyEvaluator createEvaluator(final IDataOutputProvider output)
+                    throws AlgebricksException {
+                return new AbstractSubBinaryCopyEvaluator(output, args, getIdentifier().getName()) {
+                    @Override protected int getSubLength(IFrameTupleReference tuple) throws AlgebricksException {
+                        ATypeTag tagSubLength = evaluateTuple(tuple, 2);
+                        if (tagSubLength != ATypeTag.INT32) {
+                            throw new AlgebricksException(
+                                    functionName + ":expects INT32 at 3rd arguments, but got " + tagSubLength);
+                        }
+                        return IntegerSerializerDeserializer.getInt(storages[2].getByteArray(), 1);
+                    }
+                };
+            }
+        };
+    }
+
+    static abstract class AbstractSubBinaryCopyEvaluator extends AbstractCopyEvaluator {
+        public AbstractSubBinaryCopyEvaluator(IDataOutputProvider output,
+                ICopyEvaluatorFactory[] copyEvaluatorFactories, String functionName)
+                throws AlgebricksException {
+            super(output, copyEvaluatorFactories);
+            this.functionName = functionName;
+        }
+
+        protected final String functionName;
+
+        static final ATypeTag[] EXPECTED_INPUT_TAGS = { ATypeTag.BINARY, ATypeTag.INT32 };
+
+        @Override public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
+
+            ATypeTag argTag0 = evaluateTuple(tuple, 0);
+            ATypeTag argTag1 = evaluateTuple(tuple, 1);
+
+            try {
+                if (serializeNullIfAnyNull(argTag0, argTag1)) {
+                    return;
+                }
+                checkTypeMachingThrowsIfNot(functionName, EXPECTED_INPUT_TAGS, argTag0,
+                        argTag1);
+
+                byte[] binaryBytes = storages[0].getByteArray();
+                byte[] startBytes = storages[1].getByteArray();
+
+                int start = IntegerSerializerDeserializer.getInt(startBytes, 1) - 1; // strange SQL index convention
+                int totalLength = ByteArrayPointable.getLength(binaryBytes, 1);
+                int subLength = getSubLength(tuple);
+
+                if (start < 0) {
+                    start = 0;
+                }
+
+                if (start >= totalLength || subLength < 0) {
+                    subLength = 0;
+                } else if (start + subLength > totalLength) {
+                    subLength = totalLength - start;
+                }
+
+                dataOutput.write(ATypeTag.BINARY.serialize());
+                dataOutput.writeShort(subLength);
+                dataOutput
+                        .write(binaryBytes, 1 + ByteArrayPointable.SIZE_OF_LENGTH + start, subLength);
+            } catch (HyracksDataException e) {
+                throw new AlgebricksException(e);
+            } catch (IOException e) {
+                throw new AlgebricksException(e);
+            }
+        }
+
+        protected abstract int getSubLength(IFrameTupleReference tuple) throws AlgebricksException;
+    }
+}
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 28ad34b..d9bf623 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
@@ -127,6 +127,8 @@
 import edu.uci.ics.asterix.runtime.evaluators.common.CreateMBREvalFactory;
 import edu.uci.ics.asterix.runtime.evaluators.common.FieldAccessByIndexEvalFactory;
 import edu.uci.ics.asterix.runtime.evaluators.common.FunctionManagerImpl;
+import edu.uci.ics.asterix.runtime.evaluators.constructors.ABinaryBase64StringConstructorDescriptor;
+import edu.uci.ics.asterix.runtime.evaluators.constructors.ABinaryHexStringConstructorDescriptor;
 import edu.uci.ics.asterix.runtime.evaluators.constructors.ABooleanConstructorDescriptor;
 import edu.uci.ics.asterix.runtime.evaluators.constructors.ACircleConstructorDescriptor;
 import edu.uci.ics.asterix.runtime.evaluators.constructors.ADateConstructorDescriptor;
@@ -242,6 +244,14 @@
 import edu.uci.ics.asterix.runtime.evaluators.functions.SwitchCaseDescriptor;
 import edu.uci.ics.asterix.runtime.evaluators.functions.UnorderedListConstructorDescriptor;
 import edu.uci.ics.asterix.runtime.evaluators.functions.WordTokensDescriptor;
+import edu.uci.ics.asterix.runtime.evaluators.functions.binary.BinaryConcatDescriptor;
+import edu.uci.ics.asterix.runtime.evaluators.functions.binary.BinaryLengthDescriptor;
+import edu.uci.ics.asterix.runtime.evaluators.functions.binary.FindBinaryDescriptor;
+import edu.uci.ics.asterix.runtime.evaluators.functions.binary.FindBinaryFromDescriptor;
+import edu.uci.ics.asterix.runtime.evaluators.functions.binary.ParseBinaryDescriptor;
+import edu.uci.ics.asterix.runtime.evaluators.functions.binary.PrintBinaryDescriptor;
+import edu.uci.ics.asterix.runtime.evaluators.functions.binary.SubBinaryFromDescriptor;
+import edu.uci.ics.asterix.runtime.evaluators.functions.binary.SubBinaryFromToDescriptor;
 import edu.uci.ics.asterix.runtime.evaluators.functions.temporal.AdjustDateTimeForTimeZoneDescriptor;
 import edu.uci.ics.asterix.runtime.evaluators.functions.temporal.AdjustTimeForTimeZoneDescriptor;
 import edu.uci.ics.asterix.runtime.evaluators.functions.temporal.CalendarDuartionFromDateDescriptor;
@@ -410,6 +420,17 @@
         temp.add(NumericRoundDescriptor.FACTORY);
         temp.add(NumericRoundHalfToEvenDescriptor.FACTORY);
         temp.add(NumericRoundHalfToEven2Descriptor.FACTORY);
+
+        // Binary functions
+        temp.add(BinaryLengthDescriptor.FACTORY);
+        temp.add(ParseBinaryDescriptor.FACTORY);
+        temp.add(PrintBinaryDescriptor.FACTORY);
+        temp.add(BinaryConcatDescriptor.FACTORY);
+        temp.add(SubBinaryFromDescriptor.FACTORY);
+        temp.add(SubBinaryFromToDescriptor.FACTORY);
+        temp.add(FindBinaryDescriptor.FACTORY);
+        temp.add(FindBinaryFromDescriptor.FACTORY);
+
         // String functions
         temp.add(StringEqualDescriptor.FACTORY);
         temp.add(StringStartWithDescrtiptor.FACTORY);
@@ -491,6 +512,8 @@
         // new functions - constructors
         temp.add(ABooleanConstructorDescriptor.FACTORY);
         temp.add(ANullConstructorDescriptor.FACTORY);
+        temp.add(ABinaryHexStringConstructorDescriptor.FACTORY);
+        temp.add(ABinaryBase64StringConstructorDescriptor.FACTORY);
         temp.add(AStringConstructorDescriptor.FACTORY);
         temp.add(AInt8ConstructorDescriptor.FACTORY);
         temp.add(AInt16ConstructorDescriptor.FACTORY);
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java
index 0cd3098..a6419fe 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/ADMDataParser.java
@@ -18,7 +18,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayDeque;
-import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.List;
 import java.util.Queue;
@@ -32,9 +31,7 @@
 import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import edu.uci.ics.asterix.dataflow.data.nontagged.serde.APolygonSerializerDeserializer;
 import edu.uci.ics.asterix.om.base.ABoolean;
-import edu.uci.ics.asterix.om.base.AMutableUUID;
 import edu.uci.ics.asterix.om.base.ANull;
-import edu.uci.ics.asterix.om.base.AUUID;
 import edu.uci.ics.asterix.om.types.AOrderedListType;
 import edu.uci.ics.asterix.om.types.ARecordType;
 import edu.uci.ics.asterix.om.types.ATypeTag;
@@ -151,10 +148,11 @@
     public void initialize(InputStream in, ARecordType recordType, boolean datasetRec) throws AsterixException {
         // Use original record type variable - origRecTypeForAutoGeneratedPK if we have auto-generated PK.
         // The recordType variable does not contain field information about auto-generated PK.
-        if (!isPKAutoGenerated)
+        if (!isPKAutoGenerated) {
             this.recordType = recordType;
-        else
+        } else {
             this.recordType = origRecTypeForAutoGeneratedPK;
+        }
         this.datasetRec = datasetRec;
         try {
             admLexer = new AdmLexer(new java.io.InputStreamReader(in));
@@ -181,15 +179,17 @@
             case AdmLexer.TOKEN_NULL_LITERAL: {
                 if (checkType(ATypeTag.NULL, objectType)) {
                     nullSerde.serialize(ANull.NULL, out);
-                } else
+                } else {
                     throw new ParseException("This field can not be null");
+                }
                 break;
             }
             case AdmLexer.TOKEN_TRUE_LITERAL: {
                 if (checkType(ATypeTag.BOOLEAN, objectType)) {
                     booleanSerde.serialize(ABoolean.TRUE, out);
-                } else
+                } else {
                     throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
+                }
                 break;
             }
             case AdmLexer.TOKEN_BOOLEAN_CONS: {
@@ -199,8 +199,9 @@
             case AdmLexer.TOKEN_FALSE_LITERAL: {
                 if (checkType(ATypeTag.BOOLEAN, objectType)) {
                     booleanSerde.serialize(ABoolean.FALSE, out);
-                } else
+                } else {
                     throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
+                }
                 break;
             }
             case AdmLexer.TOKEN_DOUBLE_LITERAL: {
@@ -267,14 +268,29 @@
                             admLexer.getLastTokenImage().length() - 1);
                     aUUID.fromStringToAMuatbleUUID(tokenImage);
                     uuidSerde.serialize(aUUID, out);
-                } else
+                } else {
                     throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
+                }
                 break;
             }
             case AdmLexer.TOKEN_STRING_CONS: {
                 parseConstructor(ATypeTag.STRING, objectType, out);
                 break;
             }
+            case AdmLexer.TOKEN_HEX_CONS:
+            case AdmLexer.TOKEN_BASE64_CONS: {
+                if (checkType(ATypeTag.BINARY, objectType)) {
+                    if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
+                        if (admLexer.next() == AdmLexer.TOKEN_STRING_LITERAL) {
+                            parseToBinaryTarget(token, admLexer.getLastTokenImage(), out);
+                            if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
+                                break;
+                            }
+                        }
+                    }
+                }
+                throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
+            }
             case AdmLexer.TOKEN_DATE_CONS: {
                 parseConstructor(ATypeTag.DATE, objectType, out);
                 break;
@@ -369,8 +385,9 @@
                 if (checkType(ATypeTag.UNORDEREDLIST, objectType)) {
                     objectType = getComplexType(objectType, ATypeTag.UNORDEREDLIST);
                     parseUnorderedList((AUnorderedListType) objectType, out);
-                } else
+                } else {
                     throw new ParseException(mismatchErrorMessage + objectType.getTypeTag());
+                }
                 break;
             }
 
@@ -378,16 +395,18 @@
                 if (checkType(ATypeTag.ORDEREDLIST, objectType)) {
                     objectType = getComplexType(objectType, ATypeTag.ORDEREDLIST);
                     parseOrderedList((AOrderedListType) objectType, out);
-                } else
+                } else {
                     throw new ParseException(mismatchErrorMessage + objectType.getTypeTag());
+                }
                 break;
             }
             case AdmLexer.TOKEN_START_RECORD: {
                 if (checkType(ATypeTag.RECORD, objectType)) {
                     objectType = getComplexType(objectType, ATypeTag.RECORD);
                     parseRecord((ARecordType) objectType, out, datasetRec);
-                } else
+                } else {
                     throw new ParseException(mismatchErrorMessage + objectType.getTypeTag());
+                }
                 break;
             }
             case AdmLexer.TOKEN_UUID_CONS: {
@@ -401,6 +420,7 @@
                 throw new ParseException("Unexpected ADM token kind: " + AdmLexer.tokenKindToString(token) + ".");
             }
         }
+
     }
 
     private String replaceEscapes(String tokenImage) throws ParseException {
@@ -464,15 +484,17 @@
             return null;
         }
 
-        if (aObjectType.getTypeTag() == tag)
+        if (aObjectType.getTypeTag() == tag) {
             return aObjectType;
+        }
 
         if (aObjectType.getTypeTag() == ATypeTag.UNION) {
             List<IAType> unionList = ((AUnionType) aObjectType).getUnionList();
-            for (int i = 0; i < unionList.size(); i++)
+            for (int i = 0; i < unionList.size(); i++) {
                 if (unionList.get(i).getTypeTag() == tag) {
                     return unionList.get(i);
                 }
+            }
         }
         return null; // wont get here
     }
@@ -512,13 +534,15 @@
             if (recType != null) {
                 nulls = new BitSet(recType.getFieldNames().length);
                 recBuilder.reset(recType);
-            } else
+            } else {
                 recBuilder.reset(null);
+            }
         } else if (recType != null) {
             nulls = new BitSet(recType.getFieldNames().length);
             recBuilder.reset(recType);
-        } else
+        } else {
             recBuilder.reset(null);
+        }
 
         recBuilder.init();
         int token;
@@ -581,8 +605,9 @@
                     token = admLexer.next();
                     this.admFromLexerStream(token, fieldType, fieldValueBuffer.getDataOutput(), false);
                     if (openRecordField) {
-                        if (fieldValueBuffer.getByteArray()[0] != ATypeTag.NULL.serialize())
+                        if (fieldValueBuffer.getByteArray()[0] != ATypeTag.NULL.serialize()) {
                             recBuilder.addField(fieldNameBuffer, fieldValueBuffer);
+                        }
                     } else if (recType.getFieldTypes()[fieldId].getTypeTag() == ATypeTag.UNION) {
                         if (NonTaggedFormatUtil.isOptionalField((AUnionType) recType.getFieldTypes()[fieldId])) {
                             if (fieldValueBuffer.getByteArray()[0] != ATypeTag.NULL.serialize()) {
@@ -621,21 +646,26 @@
             // where nullableFieldId equals primaryKey field.
             // In this case, we create a random ID and assign it as a PK
             if (isPKAutoGenerated && nullableFieldId == primaryKeyPosition) {
-                   fieldValueBuffer.reset();
-                   aUUID.nextUUID();
+                fieldValueBuffer.reset();
+                aUUID.nextUUID();
                 fieldValueBuffer.getDataOutput().writeByte(AUUIDTag);
-                Integer64SerializerDeserializer.INSTANCE.serialize(aUUID.getMostSignificantBits(), fieldValueBuffer.getDataOutput());
-                Integer64SerializerDeserializer.INSTANCE.serialize(aUUID.getLeastSignificantBits(), fieldValueBuffer.getDataOutput());
+                Integer64SerializerDeserializer.INSTANCE
+                        .serialize(aUUID.getMostSignificantBits(), fieldValueBuffer.getDataOutput());
+                Integer64SerializerDeserializer.INSTANCE
+                        .serialize(aUUID.getLeastSignificantBits(), fieldValueBuffer.getDataOutput());
                 recBuilder.addField(primaryKeyPosition, fieldValueBuffer);
                 insertedAutoGeneratedPK = true;
                 nulls.set(nullableFieldId);
                 // Check from the primary key field position to make sure no other field is missing
                 nullableFieldId = checkNullConstraints(recType, nulls, nullableFieldId);
             }
-            if (nullableFieldId != -1)
+            if (nullableFieldId != -1) {
                 throw new ParseException("Field: " + recType.getFieldNames()[nullableFieldId] + " can not be null");
-            if (isPKAutoGenerated && !insertedAutoGeneratedPK)
-                throw new ParseException("Auto-generated PK Field: " + recType.getFieldNames()[primaryKeyPosition] + " should not exist in the ADM file.");
+            }
+            if (isPKAutoGenerated && !insertedAutoGeneratedPK) {
+                throw new ParseException("Auto-generated PK Field: " + recType.getFieldNames()[primaryKeyPosition]
+                        + " should not exist in the ADM file.");
+            }
         }
         recBuilder.write(out, true);
         returnRecordBuilder(recBuilder);
@@ -645,23 +675,27 @@
 
     private int checkNullConstraints(ARecordType recType, BitSet nulls, int startingPosition) {
         boolean isNull = false;
-        for (int i = startingPosition; i < recType.getFieldTypes().length; i++)
+        for (int i = startingPosition; i < recType.getFieldTypes().length; i++) {
             if (nulls.get(i) == false) {
                 IAType type = recType.getFieldTypes()[i];
-                if (type.getTypeTag() != ATypeTag.NULL && type.getTypeTag() != ATypeTag.UNION)
+                if (type.getTypeTag() != ATypeTag.NULL && type.getTypeTag() != ATypeTag.UNION) {
                     return i;
+                }
 
                 if (type.getTypeTag() == ATypeTag.UNION) { // union
                     List<IAType> unionList = ((AUnionType) type).getUnionList();
-                    for (int j = 0; j < unionList.size(); j++)
+                    for (int j = 0; j < unionList.size(); j++) {
                         if (unionList.get(j).getTypeTag() == ATypeTag.NULL) {
                             isNull = true;
                             break;
                         }
-                    if (!isNull)
+                    }
+                    if (!isNull) {
                         return i;
+                    }
                 }
             }
+        }
         return -1;
     }
 
@@ -671,8 +705,9 @@
         OrderedListBuilder orderedListBuilder = (OrderedListBuilder) getOrderedListBuilder();
 
         IAType itemType = null;
-        if (oltype != null)
+        if (oltype != null) {
             itemType = oltype.getItemType();
+        }
         orderedListBuilder.reset(oltype);
 
         int token;
@@ -715,8 +750,9 @@
 
         IAType itemType = null;
 
-        if (uoltype != null)
+        if (uoltype != null) {
             itemType = uoltype.getItemType();
+        }
         unorderedListBuilder.reset(uoltype);
 
         int token;
@@ -758,10 +794,11 @@
 
     private IARecordBuilder getRecordBuilder() {
         RecordBuilder recBuilder = (RecordBuilder) recordBuilderPool.poll();
-        if (recBuilder != null)
+        if (recBuilder != null) {
             return recBuilder;
-        else
+        } else {
             return new RecordBuilder();
+        }
     }
 
     private void returnRecordBuilder(IARecordBuilder recBuilder) {
@@ -770,10 +807,11 @@
 
     private IAsterixListBuilder getOrderedListBuilder() {
         OrderedListBuilder orderedListBuilder = (OrderedListBuilder) orderedListBuilderPool.poll();
-        if (orderedListBuilder != null)
+        if (orderedListBuilder != null) {
             return orderedListBuilder;
-        else
+        } else {
             return new OrderedListBuilder();
+        }
     }
 
     private void returnOrderedListBuilder(IAsterixListBuilder orderedListBuilder) {
@@ -782,10 +820,11 @@
 
     private IAsterixListBuilder getUnorderedListBuilder() {
         UnorderedListBuilder unorderedListBuilder = (UnorderedListBuilder) unorderedListBuilderPool.poll();
-        if (unorderedListBuilder != null)
+        if (unorderedListBuilder != null) {
             return unorderedListBuilder;
-        else
+        } else {
             return new UnorderedListBuilder();
+        }
     }
 
     private void returnUnorderedListBuilder(IAsterixListBuilder unorderedListBuilder) {
@@ -805,6 +844,20 @@
         baaosPool.add(tempBaaos);
     }
 
+    private void parseToBinaryTarget(int lexerToken, String tokenImage, DataOutput out)
+            throws ParseException, HyracksDataException {
+        switch (lexerToken) {
+            case AdmLexer.TOKEN_HEX_CONS: {
+                parseHexBinaryString(tokenImage.toCharArray(), 1, tokenImage.length() - 2, out);
+                break;
+            }
+            case AdmLexer.TOKEN_BASE64_CONS: {
+                parseBase64BinaryString(tokenImage.toCharArray(), 1, tokenImage.length() - 2, out);
+                break;
+            }
+        }
+    }
+
     private void parseToNumericTarget(ATypeTag typeTag, IAType objectType, DataOutput out) throws AsterixException,
             IOException {
         final ATypeTag targetTypeTag = getTargetTypeTag(typeTag, objectType);
@@ -951,12 +1004,13 @@
 
     private void parseBoolean(String bool, DataOutput out) throws AsterixException, HyracksDataException {
         String errorMessage = "This can not be an instance of boolean";
-        if (bool.equals("true"))
+        if (bool.equals("true")) {
             booleanSerde.serialize(ABoolean.TRUE, out);
-        else if (bool.equals("false"))
+        } else if (bool.equals("false")) {
             booleanSerde.serialize(ABoolean.FALSE, out);
-        else
+        } else {
             throw new ParseException(errorMessage);
+        }
     }
 
     private void parseInt8(String int8, DataOutput out) throws AsterixException, HyracksDataException {
@@ -965,24 +1019,27 @@
         byte value = 0;
         int offset = 0;
 
-        if (int8.charAt(offset) == '+')
+        if (int8.charAt(offset) == '+') {
             offset++;
-        else if (int8.charAt(offset) == '-') {
+        } else if (int8.charAt(offset) == '-') {
             offset++;
             positive = false;
         }
         for (; offset < int8.length(); offset++) {
-            if (int8.charAt(offset) >= '0' && int8.charAt(offset) <= '9')
+            if (int8.charAt(offset) >= '0' && int8.charAt(offset) <= '9') {
                 value = (byte) (value * 10 + int8.charAt(offset) - '0');
-            else if (int8.charAt(offset) == 'i' && int8.charAt(offset + 1) == '8' && offset + 2 == int8.length())
+            } else if (int8.charAt(offset) == 'i' && int8.charAt(offset + 1) == '8' && offset + 2 == int8.length()) {
                 break;
-            else
+            } else {
                 throw new ParseException(errorMessage);
+            }
         }
-        if (value < 0)
+        if (value < 0) {
             throw new ParseException(errorMessage);
-        if (value > 0 && !positive)
+        }
+        if (value > 0 && !positive) {
             value *= -1;
+        }
         aInt8.setValue(value);
         int8Serde.serialize(aInt8, out);
     }
@@ -993,25 +1050,28 @@
         short value = 0;
         int offset = 0;
 
-        if (int16.charAt(offset) == '+')
+        if (int16.charAt(offset) == '+') {
             offset++;
-        else if (int16.charAt(offset) == '-') {
+        } else if (int16.charAt(offset) == '-') {
             offset++;
             positive = false;
         }
         for (; offset < int16.length(); offset++) {
-            if (int16.charAt(offset) >= '0' && int16.charAt(offset) <= '9')
+            if (int16.charAt(offset) >= '0' && int16.charAt(offset) <= '9') {
                 value = (short) (value * 10 + int16.charAt(offset) - '0');
-            else if (int16.charAt(offset) == 'i' && int16.charAt(offset + 1) == '1' && int16.charAt(offset + 2) == '6'
-                    && offset + 3 == int16.length())
+            } else if (int16.charAt(offset) == 'i' && int16.charAt(offset + 1) == '1' && int16.charAt(offset + 2) == '6'
+                    && offset + 3 == int16.length()) {
                 break;
-            else
+            } else {
                 throw new ParseException(errorMessage);
+            }
         }
-        if (value < 0)
+        if (value < 0) {
             throw new ParseException(errorMessage);
-        if (value > 0 && !positive)
+        }
+        if (value > 0 && !positive) {
             value *= -1;
+        }
         aInt16.setValue(value);
         int16Serde.serialize(aInt16, out);
     }
@@ -1022,25 +1082,28 @@
         int value = 0;
         int offset = 0;
 
-        if (int32.charAt(offset) == '+')
+        if (int32.charAt(offset) == '+') {
             offset++;
-        else if (int32.charAt(offset) == '-') {
+        } else if (int32.charAt(offset) == '-') {
             offset++;
             positive = false;
         }
         for (; offset < int32.length(); offset++) {
-            if (int32.charAt(offset) >= '0' && int32.charAt(offset) <= '9')
+            if (int32.charAt(offset) >= '0' && int32.charAt(offset) <= '9') {
                 value = (value * 10 + int32.charAt(offset) - '0');
-            else if (int32.charAt(offset) == 'i' && int32.charAt(offset + 1) == '3' && int32.charAt(offset + 2) == '2'
-                    && offset + 3 == int32.length())
+            } else if (int32.charAt(offset) == 'i' && int32.charAt(offset + 1) == '3' && int32.charAt(offset + 2) == '2'
+                    && offset + 3 == int32.length()) {
                 break;
-            else
+            } else {
                 throw new ParseException(errorMessage);
+            }
         }
-        if (value < 0)
+        if (value < 0) {
             throw new ParseException(errorMessage);
-        if (value > 0 && !positive)
+        }
+        if (value > 0 && !positive) {
             value *= -1;
+        }
 
         aInt32.setValue(value);
         int32Serde.serialize(aInt32, out);
@@ -1052,25 +1115,28 @@
         long value = 0;
         int offset = 0;
 
-        if (int64.charAt(offset) == '+')
+        if (int64.charAt(offset) == '+') {
             offset++;
-        else if (int64.charAt(offset) == '-') {
+        } else if (int64.charAt(offset) == '-') {
             offset++;
             positive = false;
         }
         for (; offset < int64.length(); offset++) {
-            if (int64.charAt(offset) >= '0' && int64.charAt(offset) <= '9')
+            if (int64.charAt(offset) >= '0' && int64.charAt(offset) <= '9') {
                 value = (value * 10 + int64.charAt(offset) - '0');
-            else if (int64.charAt(offset) == 'i' && int64.charAt(offset + 1) == '6' && int64.charAt(offset + 2) == '4'
-                    && offset + 3 == int64.length())
+            } else if (int64.charAt(offset) == 'i' && int64.charAt(offset + 1) == '6' && int64.charAt(offset + 2) == '4'
+                    && offset + 3 == int64.length()) {
                 break;
-            else
+            } else {
                 throw new ParseException(errorMessage);
+            }
         }
-        if (value < 0)
+        if (value < 0) {
             throw new ParseException(errorMessage);
-        if (value > 0 && !positive)
+        }
+        if (value > 0 && !positive) {
             value *= -1;
+        }
 
         aInt64.setValue(value);
         int64Serde.serialize(aInt64, out);
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/AbstractDataParser.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/AbstractDataParser.java
index e7ae93d..402b639 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/AbstractDataParser.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/AbstractDataParser.java
@@ -17,6 +17,7 @@
 import java.io.DataOutput;
 
 import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
+import edu.uci.ics.asterix.om.base.ABinary;
 import edu.uci.ics.asterix.om.base.ABoolean;
 import edu.uci.ics.asterix.om.base.ACircle;
 import edu.uci.ics.asterix.om.base.ADate;
@@ -30,6 +31,7 @@
 import edu.uci.ics.asterix.om.base.AInt64;
 import edu.uci.ics.asterix.om.base.AInt8;
 import edu.uci.ics.asterix.om.base.ALine;
+import edu.uci.ics.asterix.om.base.AMutableBinary;
 import edu.uci.ics.asterix.om.base.AMutableCircle;
 import edu.uci.ics.asterix.om.base.AMutableDate;
 import edu.uci.ics.asterix.om.base.AMutableDateTime;
@@ -64,10 +66,10 @@
 import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
 import edu.uci.ics.asterix.om.types.BuiltinType;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
 import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
 import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
+import edu.uci.ics.hyracks.dataflow.common.data.parsers.ByteArrayBase64ParserFactory;
+import edu.uci.ics.hyracks.dataflow.common.data.parsers.ByteArrayHexParserFactory;
 
 /**
  * Base class for data parsers. Includes the common set of definitions for
@@ -82,6 +84,7 @@
     protected AMutableDouble aDouble = new AMutableDouble(0);
     protected AMutableFloat aFloat = new AMutableFloat(0);
     protected AMutableString aString = new AMutableString("");
+    protected AMutableBinary aBinary = new AMutableBinary(new byte[] { }, 0, 0);
     protected AMutableString aStringFieldName = new AMutableString("");
     protected AMutableUUID aUUID = new AMutableUUID(0, 0);
     // For temporal and spatial data types
@@ -98,6 +101,8 @@
     protected AMutableLine aLine = new AMutableLine(null, null);
     protected AMutableDate aDate = new AMutableDate(0);
 
+    private final byte[] base64ParserQuadruplet = new byte[4];
+
     // Serializers
     @SuppressWarnings("unchecked")
     protected ISerializerDeserializer<ADouble> doubleSerde = AqlSerializerDeserializerProvider.INSTANCE
@@ -166,6 +171,9 @@
     @SuppressWarnings("unchecked")
     protected final static ISerializerDeserializer<ALine> lineSerde = AqlSerializerDeserializerProvider.INSTANCE
             .getSerializerDeserializer(BuiltinType.ALINE);
+    @SuppressWarnings("unchecked")
+    protected final static ISerializerDeserializer<ABinary> binarySerde = AqlSerializerDeserializerProvider.INSTANCE
+            .getSerializerDeserializer(BuiltinType.ABINARY);
 
     protected String filename;
 
@@ -289,8 +297,9 @@
     protected void parseRectangle(String rectangle, DataOutput out) throws HyracksDataException {
         try {
             String[] points = rectangle.split(" ");
-            if (points.length != 2)
+            if (points.length != 2) {
                 throw new HyracksDataException("rectangle consists of only 2 points.");
+            }
             aPoint.setValue(Double.parseDouble(points[0].split(",")[0]), Double.parseDouble(points[0].split(",")[1]));
             aPoint2.setValue(Double.parseDouble(points[1].split(",")[0]), Double.parseDouble(points[1].split(",")[1]));
             if (aPoint.getX() > aPoint2.getX() && aPoint.getY() > aPoint2.getY()) {
@@ -310,8 +319,9 @@
     protected void parseLine(String line, DataOutput out) throws HyracksDataException {
         try {
             String[] points = line.split(" ");
-            if (points.length != 2)
+            if (points.length != 2) {
                 throw new HyracksDataException("line consists of only 2 points.");
+            }
             aPoint.setValue(Double.parseDouble(points[0].split(",")[0]), Double.parseDouble(points[0].split(",")[1]));
             aPoint2.setValue(Double.parseDouble(points[1].split(",")[0]), Double.parseDouble(points[1].split(",")[1]));
             aLine.setValue(aPoint, aPoint2);
@@ -321,4 +331,20 @@
         }
     }
 
+    protected void parseHexBinaryString(char[] input, int start, int length, DataOutput out)
+            throws HyracksDataException {
+        byte[] newBytes = ByteArrayHexParserFactory
+                .extractPointableArrayFromHexString(input, start, length, aBinary.getBytes());
+        aBinary.setValue(newBytes, 0, newBytes.length);
+        binarySerde.serialize(aBinary, out);
+    }
+
+    protected void parseBase64BinaryString(char[] input, int start, int length, DataOutput out)
+            throws HyracksDataException {
+        byte[] newBytes = ByteArrayBase64ParserFactory
+                .extractPointableArrayFromBase64String(input, start, length,
+                        aBinary.getBytes(), base64ParserQuadruplet);
+        aBinary.setValue(newBytes, 0, newBytes.length);
+        binarySerde.serialize(aBinary, out);
+    }
 }
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/DelimitedDataParser.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/DelimitedDataParser.java
index 18f9553..7a0ae4d 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/DelimitedDataParser.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/DelimitedDataParser.java
@@ -503,6 +503,7 @@
                                 lastDelimiterPosition = p;
                                 start = p + 1;
                                 state = State.CR;
+                                startedQuote = false;
                                 return true;
                             }
                         }
diff --git a/asterix-runtime/src/main/resources/adm.grammar b/asterix-runtime/src/main/resources/adm.grammar
index b9db2e7..b0ca26f 100644
--- a/asterix-runtime/src/main/resources/adm.grammar
+++ b/asterix-runtime/src/main/resources/adm.grammar
@@ -19,6 +19,8 @@
 DATETIME_CONS  = string(datetime)
 DURATION_CONS  = string(duration)
 STRING_CONS    = string(string)
+HEX_CONS       = string(hex)
+BASE64_CONS    = string(base64)
 POINT_CONS     = string(point)
 POINT3D_CONS   = string(point3d)
 LINE_CONS      = string(line)
diff --git a/pom.xml b/pom.xml
index ea8c0bf..95f7fc9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,8 +33,8 @@
     <global.test.includes>**/*TestSuite.java,**/*Test.java,${execution.tests}</global.test.includes>
     <global.test.excludes>${optimizer.tests},${metadata.tests},${invalid.tests}</global.test.excludes>
     <!-- Versions under dependencymanagement or used in many projects via properties -->
-    <algebricks.version>0.2.14</algebricks.version>
-    <hyracks.version>0.2.14</hyracks.version>
+    <algebricks.version>0.2.15-SNAPSHOT</algebricks.version>
+    <hyracks.version>0.2.15-SNAPSHOT</hyracks.version>
     <hadoop.version>2.2.0</hadoop.version>
     <junit.version>4.8.1</junit.version>
     <commons.io.version>2.4</commons.io.version>