Merged asterix_stabilization r867:r878 and r882:r887.

git-svn-id: https://asterixdb.googlecode.com/svn/branches/asterix_fuzzy_perf@888 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/translator/AqlExpressionToPlanTranslator.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/translator/AqlExpressionToPlanTranslator.java
index 59d5291..fdf9c0b 100644
--- a/asterix-algebra/src/main/java/edu/uci/ics/asterix/translator/AqlExpressionToPlanTranslator.java
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/translator/AqlExpressionToPlanTranslator.java
@@ -473,7 +473,7 @@
         }
 
         if (f == null) {
-            throw new AsterixException(" Unknown function " + signature);
+            throw new AsterixException(" Unknown function " + signature.getName() + "@" + signature.getArity());
         }
 
         // Put hints into function call expr.
@@ -522,9 +522,9 @@
             fi = builtinAquafi;
         } else {
             fi = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, functionName, arity);
-            FunctionIdentifier builtinAsterixFi = AsterixBuiltinFunctions.getBuiltinFunctionIdentifier(fi);
-            if (builtinAsterixFi != null) {
-                fi = builtinAsterixFi;
+            afi = AsterixBuiltinFunctions.lookupFunction(fi);
+            if (afi == null) {
+                return null;
             }
         }
         if (AsterixBuiltinFunctions.isBuiltinAggregateFunction(fi)) {
diff --git a/asterix-app/data/spatial/spatialData.json b/asterix-app/data/spatial/spatialData.json
index 6f094ee..e2dd151 100644
--- a/asterix-app/data/spatial/spatialData.json
+++ b/asterix-app/data/spatial/spatialData.json
@@ -1,19 +1,19 @@
-{"id": 1, "point": point("4.1,7.0"), "kwds": "sign ahead", "line1": line("4.0,7.0 9.0,7.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.2,7.0")}
-{"id": 2, "point": point("40.2152,-75.0449"), "kwds": "factory hosedan", "line1": line("-4.0,2.0 2.0,2.0"), "line2": line("4.0,7.0 2.0,17.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 3, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("3.0,0.0 0.0,4.0"), "line2": line("4.0,7.0 2.0,17.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "poly2": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 4, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("4.0,7.0 2.0,17.0"), "line2": line("4.0,7.0 2.0,17.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0 2.0,1.0 1.0,0.0"), "poly2": polygon("2.0,1.0 2.0,2.0 3.0,2.0 3.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 5, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("4.0,7.0 2.0,17.0"), "line2": line("4.0,7.0 2.0,17.0"), "poly1": polygon("100.0,100.0 100.0,400.0 300.0,400.0 300.0,100.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 6, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("0.0,5.0 1.0,7.0"), "line2": line("4.0,7.0 2.0,-17.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "poly2": polygon("3.1,1.0 2.9,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 7, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("0.0,5.0 4.0,7.1"), "line2": line("4.0,7.0 2.0,-17.0"), "poly1": polygon("-5.0,-2.0 -4.0,-1.0 -3.0,-1.0 -2.0,-2.0 -4.0,-4.0 -5.0,-3.0"), "poly2": polygon("3.0,1.0 3.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("3.0,6.0 5.0,7.0")}
-{"id": 8, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("4.0,7.0 2.0,17.0"), "line2": line("4.0,7.0 2.0,17.0"), "poly1": polygon("-5.0,-2.0 -4.0,-1.0 -3.0,-1.0 -2.0,-2.0 -4.0,-4.0 -5.0,-3.0"), "poly2": polygon("-3.0,-3.0 -1.0,-3.0 -3.0,-5.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 9, "point": point("5.0,1.0"), "kwds": "sign ahead", "line1": line("5.0,1.0 5.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 10, "point": point("2.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("6.01,1.0 6.0,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 11, "point": point("4.9,0.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("4.9,0.1 4.9,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 12, "point": point("6.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("4.0,1.0 4.0,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 13, "point": point("5.0,5.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("6.0,1.0 6.0,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 14, "point": point("5.1,5.1"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("5.0,1.0 5.0,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 15, "point": point("-2.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("5.1,1.0 5.1,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 16, "point": point("-2.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 17, "point": point("4.1,7.0"), "kwds": "sign ahead", "line1": line("4.0,7.0 9.0,7.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("0.0,6.0 0.0,0.0 3.0,0.0 4.0,1.0 6.0,1.0 8.0,0.0 12.0,0.0 13.0,2.0 8.0,2.0 8.0,4.0 11.0,4.0 11.0,6.0 6.0,6.0 4.0,3.0 2.0,6.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 18, "point": point("-2.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("5.0,1.0 7.0,1.0 7.0,4.0 6.0,2.0 5.0,4.0"), "poly2": polygon("6.0,3.0 7.0,5.0 6.0,7.0 5.0,5.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
-{"id": 19, "point": point("-2.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("5.0,1.0 7.0,1.0 7.0,4.0 6.0,2.0 5.0,4.0"), "poly2": polygon("6.0,1.0 7.0,5.0 6.0,7.0 5.0,5.0"), "rec": rectangle("0.0,0.0 4.0,4.0")}
\ No newline at end of file
+{"id": 1, "point": point("4.1,7.0"), "kwds": "sign ahead", "line1": line("4.0,7.0 9.0,7.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.2,7.0"), "circle" : circle("1.0,1.0 10.0")}
+{"id": 2, "point": point("40.2152,-75.0449"), "kwds": "factory hosedan", "line1": line("-4.0,2.0 2.0,2.0"), "line2": line("4.0,7.0 2.0,17.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("2.0,3.0 2.0")}
+{"id": 3, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("3.0,0.0 0.0,4.0"), "line2": line("4.0,7.0 2.0,17.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "poly2": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("5.5,1.0 10.0")}
+{"id": 4, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("4.0,7.0 2.0,17.0"), "line2": line("4.0,7.0 2.0,17.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0 2.0,1.0 1.0,0.0"), "poly2": polygon("2.0,1.0 2.0,2.0 3.0,2.0 3.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("77.0,4.0 30.0")}
+{"id": 5, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("4.0,7.0 2.0,17.0"), "line2": line("4.0,7.0 2.0,17.0"), "poly1": polygon("100.0,100.0 100.0,400.0 300.0,400.0 300.0,100.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("88.0,1.0 10.0")}
+{"id": 6, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("0.0,5.0 1.0,7.0"), "line2": line("4.0,7.0 2.0,-17.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "poly2": polygon("3.1,1.0 2.9,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("1.0,1.0 10.0")}
+{"id": 7, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("0.0,5.0 4.0,7.1"), "line2": line("4.0,7.0 2.0,-17.0"), "poly1": polygon("-5.0,-2.0 -4.0,-1.0 -3.0,-1.0 -2.0,-2.0 -4.0,-4.0 -5.0,-3.0"), "poly2": polygon("3.0,1.0 3.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("3.0,6.0 5.0,7.0"), "circle" : circle("13.0,75.0 1.0")}
+{"id": 8, "point": point("43.5083,-79.3007"), "kwds": "enterprisecamp torcamp", "line1": line("4.0,7.0 2.0,17.0"), "line2": line("4.0,7.0 2.0,17.0"), "poly1": polygon("-5.0,-2.0 -4.0,-1.0 -3.0,-1.0 -2.0,-2.0 -4.0,-4.0 -5.0,-3.0"), "poly2": polygon("-3.0,-3.0 -1.0,-3.0 -3.0,-5.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("76.0,87.0 50.0")}
+{"id": 9, "point": point("5.0,1.0"), "kwds": "sign ahead", "line1": line("5.0,1.0 5.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("11.0,14.0 15.0")}
+{"id": 10, "point": point("2.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("6.01,1.0 6.0,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("1.0,76.0 17.0")}
+{"id": 11, "point": point("4.9,0.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("4.9,0.1 4.9,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("22.0,35.0 144.0")}
+{"id": 12, "point": point("6.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("4.0,1.0 4.0,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("1.0,23.0 12.0")}
+{"id": 13, "point": point("5.0,5.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("6.0,1.0 6.0,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("30.0,11.0 11.0")}
+{"id": 14, "point": point("5.1,5.1"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("5.0,1.0 5.0,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("1.0,66.0 17.0")}
+{"id": 15, "point": point("-2.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("5.1,1.0 5.1,4.0 12.0,4.0 12.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("12.0,87.0 10.0")}
+{"id": 16, "point": point("-2.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("1.0,35.0 10.0")}
+{"id": 17, "point": point("4.1,7.0"), "kwds": "sign ahead", "line1": line("4.0,7.0 9.0,7.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("0.0,6.0 0.0,0.0 3.0,0.0 4.0,1.0 6.0,1.0 8.0,0.0 12.0,0.0 13.0,2.0 8.0,2.0 8.0,4.0 11.0,4.0 11.0,6.0 6.0,6.0 4.0,3.0 2.0,6.0"), "poly2": polygon("5.0,1.0 5.0,4.0 7.0,4.0 7.0,1.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("1.0,51.0 10.0")}
+{"id": 18, "point": point("-2.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("5.0,1.0 7.0,1.0 7.0,4.0 6.0,2.0 5.0,4.0"), "poly2": polygon("6.0,3.0 7.0,5.0 6.0,7.0 5.0,5.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("43.0,45.0 12.0")}
+{"id": 19, "point": point("-2.0,3.0"), "kwds": "sign ahead", "line1": line("1.0,2.0 3.0,4.0"), "line2": line("5.0,8.0 5.0,1.0"), "poly1": polygon("5.0,1.0 7.0,1.0 7.0,4.0 6.0,2.0 5.0,4.0"), "poly2": polygon("6.0,1.0 7.0,5.0 6.0,7.0 5.0,5.0"), "rec": rectangle("0.0,0.0 4.0,4.0"), "circle" : circle("65.0,2.0 13.0")}
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/dml/scan-delete-rtree-secondary-index.aql b/asterix-app/src/test/resources/runtimets/queries/dml/scan-delete-rtree-secondary-index.aql
index 6201ca2..4e2ca6c 100644
--- a/asterix-app/src/test/resources/runtimets/queries/dml/scan-delete-rtree-secondary-index.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/dml/scan-delete-rtree-secondary-index.aql
@@ -10,7 +10,8 @@
   line2: line,
   poly1: polygon,
   poly2: polygon,
-  rec: rectangle
+  rec: rectangle,
+  circle: circle
 }
 
 create dataset MyData(MyRecord)
diff --git a/asterix-app/src/test/resources/runtimets/queries/dml/scan-insert-rtree-secondary-index.aql b/asterix-app/src/test/resources/runtimets/queries/dml/scan-insert-rtree-secondary-index.aql
index 236b4a9..f1bc29d 100644
--- a/asterix-app/src/test/resources/runtimets/queries/dml/scan-insert-rtree-secondary-index.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/dml/scan-insert-rtree-secondary-index.aql
@@ -10,7 +10,8 @@
   line2: line,
   poly1: polygon,
   poly2: polygon,
-  rec: rectangle
+  rec: rectangle,
+  circle: circle
 }
 
 create type MyMiniRecord as closed {
diff --git a/asterix-app/src/test/resources/runtimets/queries/index-join/rtree-spatial-intersect-point.aql b/asterix-app/src/test/resources/runtimets/queries/index-join/rtree-spatial-intersect-point.aql
index efee6cf..ab79189 100644
--- a/asterix-app/src/test/resources/runtimets/queries/index-join/rtree-spatial-intersect-point.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/index-join/rtree-spatial-intersect-point.aql
@@ -17,7 +17,8 @@
   line2: line,
   poly1: polygon,
   poly2: polygon,
-  rec: rectangle
+  rec: rectangle,
+  circle: circle
 }
 
 create dataset MyData1(MyRecord) partitioned by key id;
diff --git a/asterix-app/src/test/resources/runtimets/queries/index-selection/rtree-secondary-index.aql b/asterix-app/src/test/resources/runtimets/queries/index-selection/rtree-secondary-index.aql
index 7ff775c..c1e1890 100644
--- a/asterix-app/src/test/resources/runtimets/queries/index-selection/rtree-secondary-index.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/index-selection/rtree-secondary-index.aql
@@ -10,7 +10,8 @@
   line2: line,
   poly1: polygon,
   poly2: polygon,
-  rec: rectangle
+  rec: rectangle,
+  circle: circle
 }
 
 create dataset MyData(MyRecord)
diff --git a/asterix-app/src/test/resources/runtimets/queries/spatial/create-rtree-index.aql b/asterix-app/src/test/resources/runtimets/queries/spatial/create-rtree-index.aql
new file mode 100644
index 0000000..e755aa9
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/spatial/create-rtree-index.aql
@@ -0,0 +1,34 @@
+/*
+ * Description    : Create r-tree indexes for all spatial data types.
+ * Success        : Yes
+ */
+
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type SpatialType as open {
+  id: int32,
+  point: point,
+  line1: line,
+  poly1: polygon,
+  rec: rectangle,
+  circle: circle
+}
+
+create dataset MyData(SpatialType) partitioned by key id;
+create index rtree_index1 on MyData(point) type rtree;
+create index rtree_index2 on MyData(line1) type rtree;
+create index rtree_index3 on MyData(poly1) type rtree;
+create index rtree_index5 on MyData(rec) type rtree;
+create index rtree_index4 on MyData(circle) type rtree;
+
+write output to nc1:"rttest/spatial_create-rtree-index.adm";
+
+load dataset MyData 
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/spatial/spatialData.json"),("format"="adm"));
+
+for $a in dataset('MyData')
+return $a.id
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/f01.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/f01.aql
new file mode 100644
index 0000000..7f87de7
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/f01.aql
@@ -0,0 +1,14 @@
+/*
+ * Description  : Invoke a built-in function with incorrect number of arguments
+ * Expected Res : Failure
+ * Date         : Nov 13th 2012
+ */
+
+
+drop dataverse test if exists;
+create dataverse test;
+
+write output to nc1:"rttest/user-defined-functions_f01.adm";
+
+let $c1 := int8()
+return $c1
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf01.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf01.aql
similarity index 83%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf01.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf01.aql
index b4c3e11..35718b1 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf01.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf01.aql
@@ -8,7 +8,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf01.adm";
+write output to nc1:"rttest/user-defined-functions_udf01.adm";
 
 create function test.echo($list){
 $list
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf02.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf02.aql
similarity index 83%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf02.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf02.aql
index 7e816c5..2605f7a 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf02.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf02.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf02.adm";
+write output to nc1:"rttest/user-defined-functions_udf02.adm";
 
 create function test.getFirst($list){
 $list[0]
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf03.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf03.aql
similarity index 78%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf03.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf03.aql
index c479b1b..747f29d 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf03.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf03.aql
@@ -5,12 +5,12 @@
  * Ignored      : Not part of test build due to Issue 200
  */
 
-// This test is returning NPE...
+// This test is returning NPE... Issue 200 
 
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf03.adm";
+write output to nc1:"rttest/user-defined-functions_udf03.adm";
 
 create function test.echo($list){
 $list
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf04.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf04.aql
similarity index 86%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf04.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf04.aql
index 088b97e..bd6544f 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf04.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf04.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf04.adm";
+write output to nc1:"rttest/user-defined-functions_udf04.adm";
 
 create function test.echo($list){
 $list
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf05.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf05.aql
similarity index 81%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf05.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf05.aql
index 1e393f3..2429f1c 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf05.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf05.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf05.adm";
+write output to nc1:"rttest/user-defined-functions_udf05.adm";
 
 create function test.echo($a){
 $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf06.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf06.aql
similarity index 79%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf06.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf06.aql
index 9e736bd..3301d5c 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf06.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf06.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf06.adm";
+write output to nc1:"rttest/user-defined-functions_udf06.adm";
 
 create function test.echo($a){
 $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf07.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf07.aql
similarity index 79%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf07.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf07.aql
index 1e74e96..0280e92 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf07.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf07.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf07.adm";
+write output to nc1:"rttest/user-defined-functions_udf07.adm";
 
 create function test.echo($a){
 $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf08.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf08.aql
similarity index 80%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf08.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf08.aql
index 42e6f22..5dfb9a2 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf08.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf08.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf08.adm";
+write output to nc1:"rttest/user-defined-functions_udf08.adm";
 
 create function test.echo($a){
 $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf09.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf09.aql
similarity index 91%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf09.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf09.aql
index 33e8e52..b16e2dd 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf09.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf09.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf09.adm";
+write output to nc1:"rttest/user-defined-functions_udf09.adm";
 
 create type test.TestType as open {
 id : int32
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf10.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf10.aql
similarity index 84%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf10.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf10.aql
index 739bc05..d0da4e1 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf10.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf10.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf10.adm";
+write output to nc1:"rttest/user-defined-functions_udf10.adm";
 
 create function test.echo($uolist){
 $uolist
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf11.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf11.aql
similarity index 81%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf11.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf11.aql
index 1395cfa..b842c93 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf11.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf11.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf11.adm";
+write output to nc1:"rttest/user-defined-functions_udf11.adm";
 
 create function test.OList(){
 [1,2,3,4,5,6,7,8,9,10]
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf12.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf12.aql
similarity index 78%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf12.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf12.aql
index ad710eb..e3f8122 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf12.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf12.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf12.adm";
+write output to nc1:"rttest/user-defined-functions_udf12.adm";
 
 create function test.foo($a,$b) {
 $a+$b
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf13.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf13.aql
similarity index 79%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf13.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf13.aql
index c48acf7..533def7 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf13.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf13.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf13.adm";
+write output to nc1:"rttest/user-defined-functions_udf13.adm";
 
 create function test.foo($a,$b) {
 $a - $b
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf14.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf14.aql
similarity index 79%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf14.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf14.aql
index 66d362f..fc3447d 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf14.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf14.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf14.adm";
+write output to nc1:"rttest/user-defined-functions_udf14.adm";
 
 create function test.foo($a,$b) {
 $a*$b
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf15.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf15.aql
similarity index 81%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf15.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf15.aql
index 55cc519..4b4992a 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf15.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf15.aql
@@ -6,12 +6,12 @@
  * Ignored      : Not part of current tests because of Issue 200
  */
 
-// this test resturns NPE
+// this test resturns NPE:Issue 166
 
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf15.adm";
+write output to nc1:"rttest/user-defined-functions_udf15.adm";
 
 create function test.OList2(){
 [[1,2,3,4,5,6,7,8,9,10],["a","b","c","d","e","f","g","h","y"]]
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf16.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf16.aql
similarity index 84%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf16.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf16.aql
index 5b7d4ef..e9f0742 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf16.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf16.aql
@@ -8,7 +8,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf16.adm";
+write output to nc1:"rttest/user-defined-functions_udf16.adm";
 
 create function test.fn02(){
 "Welcome to the world of Asterix"
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf17.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf17.aql
similarity index 86%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf17.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf17.aql
index 89fb567..b98d123 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf17.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf17.aql
@@ -8,7 +8,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf17.adm";
+write output to nc1:"rttest/user-defined-functions_udf17.adm";
 
 create function test.parent(){
 test.child()
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf18.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf18.aql
similarity index 81%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf18.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf18.aql
index 14791b7..aa6a57b 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf18.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf18.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf18.adm";
+write output to nc1:"rttest/user-defined-functions_udf18.adm";
 
 create function test.fn06(){
 false
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf19.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf19.aql
similarity index 85%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf19.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf19.aql
index bf024c7..87c39a5 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf19.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf19.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf19.adm";
+write output to nc1:"rttest/user-defined-functions_udf19.adm";
 
 create function test.pie(){
 3.14
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf20.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf20.aql
similarity index 86%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf20.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf20.aql
index dfc9610..e0a16a1 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf20.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf20.aql
@@ -8,7 +8,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf20.adm";
+write output to nc1:"rttest/user-defined-functions_udf20.adm";
 
 create function test.pie(){
 3.14
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf21.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf21.aql
similarity index 83%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf21.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf21.aql
index 4212b04..7e943c3 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf21.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf21.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf21.adm";
+write output to nc1:"rttest/user-defined-functions_udf21.adm";
 
 create function test.isOdd($b){
 $b%2 != 0
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf22.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf22.aql
similarity index 84%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf22.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf22.aql
index a34e129..83e19e6 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf22.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf22.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf22.adm";
+write output to nc1:"rttest/user-defined-functions_udf22.adm";
 
 create function test.getFullName($fname,$lname){
 string-concat([$fname,$lname])
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf23.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf23.aql
similarity index 81%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf23.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf23.aql
index 1c5ca12..a2d8ec5 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf23.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf23.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf23.adm";
+write output to nc1:"rttest/user-defined-functions_udf23.adm";
 
 create function test.numRows(){
 6
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf24.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf24.aql
similarity index 74%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf24.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf24.aql
index 9de03b7..eef906d 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf24.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf24.aql
@@ -5,12 +5,12 @@
  * Ignored      : Not part of current test build because of Issue 201
  */
 
-// Returns java.lang.ClassCastException
+// Returns java.lang.ClassCastException : Issue 195
 
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf24.adm";
+write output to nc1:"rttest/user-defined-functions_udf24.adm";
 
 create function test.myRangeFn($n)
 {
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf25.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf25.aql
similarity index 85%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf25.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf25.aql
index 5b70889..fefc07e 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf25.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf25.aql
@@ -9,7 +9,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf25.adm";
+write output to nc1:"rttest/user-defined-functions_udf25.adm";
 
 create function test.computeBonus($pbcRating,$salary)
 {
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf26.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf26.aql
similarity index 80%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf26.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf26.aql
index 9f460bc..95420b7 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf26.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf26.aql
@@ -7,7 +7,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf26.adm";
+write output to nc1:"rttest/user-defined-functions_udf26.adm";
 
 create function test.needs_f1($x){
  $x + f1()
diff --git a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf27.aql b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf27.aql
similarity index 85%
rename from asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf27.aql
rename to asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf27.aql
index c50b3dc..b9db17f 100644
--- a/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/udf27.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/user-defined-functions/udf27.aql
@@ -10,7 +10,7 @@
 drop dataverse test if exists;
 create dataverse test;
 
-write output to nc1:"rttest/cross-dataverse_udf27.adm";
+write output to nc1:"rttest/user-defined-functions_udf27.adm";
 
 create function test.f1(){
 100
diff --git a/asterix-app/src/test/resources/runtimets/results/spatial/create-rtree-index.adm b/asterix-app/src/test/resources/runtimets/results/spatial/create-rtree-index.adm
new file mode 100644
index 0000000..1778736
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/spatial/create-rtree-index.adm
@@ -0,0 +1,19 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf01.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf01.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf01.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf01.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf02.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf02.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf02.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf02.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf03.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf03.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf03.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf03.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf04.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf04.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf04.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf04.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf05.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf05.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf05.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf05.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf06.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf06.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf06.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf06.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf07.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf07.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf07.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf07.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf08.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf08.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf08.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf08.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf09.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf09.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf09.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf09.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf10.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf10.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf10.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf10.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf11.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf11.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf11.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf11.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf12.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf12.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf12.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf12.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf13.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf13.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf13.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf13.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf14.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf14.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf14.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf14.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf16.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf16.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf16.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf16.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf17.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf17.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf17.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf17.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf18.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf18.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf18.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf18.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf19.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf19.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf19.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf19.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf20.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf20.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf20.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf20.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf21.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf21.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf21.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf21.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf22.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf22.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf22.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf22.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf23.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf23.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf23.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf23.adm
diff --git a/asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf27.adm b/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf27.adm
similarity index 100%
rename from asterix-app/src/test/resources/runtimets/results/cross-dataverse/udf27.adm
rename to asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf27.adm
diff --git a/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterix-app/src/test/resources/runtimets/testsuite.xml
index d7e1b30..af49e84 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -2714,6 +2714,11 @@
       </compilation-unit>
     </test-case>
     <test-case FilePath="spatial">
+      <compilation-unit name="create-rtree-index">
+        <output-file compare="Text">create-rtree-index.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="spatial">
       <compilation-unit name="distance-between-points">
         <output-file compare="Text">distance-between-points.adm</output-file>
       </compilation-unit>
@@ -3132,6 +3137,7 @@
         <output-file compare="Text">substr01.adm</output-file>
       </compilation-unit>
     </test-case>
+    <!-- Issue no 219
     <test-case FilePath="string">
       <compilation-unit name="substr04">
         <output-file compare="Text">substr04.adm</output-file>
@@ -3142,6 +3148,7 @@
         <output-file compare="Text">substr05.adm</output-file>
       </compilation-unit>
     </test-case>
+    -->
     <test-case FilePath="string">
       <compilation-unit name="substr06">
         <output-file compare="Text">substr06.adm</output-file>
@@ -3537,5 +3544,167 @@
         <output-file compare="Text">cross-dv19.adm</output-file>
       </compilation-unit>
     </test-case>
+    <test-case FilePath="cross-dataverse">
+      <compilation-unit name="insert_across_dataverses">
+        <output-file compare="Text">insert_across_dataverses.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="cross-dataverse">
+      <compilation-unit name="join_across_dataverses">
+        <output-file compare="Text">join_across_dataverses.adm</output-file>
+      </compilation-unit>
+    </test-case>
+  </test-group>
+  <test-group name="user-defined-functions">
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf01">
+        <output-file compare="Text">udf01.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf02">
+        <output-file compare="Text">udf02.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <!-- causes NPE: Issue 200
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf03">
+        <output-file compare="Text">udf03.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    -->
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf04">
+        <output-file compare="Text">udf04.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf05">
+        <output-file compare="Text">udf05.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf06">
+        <output-file compare="Text">udf06.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf07">
+        <output-file compare="Text">udf07.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf08">
+        <output-file compare="Text">udf08.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf09">
+        <output-file compare="Text">udf09.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf10">
+        <output-file compare="Text">udf10.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf11">
+        <output-file compare="Text">udf11.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf12">
+        <output-file compare="Text">udf12.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf13">
+        <output-file compare="Text">udf13.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf14">
+        <output-file compare="Text">udf14.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <!-- Issue 166
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf15">
+        <output-file compare="Text">udf15.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    -->
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf16">
+        <output-file compare="Text">udf16.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf17">
+        <output-file compare="Text">udf17.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf18">
+        <output-file compare="Text">udf18.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf19">
+        <output-file compare="Text">udf19.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf20">
+        <output-file compare="Text">udf20.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf21">
+        <output-file compare="Text">udf21.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf22">
+        <output-file compare="Text">udf22.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf23">
+        <output-file compare="Text">udf23.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <!-- Issue 195
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf24">
+        <output-file compare="Text">udf24.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    -->
+    <!-- Issue 218
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf25">
+        <output-file compare="Text">udf25.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    -->
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf26">
+        <output-file compare="Text">udf26.adm</output-file>
+        <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-file compare="Text">udf27.adm</output-file>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="f01">
+        <output-file compare="Text">f01.adm</output-file>
+        <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error> 
+      </compilation-unit>
+    </test-case>
   </test-group>
 </test-suite>
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/functions/FunctionSignature.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/functions/FunctionSignature.java
index 8d3b48a..188593c 100644
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/functions/FunctionSignature.java
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/functions/FunctionSignature.java
@@ -2,49 +2,52 @@
 
 import java.io.Serializable;
 
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+
 public class FunctionSignature implements Serializable {
-	private final String namespace;
-	private final String name;
-	private final int arity;
-	private final String rep;
+    private final String namespace;
+    private final String name;
+    private final int arity;
+    private final String rep;
 
-	public FunctionSignature(String namespace, String name, int arity) {
-		this.namespace = namespace;
-		this.name = name;
-		this.arity = arity;
-		rep = namespace + "." + name + "@" + arity;
-	}
+    public FunctionSignature(String namespace, String name, int arity) {
+        this.namespace = namespace;
+        this.name = name;
+        this.arity = arity;
+        rep = namespace + "." + name + "@" + arity;
+    }
 
-	public boolean equals(Object o) {
-		if (!(o instanceof FunctionSignature)) {
-			return false;
-		} else {
-			FunctionSignature f = ((FunctionSignature) o);
-			return ((namespace != null && namespace.equals(f.getNamespace()) || (namespace == null && f
-					.getNamespace() == null)))
-					&& name.equals(f.getName())
-					&& arity == f.getArity();
-		}
-	}
+    @Override
+    public boolean equals(Object o) {
+        if (!(o instanceof FunctionSignature)) {
+            return false;
+        } else {
+            FunctionSignature f = ((FunctionSignature) o);
+            return ((namespace != null && namespace.equals(f.getNamespace()) || (namespace == null && f.getNamespace() == null)))
+                    && name.equals(f.getName())
+                    && (arity == f.getArity() || arity == FunctionIdentifier.VARARGS || f.getArity() == FunctionIdentifier.VARARGS);
+        }
+    }
 
-	public String toString() {
-		return rep;
-	}
+    public String toString() {
+        return rep;
+    }
 
-	public int hashCode() {
-		return rep.hashCode();
-	}
+    @Override
+    public int hashCode() {
+        return (namespace + "." + name).hashCode();
+    }
 
-	public String getNamespace() {
-		return namespace;
-	}
+    public String getNamespace() {
+        return namespace;
+    }
 
-	public String getName() {
-		return name;
-	}
+    public String getName() {
+        return name;
+    }
 
-	public int getArity() {
-		return arity;
-	}
+    public int getArity() {
+        return arity;
+    }
 
 }
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 712843a..8832164 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
@@ -137,6 +137,7 @@
             case LINE:
             case POLYGON:
             case CIRCLE:
+            case RECTANGLE:
                 return 2;
             case POINT3D:
                 return 3;
@@ -151,6 +152,7 @@
             case LINE:
             case POLYGON:
             case CIRCLE:
+            case RECTANGLE:
                 return BuiltinType.ADOUBLE;
             default:
                 throw new NotImplementedException(typeTag + " is not a supported spatial data type.");