Merge branch 'master' into westmann/locks
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/RESTAPIServlet.java b/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/RESTAPIServlet.java
index 9f6b7eb..486f16c 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/RESTAPIServlet.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/RESTAPIServlet.java
@@ -35,6 +35,7 @@
 import edu.uci.ics.asterix.aql.parser.TokenMgrError;
 import edu.uci.ics.asterix.aql.translator.AqlTranslator;
 import edu.uci.ics.asterix.common.config.GlobalConfig;
+import edu.uci.ics.asterix.common.exceptions.AsterixException;
 import edu.uci.ics.asterix.metadata.MetadataManager;
 import edu.uci.ics.asterix.result.ResultReader;
 import edu.uci.ics.asterix.result.ResultUtils;
@@ -86,16 +87,15 @@
 
             AQLParser parser = new AQLParser(query);
             List<Statement> aqlStatements = parser.Statement();
-            if (checkForbiddenStatements(aqlStatements, out)) {
-                return;
+            if (!containsForbiddenStatements(aqlStatements)) {
+                SessionConfig sessionConfig = new SessionConfig(true, false, false, false, false, false, true, true, false);
+    
+                MetadataManager.INSTANCE.init();
+    
+                AqlTranslator aqlTranslator = new AqlTranslator(aqlStatements, out, sessionConfig, format);
+    
+                aqlTranslator.compileAndExecute(hcc, hds, asyncResults);
             }
-            SessionConfig sessionConfig = new SessionConfig(true, false, false, false, false, false, true, true, false);
-
-            MetadataManager.INSTANCE.init();
-
-            AqlTranslator aqlTranslator = new AqlTranslator(aqlStatements, out, sessionConfig, format);
-
-            aqlTranslator.compileAndExecute(hcc, hds, asyncResults);
         } catch (ParseException | TokenMgrError | edu.uci.ics.asterix.aqlplus.parser.TokenMgrError pe) {
             GlobalConfig.ASTERIX_LOGGER.log(Level.SEVERE, pe.getMessage(), pe);
             String errorMessage = ResultUtils.buildParseExceptionMessage(pe, query);
@@ -109,13 +109,10 @@
         }
     }
 
-    private boolean checkForbiddenStatements(List<Statement> aqlStatements, PrintWriter out) {
+    private boolean containsForbiddenStatements(List<Statement> aqlStatements) throws AsterixException {
         for (Statement st : aqlStatements) {
             if (!getAllowedStatements().contains(st.getKind())) {
-                JSONObject errorResp = ResultUtils.getErrorResponse(1, String.format(getErrorMessage(), st.getKind()),
-                        "", "");
-                out.write(errorResp.toString());
-                return true;
+                throw new AsterixException(String.format(getErrorMessage(), st.getKind()));
             }
         }
         return false;
diff --git a/asterix-app/src/test/resources/runtimets/queries/aggregate/scalar_min_empty/scalar_min_empty.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/aggregate/scalar_min_empty/scalar_min_empty.1.ddl.aql
index d4de7aa..732d98a 100644
--- a/asterix-app/src/test/resources/runtimets/queries/aggregate/scalar_min_empty/scalar_min_empty.1.ddl.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/aggregate/scalar_min_empty/scalar_min_empty.1.ddl.aql
@@ -6,6 +6,3 @@
 drop dataverse test if exists;
 create dataverse test;
 
-use dataverse test;
-
-min([ ])
diff --git a/asterix-app/src/test/resources/runtimets/queries/aggregate/scalar_sum_empty/scalar_sum_empty.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/aggregate/scalar_sum_empty/scalar_sum_empty.1.ddl.aql
index 3d954c1..b0c16d6 100644
--- a/asterix-app/src/test/resources/runtimets/queries/aggregate/scalar_sum_empty/scalar_sum_empty.1.ddl.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/aggregate/scalar_sum_empty/scalar_sum_empty.1.ddl.aql
@@ -6,6 +6,3 @@
 drop dataverse test if exists;
 create dataverse test;
 
-use dataverse test;
-
-sum([ ])
diff --git a/asterix-app/src/test/resources/runtimets/queries/aggregate/sum_int64/sum_int64.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/aggregate/sum_int64/sum_int64.1.ddl.aql
index 247c983..97b4670 100644
--- a/asterix-app/src/test/resources/runtimets/queries/aggregate/sum_int64/sum_int64.1.ddl.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/aggregate/sum_int64/sum_int64.1.ddl.aql
@@ -2,10 +2,3 @@
 
 create dataverse test;
 
-use dataverse test;
-
-sum( 
- for $x in [int64("1"), int64("2"), int64("3")] 
- return $x
-)
-
diff --git a/asterix-app/src/test/resources/runtimets/queries/aggregate/sum_int8/sum_int8.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/aggregate/sum_int8/sum_int8.1.ddl.aql
index 4c7f01d..d330bc0 100644
--- a/asterix-app/src/test/resources/runtimets/queries/aggregate/sum_int8/sum_int8.1.ddl.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/aggregate/sum_int8/sum_int8.1.ddl.aql
@@ -1,11 +1,3 @@
 drop dataverse test if exists;
 
 create dataverse test;
-
-use dataverse test;
-
-sum( 
- for $x in [int8("1"), int8("2"), int8("3")] 
- return $x
-)
-
diff --git a/asterix-app/src/test/resources/runtimets/queries/load/issue650_query/issue650_query.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/load/issue650_query/issue650_query.1.ddl.aql
new file mode 100644
index 0000000..b0fe47f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/load/issue650_query/issue650_query.1.ddl.aql
@@ -0,0 +1,18 @@
+/*
+ * Description  : Drop and recreate the dataverse between creating and loading a dataset.
+ * Expected Res : Failure
+ * Date         : 17 Oct 2013
+ */
+ 
+drop dataverse fuzzyjoin if exists;
+create dataverse fuzzyjoin;
+use dataverse fuzzyjoin;
+
+create type UserType as open {
+  uid: int32, 
+  name: string,
+  lottery_numbers: [int32],
+  interests: {{string}}
+}
+
+create dataset Users(UserType) primary key uid;
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/load/issue650_query/issue650_query.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/load/issue650_query/issue650_query.2.update.aql
new file mode 100644
index 0000000..b7729d2
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/load/issue650_query/issue650_query.2.update.aql
@@ -0,0 +1,13 @@
+/*
+ * Description  : Drop and recreate the dataverse between creating and loading a dataset.
+ * Expected Res : Failure
+ * Date         : 17 Oct 2013
+ */
+ 
+drop dataverse fuzzyjoin if exists;
+create dataverse fuzzyjoin;
+use dataverse fuzzyjoin;
+
+load dataset Users 
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/users-visitors-small/users.json"),("format"="adm"));
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/records/expFieldName/expFieldName.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/records/expFieldName/expFieldName.1.ddl.aql
index e3f2bc7..754ea81 100644
--- a/asterix-app/src/test/resources/runtimets/queries/records/expFieldName/expFieldName.1.ddl.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/records/expFieldName/expFieldName.1.ddl.aql
@@ -1,5 +1,3 @@
 drop dataverse test if exists;
 create dataverse test;
 
-for $x in ["field1", "field2"] 
-return {$x: 1}
diff --git a/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterix-app/src/test/resources/runtimets/testsuite.xml
index 7f68e22..4b0c8eb 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -4338,6 +4338,12 @@
         <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="user-defined-functions">
       <compilation-unit name="query-issue244">
         <output-dir compare="Text">query-issue244</output-dir>
diff --git a/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java b/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
index 55c9d23..a42a56b 100644
--- a/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
+++ b/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
@@ -425,7 +425,7 @@
                                 InputStream resultStream = executeQuery(statement);
                                 qarFile = new File(actualPath + File.separator
                                         + testCaseCtx.getTestCase().getFilePath().replace(File.separator, "_") + "_"
-                                        + cUnit.getName() + "_qbc.adm");
+                                        + cUnit.getName() + "_qar.adm");
                                 qarFile.getParentFile().mkdirs();
                                 TestsUtils.writeResultsToFile(qarFile, resultStream);
                                 TestsUtils.runScriptAndCompareWithResult(testFile, new PrintWriter(System.err),