diff --git a/.gitignore b/.gitignore
index ba4e894..2dfbf0f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,21 +5,12 @@
 .settings
 .project
 ClusterControllerService
-rttest
-mdtest
-ittest
 asterix_logs
 build
 asterixdb/asterix-opt
 asterixdb/asterix-app/src/test/resources/externallib
-asterixdb/asterix-app/opttest
-asterixdb/asterix-app/parserts
 asterixdb/asterix-app/library
-asterixdb/asterix-app/opt_parserts
-asterixdb/asterix-app/runtime_parserts
 asterixdb/asterix-app/data/csv/beer.csv
-asterixdb/asterix-installer/ittest
-asterixdb/asterix-installer/repliationtest
 asterixdb/asterix-installer/src/test/resources/clusterts/asterix-installer-*-SNAPSHOT-binary-assembly
 *-coredump
 *.pyc
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
index 3c24cbc..1b528b9 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
@@ -126,4 +126,14 @@
             ICompiledDmlStatement dmlStatement)
             throws AsterixException, RemoteException, AlgebricksException, JSONException, ACIDException;
 
+    /**
+     * returns the active dataverse for an entity or a statement
+     *
+     * @param dataverse:
+     *            the entity or statement dataverse
+     * @return
+     *         returns the passed dataverse if not null, the active dataverse otherwise
+     */
+    String getActiveDataverseName(String dataverse);
+
 }
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
index e69f347..2a30713 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
@@ -34,11 +34,11 @@
 import org.apache.asterix.lang.common.expression.TypeExpression;
 import org.apache.asterix.lang.common.expression.TypeReferenceExpression;
 import org.apache.asterix.lang.common.expression.UnorderedListTypeDefinition;
-import org.apache.asterix.metadata.MetadataException;
 import org.apache.asterix.metadata.MetadataManager;
 import org.apache.asterix.metadata.MetadataTransactionContext;
 import org.apache.asterix.metadata.entities.AsterixBuiltinTypeMap;
 import org.apache.asterix.metadata.entities.Datatype;
+import org.apache.asterix.metadata.utils.MetadataConstants;
 import org.apache.asterix.om.types.AOrderedListType;
 import org.apache.asterix.om.types.ARecordType;
 import org.apache.asterix.om.types.AUnionType;
@@ -51,19 +51,23 @@
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 
 public class TypeTranslator {
+    private static final Map<String, BuiltinType> builtinTypeMap = AsterixBuiltinTypeMap.getBuiltinTypes();
+
+    private TypeTranslator() {
+    }
 
     public static Map<TypeSignature, IAType> computeTypes(MetadataTransactionContext mdTxnCtx, TypeExpression typeExpr,
-            String typeName, String typeDataverse) throws AlgebricksException, MetadataException {
-        Map<TypeSignature, IAType> typeMap = new HashMap<TypeSignature, IAType>();
+            String typeName, String typeDataverse) throws AlgebricksException {
+        Map<TypeSignature, IAType> typeMap = new HashMap<>();
         return computeTypes(mdTxnCtx, typeExpr, typeName, typeDataverse, typeMap);
     }
 
     public static Map<TypeSignature, IAType> computeTypes(MetadataTransactionContext mdTxnCtx, TypeExpression typeExpr,
             String typeName, String typeDataverse, Map<TypeSignature, IAType> typeMap)
-            throws AlgebricksException, MetadataException {
-        Map<String, Map<ARecordType, List<Integer>>> incompleteFieldTypes = new HashMap<String, Map<ARecordType, List<Integer>>>();
-        Map<TypeSignature, List<AbstractCollectionType>> incompleteItemTypes = new HashMap<TypeSignature, List<AbstractCollectionType>>();
-        Map<TypeSignature, List<TypeSignature>> incompleteTopLevelTypeReferences = new HashMap<TypeSignature, List<TypeSignature>>();
+            throws AlgebricksException {
+        Map<String, Map<ARecordType, List<Integer>>> incompleteFieldTypes = new HashMap<>();
+        Map<TypeSignature, List<AbstractCollectionType>> incompleteItemTypes = new HashMap<>();
+        Map<TypeSignature, List<TypeSignature>> incompleteTopLevelTypeReferences = new HashMap<>();
         firstPass(typeExpr, typeName, typeMap, incompleteFieldTypes, incompleteItemTypes,
                 incompleteTopLevelTypeReferences, typeDataverse);
         secondPass(mdTxnCtx, typeMap, incompleteFieldTypes, incompleteItemTypes, incompleteTopLevelTypeReferences,
@@ -77,8 +81,6 @@
         return typeMap;
     }
 
-    private static Map<String, BuiltinType> builtinTypeMap = AsterixBuiltinTypeMap.getBuiltinTypes();
-
     private static void firstPass(TypeExpression typeExpr, String typeName, Map<TypeSignature, IAType> typeMap,
             Map<String, Map<ARecordType, List<Integer>>> incompleteFieldTypes,
             Map<TypeSignature, List<AbstractCollectionType>> incompleteItemTypes,
@@ -93,11 +95,13 @@
             switch (typeExpr.getTypeKind()) {
                 case TYPEREFERENCE: {
                     TypeReferenceExpression tre = (TypeReferenceExpression) typeExpr;
-                    IAType t = solveTypeReference(new TypeSignature(typeDataverse, tre.getIdent().getValue()), typeMap);
+                    IAType t = solveTypeReference(new TypeSignature(
+                            tre.getIdent().first == null ? typeDataverse : tre.getIdent().first.getValue(),
+                            tre.getIdent().second.getValue()), typeMap);
                     if (t != null) {
                         typeMap.put(typeSignature, t);
                     } else {
-                        addIncompleteTopLevelTypeReference(typeName, tre, incompleteTopLevelTypeReferences,
+                        addIncompleteTopLevelTypeReference(tre, incompleteTopLevelTypeReferences,
                                 typeDataverse);
                     }
                     break;
@@ -136,11 +140,10 @@
             Map<String, Map<ARecordType, List<Integer>>> incompleteFieldTypes,
             Map<TypeSignature, List<AbstractCollectionType>> incompleteItemTypes,
             Map<TypeSignature, List<TypeSignature>> incompleteTopLevelTypeReferences, String typeDataverse)
-            throws AlgebricksException, MetadataException {
+            throws AlgebricksException {
         // solve remaining top level references
-
         for (TypeSignature typeSignature : incompleteTopLevelTypeReferences.keySet()) {
-            IAType t;// = typeMap.get(trefName);
+            IAType t;
             Datatype dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeSignature.getNamespace(),
                     typeSignature.getName());
             if (dt == null) {
@@ -154,9 +157,13 @@
         }
         // solve remaining field type references
         for (String trefName : incompleteFieldTypes.keySet()) {
-            IAType t;// = typeMap.get(trefName);
+            IAType t;
             Datatype dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeDataverse, trefName);
             if (dt == null) {
+                dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, MetadataConstants.METADATA_DATAVERSE_NAME,
+                        trefName);
+            }
+            if (dt == null) {
                 throw new AlgebricksException("Could not resolve type " + trefName);
             } else {
                 t = dt.getDatatype();
@@ -178,8 +185,8 @@
 
         // solve remaining item type references
         for (TypeSignature typeSignature : incompleteItemTypes.keySet()) {
-            IAType t;// = typeMap.get(trefName);
-            Datatype dt = null;
+            IAType t;
+            Datatype dt;
             if (MetadataManager.INSTANCE != null) {
                 dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeSignature.getNamespace(),
                         typeSignature.getName());
@@ -247,7 +254,9 @@
             }
             case TYPEREFERENCE: {
                 TypeReferenceExpression tre = (TypeReferenceExpression) tExpr;
-                TypeSignature signature = new TypeSignature(defaultDataverse, tre.getIdent().getValue());
+                TypeSignature signature = new TypeSignature(
+                        tre.getIdent().first == null ? defaultDataverse : tre.getIdent().first.getValue(),
+                        tre.getIdent().second.getValue());
                 IAType tref = solveTypeReference(signature, typeMap);
                 if (tref != null) {
                     act.setItemType(tref);
@@ -265,11 +274,12 @@
     private static void addIncompleteCollectionTypeReference(AbstractCollectionType collType,
             TypeReferenceExpression tre, Map<TypeSignature, List<AbstractCollectionType>> incompleteItemTypes,
             String defaultDataverse) {
-        String typeName = tre.getIdent().getValue();
-        TypeSignature typeSignature = new TypeSignature(defaultDataverse, typeName);
+        String typeName = tre.getIdent().second.getValue();
+        TypeSignature typeSignature = new TypeSignature(
+                tre.getIdent().first == null ? defaultDataverse : tre.getIdent().first.getValue(), typeName);
         List<AbstractCollectionType> typeList = incompleteItemTypes.get(typeSignature);
         if (typeList == null) {
-            typeList = new LinkedList<AbstractCollectionType>();
+            typeList = new LinkedList<>();
             incompleteItemTypes.put(typeSignature, typeList);
         }
         typeList.add(collType);
@@ -277,28 +287,31 @@
 
     private static void addIncompleteFieldTypeReference(ARecordType recType, int fldPosition,
             TypeReferenceExpression tre, Map<String, Map<ARecordType, List<Integer>>> incompleteFieldTypes) {
-        String typeName = tre.getIdent().getValue();
+        String typeName = tre.getIdent().second.getValue();
         Map<ARecordType, List<Integer>> refMap = incompleteFieldTypes.get(typeName);
         if (refMap == null) {
-            refMap = new HashMap<ARecordType, List<Integer>>();
+            refMap = new HashMap<>();
             incompleteFieldTypes.put(typeName, refMap);
         }
         List<Integer> typeList = refMap.get(recType);
         if (typeList == null) {
-            typeList = new ArrayList<Integer>();
+            typeList = new ArrayList<>();
             refMap.put(recType, typeList);
         }
         typeList.add(fldPosition);
     }
 
-    private static void addIncompleteTopLevelTypeReference(String tdeclName, TypeReferenceExpression tre,
+    private static void addIncompleteTopLevelTypeReference(TypeReferenceExpression tre,
             Map<TypeSignature, List<TypeSignature>> incompleteTopLevelTypeReferences, String defaultDataverse) {
-        String name = tre.getIdent().getValue();
-        TypeSignature typeSignature = new TypeSignature(defaultDataverse, name);
+        String name = tre.getIdent().second.getValue();
+        TypeSignature typeSignature = new TypeSignature(
+                tre.getIdent().first == null ? defaultDataverse : tre.getIdent().first.getValue(), name);
         List<TypeSignature> refList = incompleteTopLevelTypeReferences.get(name);
         if (refList == null) {
-            refList = new LinkedList<TypeSignature>();
-            incompleteTopLevelTypeReferences.put(new TypeSignature(defaultDataverse, tre.getIdent().getValue()),
+            refList = new LinkedList<>();
+            incompleteTopLevelTypeReferences.put(
+                    new TypeSignature(tre.getIdent().first == null ? defaultDataverse : tre.getIdent().first.getValue(),
+                            tre.getIdent().second.getValue()),
                     refList);
         }
         refList.add(typeSignature);
@@ -340,7 +353,9 @@
             switch (texpr.getTypeKind()) {
                 case TYPEREFERENCE: {
                     TypeReferenceExpression tre = (TypeReferenceExpression) texpr;
-                    TypeSignature signature = new TypeSignature(defaultDataverse, tre.getIdent().getValue());
+                    TypeSignature signature = new TypeSignature(
+                            tre.getIdent().first == null ? defaultDataverse : tre.getIdent().first.getValue(),
+                            tre.getIdent().second.getValue());
                     IAType tref = solveTypeReference(signature, typeMap);
                     if (tref != null) {
                         if (!rtd.getOptionableFields().get(j)) { // not nullable
diff --git a/asterixdb/asterix-algebra/src/main/javacc/AQLPlus.jj b/asterixdb/asterix-algebra/src/main/javacc/AQLPlus.jj
index 725f50a..2c991cb 100644
--- a/asterixdb/asterix-algebra/src/main/javacc/AQLPlus.jj
+++ b/asterixdb/asterix-algebra/src/main/javacc/AQLPlus.jj
@@ -100,6 +100,7 @@
 import org.apache.asterix.lang.common.struct.QuantifiedPair;
 import org.apache.asterix.lang.common.struct.VarIdentifier;
 import org.apache.asterix.metadata.utils.MetadataConstants;
+import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IndexedNLJoinExpressionAnnotation;
 
 
@@ -407,7 +408,7 @@
       } else {
           id = new Identifier(t.toString());
       }
-          return new TypeReferenceExpression(id);
+          return new TypeReferenceExpression(new Pair<Identifier,Identifier>(null,id));
     }
 }
 
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index 27f7ca6..d5811c4 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -133,6 +133,7 @@
 import org.apache.asterix.metadata.MetadataManager;
 import org.apache.asterix.metadata.MetadataTransactionContext;
 import org.apache.asterix.metadata.api.IMetadataEntity;
+import org.apache.asterix.metadata.bootstrap.MetadataBuiltinEntities;
 import org.apache.asterix.metadata.dataset.hints.DatasetHints;
 import org.apache.asterix.metadata.dataset.hints.DatasetHints.DatasetNodegroupCardinalityHint;
 import org.apache.asterix.metadata.declared.AqlMetadataProvider;
@@ -235,6 +236,7 @@
         this.declaredFunctions = getDeclaredFunctions(aqlStatements);
         this.apiFramework = new APIFramework(compliationProvider, ccExtensionManager);
         this.rewriterFactory = compliationProvider.getRewriterFactory();
+        activeDefaultDataverse = MetadataBuiltinEntities.DEFAULT_DATAVERSE;
     }
 
     protected List<FunctionDecl> getDeclaredFunctions(List<Statement> statements) {
@@ -1146,7 +1148,6 @@
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
         MetadataLockManager.INSTANCE.createTypeBegin(dataverseName, dataverseName + "." + typeName);
         try {
-
             Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, dataverseName);
             if (dv == null) {
                 throw new AlgebricksException("Unknown dataverse " + dataverseName);
@@ -1180,6 +1181,10 @@
             IHyracksClientConnection hcc) throws Exception {
         DataverseDropStatement stmtDelete = (DataverseDropStatement) stmt;
         String dataverseName = stmtDelete.getDataverseName().getValue();
+        if (dataverseName.equals(MetadataBuiltinEntities.DEFAULT_DATAVERSE_NAME)) {
+            throw new HyracksDataException(
+                    MetadataBuiltinEntities.DEFAULT_DATAVERSE_NAME + " dataverse can't be dropped");
+        }
 
         ProgressState progress = ProgressState.NO_PROGRESS;
         MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
@@ -3088,14 +3093,9 @@
         return cmds;
     }
 
-    protected String getActiveDataverseName(String dataverse) throws AlgebricksException {
-        if (dataverse != null) {
-            return dataverse;
-        }
-        if (activeDefaultDataverse != null) {
-            return activeDefaultDataverse.getDataverseName();
-        }
-        throw new AlgebricksException("dataverse not specified");
+    @Override
+    public String getActiveDataverseName(String dataverse) {
+        return (dataverse != null) ? dataverse : activeDefaultDataverse.getDataverseName();
     }
 
     protected String getActiveDataverse(Identifier dataverse) throws AlgebricksException {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplicationEntryPoint.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplicationEntryPoint.java
index 0a12bf2..c678bf3 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplicationEntryPoint.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplicationEntryPoint.java
@@ -44,7 +44,6 @@
 import org.apache.asterix.event.schema.cluster.Node;
 import org.apache.asterix.messaging.MessagingChannelInterfaceFactory;
 import org.apache.asterix.messaging.NCMessageBroker;
-import org.apache.asterix.metadata.bootstrap.MetadataBootstrap;
 import org.apache.asterix.runtime.message.ReportMaxResourceIdMessage;
 import org.apache.asterix.transaction.management.resource.PersistentLocalResourceRepository;
 import org.apache.asterix.transaction.management.service.recovery.RecoveryManager;
@@ -190,11 +189,6 @@
             if (LOGGER.isLoggable(Level.INFO)) {
                 LOGGER.info("Stopping Asterix node controller: " + nodeId);
             }
-
-            if (isMetadataNode) {
-                MetadataBootstrap.stopUniverse();
-            }
-
             //Clean any temporary files
             performLocalCleanUp();
 
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTest.java
index cbe6e85..6392410 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTest.java
@@ -42,7 +42,7 @@
 
     private TestCaseContext tcCtx;
 
-    private static final String PATH_ACTUAL = "mdtest" + File.separator;
+    private static final String PATH_ACTUAL = "target" + File.separator + "mdtest" + File.separator;
     private static final String PATH_BASE = StringUtils
             .join(new String[] { "src", "test", "resources", "metadata" + File.separator }, File.separator);
     private static final String TEST_CONFIG_FILE_NAME = "asterix-build-configuration.xml";
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java
index 1f64868..6e3f94c 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java
@@ -66,7 +66,7 @@
             + "optimizerts" + SEPARATOR;
     private static final String PATH_QUERIES = PATH_BASE + "queries" + SEPARATOR;
     private static final String PATH_EXPECTED = PATH_BASE + "results" + SEPARATOR;
-    private static final String PATH_ACTUAL = "opttest" + SEPARATOR;
+    private static final String PATH_ACTUAL = "target" + File.separator + "opttest" + SEPARATOR;
 
     private static final ArrayList<String> ignore = AsterixTestHelper.readFile(FILENAME_IGNORE, PATH_BASE);
     private static final ArrayList<String> only = AsterixTestHelper.readFile(FILENAME_ONLY, PATH_BASE);
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/ExecutionTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/ExecutionTest.java
index adc691f..15bb500 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/ExecutionTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/ExecutionTest.java
@@ -45,11 +45,12 @@
 
     protected static final Logger LOGGER = Logger.getLogger(ExecutionTest.class.getName());
 
-    protected static final String PATH_ACTUAL = "rttest" + File.separator;
+    protected static final String PATH_ACTUAL = "target" + File.separator + "rttest" + File.separator;
     protected static final String PATH_BASE = StringUtils.join(new String[] { "src", "test", "resources", "runtimets" },
             File.separator);
 
     protected static final String TEST_CONFIG_FILE_NAME = "asterix-build-configuration.xml";
+    protected static final List<String> badTestCases = new ArrayList<>();
     protected static AsterixTransactionProperties txnProperties;
     protected static final TestExecutor testExecutor = new TestExecutor();
     private static final boolean cleanupOnStart = true;
@@ -81,6 +82,12 @@
         // remove library directory
         TestLibrarian.removeLibraryDir();
         ExecutionTestUtil.tearDown(cleanupOnStop);
+        if (!badTestCases.isEmpty()) {
+            System.out.println("The following test cases left some data");
+            for (String testCase : badTestCases) {
+                System.out.println(testCase);
+            }
+        }
     }
 
     @Parameters(name = "ExecutionTest {index}: {0}")
@@ -117,6 +124,12 @@
                 }
                 librarian.cleanup();
                 testExecutor.executeTest(PATH_ACTUAL, tcCtx, null, false, ExecutionTestUtil.FailedGroup);
+                try {
+                    testExecutor.cleanup(tcCtx.toString(), badTestCases);
+                } catch (Throwable th) {
+                    th.printStackTrace();
+                    throw th;
+                }
             }
         } finally {
             System.err.flush();
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/SqlppExecutionTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/SqlppExecutionTest.java
index 84e644b..520e00f 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/SqlppExecutionTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/SqlppExecutionTest.java
@@ -21,9 +21,9 @@
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 import java.util.logging.Logger;
 
-import org.apache.asterix.api.common.AsterixHyracksIntegrationUtil;
 import org.apache.asterix.common.config.AsterixTransactionProperties;
 import org.apache.asterix.test.aql.TestExecutor;
 import org.apache.asterix.testframework.context.TestCaseContext;
@@ -44,13 +44,14 @@
 
     protected static final Logger LOGGER = Logger.getLogger(SqlppExecutionTest.class.getName());
 
-    protected static final String PATH_ACTUAL = "rttest" + File.separator;
+    protected static final String PATH_ACTUAL = "target" + File.separator + "rttest" + File.separator;
     protected static final String PATH_BASE = StringUtils.join(new String[] { "src", "test", "resources", "runtimets" },
             File.separator);
 
     protected static final String TEST_CONFIG_FILE_NAME = "asterix-build-configuration.xml";
 
     protected static AsterixTransactionProperties txnProperties;
+    protected static final List<String> badTestCases = new ArrayList<>();
     private static final TestExecutor testExecutor = new TestExecutor();
     private static final boolean cleanupOnStart = true;
     private static final boolean cleanupOnStop = true;
@@ -68,6 +69,12 @@
     public static void tearDown() throws Exception {
         ExecutionTestUtil.tearDown(cleanupOnStop);
         ExecutionTestUtil.integrationUtil.removeTestStorageFiles();
+        if (!badTestCases.isEmpty()) {
+            System.out.println("The following test cases left some data");
+            for (String testCase : badTestCases) {
+                System.out.println(testCase);
+            }
+        }
     }
 
     @Parameters(name = "SqlppExecutionTest {index}: {0}")
@@ -97,5 +104,6 @@
     @Test
     public void test() throws Exception {
         testExecutor.executeTest(PATH_ACTUAL, tcCtx, null, false, FailedGroup);
+        testExecutor.cleanup(tcCtx.toString(), badTestCases);
     }
 }
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/OptimizerParserTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/OptimizerParserTest.java
index 485d658..ef17c9f 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/OptimizerParserTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/OptimizerParserTest.java
@@ -48,7 +48,8 @@
             + "optimizerts" + SEPARATOR;
     private static final String PATH_QUERIES = PATH_BASE + "queries_sqlpp" + SEPARATOR;
     private static final String PATH_EXPECTED = PATH_BASE + "results_parser_sqlpp" + SEPARATOR;
-    private static final String PATH_ACTUAL = "opt_parserts" + SEPARATOR;
+    private static final String PATH_ACTUAL =
+            "target" + File.separator + "opt_parserts" + SEPARATOR + "results_parser_sqlpp" + SEPARATOR;
 
     private static final ArrayList<String> ignore = AsterixTestHelper.readFile(FILENAME_IGNORE, PATH_BASE);
     private static final ArrayList<String> only = AsterixTestHelper.readFile(FILENAME_ONLY, PATH_BASE);
@@ -75,7 +76,7 @@
             if (file.isFile() && file.getName().endsWith(EXTENSION_QUERY)) {
                 String resultFileName = AsterixTestHelper.extToResExt(file.getName(), EXTENSION_RESULT);
                 File expectedFile = new File(PATH_EXPECTED + path + resultFileName);
-                File actualFile = new File(PATH_ACTUAL + SEPARATOR + path.replace(SEPARATOR, "_") + resultFileName);
+                File actualFile = new File(PATH_ACTUAL + path + resultFileName);
                 testArgs.add(new Object[] { file, expectedFile, actualFile });
             }
         }
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java
index 05a7dce..79e0959 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java
@@ -48,6 +48,7 @@
 import org.apache.asterix.metadata.declared.AqlMetadataProvider;
 import org.apache.asterix.metadata.entities.Dataset;
 import org.apache.asterix.test.aql.TestExecutor;
+import org.apache.asterix.test.base.ComparisonException;
 import org.apache.asterix.testframework.context.TestCaseContext;
 import org.apache.asterix.testframework.context.TestFileContext;
 import org.apache.asterix.testframework.xml.TestCase.CompilationUnit;
@@ -74,8 +75,9 @@
             for (TestFileContext ctx : testFileCtxs) {
                 File testFile = ctx.getFile();
                 try {
-                    if (queryCount >= expectedResultFileCtxs.size()) {
-                        throw new IllegalStateException("no result file for " + testFile.toString() + "; queryCount: "
+                    if (queryCount >= expectedResultFileCtxs.size()
+                            && !cUnit.getOutputDir().getValue().equals("none")) {
+                        throw new ComparisonException("no result file for " + testFile.toString() + "; queryCount: "
                                 + queryCount + ", filectxs.size: " + expectedResultFileCtxs.size());
                     }
 
@@ -98,6 +100,10 @@
                         }
                         throw new Exception("Test \"" + testFile + "\" FAILED!", e);
                     } else {
+                        // must compare with the expected failure message
+                        if (e instanceof ComparisonException) {
+                            throw e;
+                        }
                         LOGGER.info("[TEST]: " + testCaseCtx.getTestCase().getFilePath() + "/" + cUnit.getName()
                                 + " failed as expected: " + e.getMessage());
                         System.err.println("...but that was expected.");
@@ -105,7 +111,6 @@
                 }
             }
         }
-
     }
 
     // Tests the SQL++ parser.
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/RuntimeParserTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/RuntimeParserTest.java
index d9d03f9..99fde7d 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/RuntimeParserTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/RuntimeParserTest.java
@@ -42,7 +42,7 @@
 
     protected static final Logger LOGGER = Logger.getLogger(RuntimeParserTest.class.getName());
 
-    protected static final String PATH_ACTUAL = "runtime_parserts" + File.separator;
+    protected static final String PATH_ACTUAL = "target" + File.separator + "runtime_parserts" + File.separator;
     protected static final String PATH_BASE = StringUtils.join(new String[] { "src", "test", "resources", "runtimets" },
             File.separator);
 
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/SmokeParserTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/SmokeParserTest.java
index 04213a8..dd727c3 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/SmokeParserTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/SmokeParserTest.java
@@ -48,7 +48,7 @@
             + "parserts" + SEPARATOR;
     private static final String PATH_QUERIES = PATH_BASE + "queries_sqlpp" + SEPARATOR;
     private static final String PATH_EXPECTED = PATH_BASE + "results_parser_sqlpp" + SEPARATOR;
-    private static final String PATH_ACTUAL = "parserts" + SEPARATOR;
+    private static final String PATH_ACTUAL = "target" + File.separator + "parserts" + SEPARATOR;
 
     private static final ArrayList<String> ignore = AsterixTestHelper.readFile(FILENAME_IGNORE, PATH_BASE);
     private static final ArrayList<String> only = AsterixTestHelper.readFile(FILENAME_ONLY, PATH_BASE);
diff --git a/asterixdb/asterix-app/src/test/resources/metadata/results/basic/meta01/meta01.1.adm b/asterixdb/asterix-app/src/test/resources/metadata/results/basic/meta01/meta01.1.adm
index e341727..313cefe 100644
--- a/asterixdb/asterix-app/src/test/resources/metadata/results/basic/meta01/meta01.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/metadata/results/basic/meta01/meta01.1.adm
@@ -1,2 +1,3 @@
+{ "DataverseName": "Default", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Wed Sep 14 23:26:12 EEST 2016", "PendingOp": 0 }
 { "DataverseName": "Metadata", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Tue Jun 21 15:54:20 PDT 2016", "PendingOp": 0 }
 { "DataverseName": "testdv", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Tue Jun 21 15:54:27 PDT 2016", "PendingOp": 0 }
diff --git a/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm b/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
index 1920bab..91639a8 100644
--- a/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
@@ -1,3 +1,4 @@
+{ "DataverseName": "Metadata", "DatatypeName": "AnyObject", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [  ] } }, "Timestamp": "Wed Sep 14 23:26:12 EEST 2016" }
 { "DataverseName": "Metadata", "DatatypeName": "CompactionPolicyRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "CompactionPolicy", "FieldType": "string", "IsNullable": false }, { "FieldName": "Classname", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
 { "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatatypeDataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatatypeName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatasetType", "FieldType": "string", "IsNullable": false }, { "FieldName": "GroupName", "FieldType": "string", "IsNullable": false }, { "FieldName": "CompactionPolicy", "FieldType": "string", "IsNullable": false }, { "FieldName": "CompactionPolicyProperties", "FieldType": "DatasetRecordType_CompactionPolicyProperties", "IsNullable": false }, { "FieldName": "InternalDetails", "FieldType": "DatasetRecordType_InternalDetails", "IsNullable": true }, { "FieldName": "ExternalDetails", "FieldType": "DatasetRecordType_ExternalDetails", "IsNullable": true }, { "FieldName": "Hints", "FieldType": "DatasetRecordType_Hints", "IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatasetId", "FieldType": "int32", "IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", "IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
 { "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_CompactionPolicyProperties", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_CompactionPolicyProperties_Item" }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
diff --git a/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_dataverse/metadata_dataverse.1.adm b/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_dataverse/metadata_dataverse.1.adm
index b301d59..519c800 100644
--- a/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_dataverse/metadata_dataverse.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_dataverse/metadata_dataverse.1.adm
@@ -1,3 +1,4 @@
+{ "DataverseName": "Default", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Wed Sep 14 23:26:12 EEST 2016", "PendingOp": 0 }
 { "DataverseName": "Metadata", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Tue Jun 21 15:54:20 PDT 2016", "PendingOp": 0 }
 { "DataverseName": "test", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Tue Jun 21 15:54:27 PDT 2016", "PendingOp": 0 }
 { "DataverseName": "testdv", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Tue Jun 21 15:54:28 PDT 2016", "PendingOp": 0 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/drop-dataverse/drop-dataverse.3.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/drop-dataverse/drop-dataverse.3.ddl.aql
new file mode 100644
index 0000000..fe3f670
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/drop-dataverse/drop-dataverse.3.ddl.aql
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+/*
+ * Description  : Test cross dataverse functionality
+ *              : create a dataset using a foreign datatype
+ *              : Try dropping the foreign type's dataverse
+ * Expected Res : Failure
+ * Date         : 2015 Steven Jacobs
+ */
+drop dataverse b;
+drop dataverse a;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/drop-type-used-elsewhere/drop-type-used-elsewhere.3.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/drop-type-used-elsewhere/drop-type-used-elsewhere.3.ddl.aql
new file mode 100644
index 0000000..20aad07
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/drop-type-used-elsewhere/drop-type-used-elsewhere.3.ddl.aql
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+/*
+ * Description  : Test cross dataverse functionality
+ *              : create a dataset using a foreign datatype
+ *              : Try dropping the foreign datatype
+ * Expected Res : Failure
+ * Date         : 2015 Steven Jacobs
+ */
+
+
+drop dataverse b;
+drop dataverse a;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/query-dataset-with-foreign-type/query-dataset-with-foreign-type.4.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/query-dataset-with-foreign-type/query-dataset-with-foreign-type.4.ddl.aql
new file mode 100644
index 0000000..aa8ebab
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/query-dataset-with-foreign-type/query-dataset-with-foreign-type.4.ddl.aql
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+/*
+ * Description  : Test cross dataverse functionality
+ *              : create a dataset using a foreign datatype
+ *              : Query the dataset
+ * Expected Res : Success
+ * Date         : 2015 Steven Jacobs
+ */
+drop dataverse b;
+drop dataverse a;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/dml/load-with-index-open_02/load-with-index-open_02.4.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/dml/load-with-index-open_02/load-with-index-open_02.4.ddl.aql
new file mode 100644
index 0000000..c445af0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/dml/load-with-index-open_02/load-with-index-open_02.4.ddl.aql
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+
+drop dataverse OpenTinySocial;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/dml/query-issue382/query-issue382.4.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/dml/query-issue382/query-issue382.4.ddl.aql
new file mode 100644
index 0000000..8d80593
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/dml/query-issue382/query-issue382.4.ddl.aql
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+drop dataverse SocialNetworkData;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/escapes-err-1/escapes-err-1.3.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/escapes-err-1/escapes-err-1.3.ddl.aql
new file mode 100644
index 0000000..11db2eb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/escapes-err-1/escapes-err-1.3.ddl.aql
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+drop dataverse TestDataverse;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/escapes01/escapes01.4.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/escapes01/escapes01.4.ddl.aql
new file mode 100644
index 0000000..11db2eb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/escapes01/escapes01.4.ddl.aql
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+drop dataverse TestDataverse;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/escapes02/escapes02.4.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/escapes02/escapes02.4.ddl.aql
new file mode 100644
index 0000000..11db2eb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/escapes02/escapes02.4.ddl.aql
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+drop dataverse TestDataverse;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/load_non-empty_index/load_non-empty_index.3.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/load_non-empty_index/load_non-empty_index.3.ddl.aql
new file mode 100644
index 0000000..dbc8d52
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/load_non-empty_index/load_non-empty_index.3.ddl.aql
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+/*
+ * Description  : Bulkload non-empty index.
+ * Expected Res : Failure
+ * Date         : 29 July 2016
+ */
+drop dataverse OpenTinySocial;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/type_promotion_0/type_promotion_0.4.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/type_promotion_0/type_promotion_0.4.ddl.aql
new file mode 100644
index 0000000..11db2eb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/load/type_promotion_0/type_promotion_0.4.ddl.aql
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+drop dataverse TestDataverse;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/misc/flushtest/flushtest.5.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/misc/flushtest/flushtest.5.ddl.aql
new file mode 100644
index 0000000..7538fa3
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/misc/flushtest/flushtest.5.ddl.aql
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+drop dataverse DMLTest;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-closed/query-issue208/query-issue208.4.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-closed/query-issue208/query-issue208.4.ddl.aql
new file mode 100644
index 0000000..0ac8674
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-closed/query-issue208/query-issue208.4.ddl.aql
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+/*
+ * Description  : This test case is to verify the fix for issue208
+                 : https://code.google.com/p/asterixdb/issues/detail?id=208
+ * Expected Res : Success
+ * Date         : 26th November 2012
+ */
+
+drop dataverse OpenSocialNetworkData;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-closed/query-issue236/query-issue236.4.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-closed/query-issue236/query-issue236.4.ddl.aql
new file mode 100644
index 0000000..eb4023d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-closed/query-issue236/query-issue236.4.ddl.aql
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+/*
+ * Description  : This test case is to verify the fix for issue236
+                 : https://code.google.com/p/asterixdb/issues/detail?id=236
+ * Expected Res : Success
+ * Date         : 20 Dec. 2012
+ */
+
+drop dataverse SocialNetworkData;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/types/any-object/any-object.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/types/any-object/any-object.1.ddl.aql
new file mode 100644
index 0000000..1a70aaa
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/types/any-object/any-object.1.ddl.aql
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type kv1 as { id: int32, val: AnyObject };
+create type kv2 as { id: int32, val: Metadata.AnyObject };
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/types/any-object/any-object.2.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/types/any-object/any-object.2.query.aql
new file mode 100644
index 0000000..e7208ca
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/types/any-object/any-object.2.query.aql
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+
+for $x in dataset Metadata.Datatype
+return $x;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/upsert/issue1587-foreignDataType/issue1587-foreignDataType.4.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/upsert/issue1587-foreignDataType/issue1587-foreignDataType.4.ddl.aql
new file mode 100644
index 0000000..71eaed1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/upsert/issue1587-foreignDataType/issue1587-foreignDataType.4.ddl.aql
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+/*
+ * Description  : Upsert into a dataset which has a foreign datatype
+ * Expected Res : Success
+ * Date         : Aug 18th 2016
+ */
+drop dataverse b;
+drop dataverse a;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/flushtest/flushtest.5.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/flushtest/flushtest.5.ddl.sqlpp
new file mode 100644
index 0000000..399a7f2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/flushtest/flushtest.5.ddl.sqlpp
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+
+drop  dataverse DMLTest;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.4.query.sqlpp
index f953098..2faaecf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.4.query.sqlpp
@@ -22,5 +22,4 @@
 
 select element user
 from  TwitterUsers as user
-order by user.`screen-name` desc
-;
+order by user.`screen-name`;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/types/any-object/any-object.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/types/any-object/any-object.1.ddl.sqlpp
new file mode 100644
index 0000000..e72b803
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/types/any-object/any-object.1.ddl.sqlpp
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use test;
+
+create type kv1 as { id: int32, val: AnyObject };
+create type kv2 as { id: int32, val: Metadata.AnyObject };
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/types/any-object/any-object.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/types/any-object/any-object.2.query.sqlpp
new file mode 100644
index 0000000..04beba1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/types/any-object/any-object.2.query.sqlpp
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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.
+ */
+
+select element x from Metadata.Datatype as x;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/types/any-object/any-object.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/types/any-object/any-object.2.adm
new file mode 100644
index 0000000..504ba93
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/types/any-object/any-object.2.adm
@@ -0,0 +1,68 @@
+{ "DataverseName": "Metadata", "DatatypeName": "AnyObject", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [  ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "CompactionPolicyRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "CompactionPolicy", "FieldType": "string", "IsNullable": false }, { "FieldName": "Classname", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatatypeDataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatatypeName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatasetType", "FieldType": "string", "IsNullable": false }, { "FieldName": "GroupName", "FieldType": "string", "IsNullable": false }, { "FieldName": "CompactionPolicy", "FieldType": "string", "IsNullable": false }, { "FieldName": "CompactionPolicyProperties", "FieldType": "DatasetRecordType_CompactionPolicyProperties", "IsNullable": false }, { "FieldName": "InternalDetails", "FieldType": "DatasetRecordType_InternalDetails", "IsNullable": true }, { "FieldName": "ExternalDetails", "FieldType": "DatasetRecordType_ExternalDetails", "IsNullable": true }, { "FieldName": "Hints", "FieldType": "DatasetRecordType_Hints", "IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatasetId", "FieldType": "int32", "IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_CompactionPolicyProperties", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_CompactionPolicyProperties_Item" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_CompactionPolicyProperties_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_ExternalDetails", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DatasourceAdapter", "FieldType": "string", "IsNullable": false }, { "FieldName": "Properties", "FieldType": "DatasetRecordType_ExternalDetails_Properties", "IsNullable": false }, { "FieldName": "LastRefreshTime", "FieldType": "datetime", "IsNullable": false }, { "FieldName": "TransactionState", "FieldType": "int32", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_ExternalDetails_Properties", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_ExternalDetails_Properties_Item" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_ExternalDetails_Properties_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "DatasetRecordType_Hints_Item" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "FileStructure", "FieldType": "string", "IsNullable": false }, { "FieldName": "PartitioningStrategy", "FieldType": "string", "IsNullable": false }, { "FieldName": "PartitioningKey", "FieldType": "DatasetRecordType_InternalDetails_PartitioningKey", "IsNullable": false }, { "FieldName": "PrimaryKey", "FieldType": "DatasetRecordType_InternalDetails_PrimaryKey", "IsNullable": false }, { "FieldName": "Autogenerated", "FieldType": "boolean", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PartitioningKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_InternalDetails_PartitioningKey_Item" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PartitioningKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PrimaryKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_InternalDetails_PrimaryKey_Item" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PrimaryKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasourceAdapterRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "Name", "FieldType": "string", "IsNullable": false }, { "FieldName": "Classname", "FieldType": "string", "IsNullable": false }, { "FieldName": "Type", "FieldType": "string", "IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatatypeName", "FieldType": "string", "IsNullable": false }, { "FieldName": "Derived", "FieldType": "DatatypeRecordType_Derived", "IsNullable": true }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Tag", "FieldType": "string", "IsNullable": false }, { "FieldName": "IsAnonymous", "FieldType": "boolean", "IsNullable": false }, { "FieldName": "Record", "FieldType": "DatatypeRecordType_Derived_Record", "IsNullable": true }, { "FieldName": "UnorderedList", "FieldType": "string", "IsNullable": true }, { "FieldName": "OrderedList", "FieldType": "string", "IsNullable": true } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived_Record", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "IsOpen", "FieldType": "boolean", "IsNullable": false }, { "FieldName": "Fields", "FieldType": "DatatypeRecordType_Derived_Record_Fields", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived_Record_Fields", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatatypeRecordType_Derived_Record_Fields_Item" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived_Record_Fields_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "FieldName", "FieldType": "string", "IsNullable": false }, { "FieldName": "FieldType", "FieldType": "string", "IsNullable": false }, { "FieldName": "IsNullable", "FieldType": "boolean", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DataverseRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DataFormat", "FieldType": "string", "IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "ExternalFileRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false }, { "FieldName": "FileNumber", "FieldType": "int32", "IsNullable": false }, { "FieldName": "FileName", "FieldType": "string", "IsNullable": false }, { "FieldName": "FileSize", "FieldType": "int64", "IsNullable": false }, { "FieldName": "FileModTime", "FieldType": "datetime", "IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "PolicyName", "FieldType": "string", "IsNullable": false }, { "FieldName": "Description", "FieldType": "string", "IsNullable": false }, { "FieldName": "Properties", "FieldType": "FeedPolicyRecordType_Properties", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType_Properties", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "FeedPolicyRecordType_Properties_Item" }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType_Properties_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "FeedName", "FieldType": "string", "IsNullable": false }, { "FieldName": "Function", "FieldType": "string", "IsNullable": true }, { "FieldName": "FeedType", "FieldType": "string", "IsNullable": false }, { "FieldName": "PrimaryTypeDetails", "FieldType": "FeedRecordType_PrimaryTypeDetails", "IsNullable": true }, { "FieldName": "SecondaryTypeDetails", "FieldType": "FeedRecordType_SecondaryTypeDetails", "IsNullable": true }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType_PrimaryTypeDetails", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "AdapterName", "FieldType": "string", "IsNullable": false }, { "FieldName": "AdapterConfiguration", "FieldType": "FeedRecordType_PrimaryTypeDetails_AdapterConfiguration", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType_PrimaryTypeDetails_AdapterConfiguration", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "DatasetRecordType_ExternalDetails_Properties_Item" }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType_SecondaryTypeDetails", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "SourceFeedName", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "Name", "FieldType": "string", "IsNullable": false }, { "FieldName": "Arity", "FieldType": "string", "IsNullable": false }, { "FieldName": "Params", "FieldType": "FunctionRecordType_Params", "IsNullable": false }, { "FieldName": "ReturnType", "FieldType": "string", "IsNullable": false }, { "FieldName": "Definition", "FieldType": "string", "IsNullable": false }, { "FieldName": "Language", "FieldType": "string", "IsNullable": false }, { "FieldName": "Kind", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Params", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false }, { "FieldName": "IndexName", "FieldType": "string", "IsNullable": false }, { "FieldName": "IndexStructure", "FieldType": "string", "IsNullable": false }, { "FieldName": "SearchKey", "FieldType": "IndexRecordType_SearchKey", "IsNullable": false }, { "FieldName": "IsPrimary", "FieldType": "boolean", "IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType_SearchKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "IndexRecordType_SearchKey_Item" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType_SearchKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "LibraryRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "Name", "FieldType": "string", "IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:44 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "NodeGroupRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "GroupName", "FieldType": "string", "IsNullable": false }, { "FieldName": "NodeNames", "FieldType": "NodeGroupRecordType_NodeNames", "IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "NodeGroupRecordType_NodeNames", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "NodeRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "NodeName", "FieldType": "string", "IsNullable": false }, { "FieldName": "NumberOfCores", "FieldType": "int64", "IsNullable": false }, { "FieldName": "WorkingMemorySize", "FieldType": "int64", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "binary", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "boolean", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "circle", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "date", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "datetime", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "day-time-duration", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "double", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "duration", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "float", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "int16", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "int32", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "int64", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "int8", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "interval", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "line", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "missing", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "null", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "point", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "point3d", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "polygon", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "rectangle", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "shortwithouttypeinfo", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "string", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "time", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "uuid", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "year-month-duration", "Timestamp": "Thu Sep 15 14:05:43 EEST 2016" }
+{ "DataverseName": "test", "DatatypeName": "AnyObject", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [  ] } }, "Timestamp": "Thu Sep 15 14:10:05 EEST 2016" }
+{ "DataverseName": "test", "DatatypeName": "kv1", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "id", "FieldType": "int32", "IsNullable": false }, { "FieldName": "val", "FieldType": "AnyObject", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:10:05 EEST 2016" }
+{ "DataverseName": "test", "DatatypeName": "kv2", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "id", "FieldType": "int32", "IsNullable": false }, { "FieldName": "val", "FieldType": "AnyObject", "IsNullable": false } ] } }, "Timestamp": "Thu Sep 15 14:10:05 EEST 2016" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary_null/binary_null.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary_null/binary_null.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary_null/binary_null.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary_null/binary_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary_null/binary_null.3.ast
deleted file mode 100644
index 9ab8ffb..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary_null/binary_null.3.ast
+++ /dev/null
@@ -1,100 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.hex@1[
-        LiteralExpr [STRING] [AA]
-      ]
-      >
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-      >=
-      FunctionCall test.hex@1[
-        LiteralExpr [STRING] [AA]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.hex@1[
-        LiteralExpr [STRING] [AA]
-      ]
-      <
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-      <=
-      FunctionCall test.hex@1[
-        LiteralExpr [STRING] [AA]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.hex@1[
-        LiteralExpr [STRING] [AA]
-      ]
-      =
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-      !=
-      FunctionCall test.hex@1[
-        LiteralExpr [STRING] [AA]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16_null/int16_null.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16_null/int16_null.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16_null/int16_null.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16_null/int16_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16_null/int16_null.3.ast
deleted file mode 100644
index 1a83a4a..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16_null/int16_null.3.ast
+++ /dev/null
@@ -1,100 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [3]
-      ]
-      >
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-      >=
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [3]
-      ]
-      <
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-      <=
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [3]
-      ]
-      =
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-      !=
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [3]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/adm_binary/adm_binary.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/adm_binary/adm_bianry.2.ast
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/adm_binary/adm_binary.2.ast
rename to asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/adm_binary/adm_bianry.2.ast
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/adm_binary/adm_binary.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/adm_binary/adm_bianry.3.ast
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/adm_binary/adm_binary.3.ast
rename to asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/adm_binary/adm_bianry.3.ast
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/duplicate-key-error/duplicate-key-error.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/duplicate-key-error/duplicate-key-error.1.ast
deleted file mode 100644
index 1f6677d..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/duplicate-key-error/duplicate-key-error.1.ast
+++ /dev/null
@@ -1,7 +0,0 @@
-DataverseUse test
-TypeDecl Schema [
-  closed RecordType {
-    id : int32
-  }
-]
-DatasetDecl mydataset(Schema) partitioned by [[id]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/duplicate-key-error/duplicate-key-error.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/duplicate-key-error/duplicate-key-error.2.ast
deleted file mode 100644
index 916a59e..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/duplicate-key-error/duplicate-key-error.2.ast
+++ /dev/null
@@ -1 +0,0 @@
-DataverseUse test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/escapes-err-1/escapes-err-1.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/escapes-err-1/escapes-err-1.1.ast
deleted file mode 100644
index 738a731..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/escapes-err-1/escapes-err-1.1.ast
+++ /dev/null
@@ -1,7 +0,0 @@
-DataverseUse TestDataverse
-TypeDecl TestType [
-  open RecordType {
-    id : string
-  }
-]
-DatasetDecl TestSet(TestType) partitioned by [[id]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/escapes-err-1/escapes-err-1.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/escapes-err-1/escapes-err-1.2.ast
deleted file mode 100644
index 0da3f75..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/escapes-err-1/escapes-err-1.2.ast
+++ /dev/null
@@ -1 +0,0 @@
-DataverseUse TestDataverse
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue14_query/issue14_query.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue14_query/issue14_query.1.ast
deleted file mode 100644
index c7bac21..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue14_query/issue14_query.1.ast
+++ /dev/null
@@ -1,9 +0,0 @@
-DataverseUse test
-TypeDecl Schema [
-  closed RecordType {
-    id : int32,
-    age : int32,
-    name : string
-  }
-]
-DatasetDecl onektup(Schema) partitioned by [[id]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue14_query/issue14_query.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue14_query/issue14_query.2.ast
deleted file mode 100644
index 916a59e..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue14_query/issue14_query.2.ast
+++ /dev/null
@@ -1 +0,0 @@
-DataverseUse test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue14_query/issue14_query.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue14_query/issue14_query.3.ast
deleted file mode 100644
index db4fdc9..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue14_query/issue14_query.3.ast
+++ /dev/null
@@ -1,10 +0,0 @@
-DataverseUse test
-Query:
-  SELECT ELEMENT [
-  Variable [ Name=l Id=0 ]
-  ]
-FROM [  FunctionCall Metadata.dataset@1[
-    LiteralExpr [STRING] [onektup] 
-  ]
-  Variable [ Name=l Id=0 ]
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue315_query/issue315_query.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue315_query/issue315_query.1.ast
deleted file mode 100644
index c7bac21..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue315_query/issue315_query.1.ast
+++ /dev/null
@@ -1,9 +0,0 @@
-DataverseUse test
-TypeDecl Schema [
-  closed RecordType {
-    id : int32,
-    age : int32,
-    name : string
-  }
-]
-DatasetDecl onektup(Schema) partitioned by [[id]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue315_query/issue315_query.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue315_query/issue315_query.2.ast
deleted file mode 100644
index 916a59e..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue315_query/issue315_query.2.ast
+++ /dev/null
@@ -1 +0,0 @@
-DataverseUse test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue650_query/issue650_query.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue650_query/issue650_query.1.ast
deleted file mode 100644
index 7e05489..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue650_query/issue650_query.1.ast
+++ /dev/null
@@ -1,12 +0,0 @@
-DataverseUse fuzzyjoin
-TypeDecl UserType [
-  open RecordType {
-    uid : int32,
-    name : string,
-    lottery_numbers : OrderedList [int32]
-,
-    interests : UnorderedList <string>
-
-  }
-]
-DatasetDecl Users(UserType) partitioned by [[uid]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue650_query/issue650_query.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue650_query/issue650_query.2.ast
deleted file mode 100644
index 0b720ed..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/issue650_query/issue650_query.2.ast
+++ /dev/null
@@ -1 +0,0 @@
-DataverseUse fuzzyjoin
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_float/add_float.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/flushtest/flushtest.5.ast
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_float/add_float.2.ast
rename to asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/flushtest/flushtest.5.ast
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_double/add_double.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_double/add_double.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_double/add_double.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_double/add_double.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_double/add_double.3.ast
deleted file mode 100644
index 61f1216..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_double/add_double.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_float/add_float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_float/add_float.3.ast
deleted file mode 100644
index a602f5c..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_float/add_float.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      +
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      +
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      +
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      +
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      +
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      +
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int16/add_int16.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int16/add_int16.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int16/add_int16.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int16/add_int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int16/add_int16.3.ast
deleted file mode 100644
index 5c6c14d..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int16/add_int16.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      +
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      +
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      +
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      +
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      +
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      +
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int32/add_int32.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int32/add_int32.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int32/add_int32.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int32/add_int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int32/add_int32.3.ast
deleted file mode 100644
index 55fd0d6..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int32/add_int32.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      +
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      +
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      +
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      +
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      +
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      +
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int64/add_int64.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int64/add_int64.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int64/add_int64.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int64/add_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int64/add_int64.3.ast
deleted file mode 100644
index 337afca..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int64/add_int64.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      +
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      +
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      +
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      +
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      +
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      +
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int8/add_int8.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int8/add_int8.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int8/add_int8.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int8/add_int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int8/add_int8.3.ast
deleted file mode 100644
index be062d5..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int8/add_int8.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      +
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      +
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      +
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      +
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      +
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      +
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      +
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.3.ast
deleted file mode 100644
index a92bc55..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.3.ast
deleted file mode 100644
index 45b0233..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      /
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      /
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      /
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      /
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      /
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      /
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.3.ast
deleted file mode 100644
index 56dac15..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      /
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      /
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      /
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      /
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      /
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      /
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.3.ast
deleted file mode 100644
index 1fa62e7..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      /
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      /
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      /
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      /
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      /
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      /
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.3.ast
deleted file mode 100644
index 3bff813..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      /
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      /
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      /
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      /
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      /
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      /
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.3.ast
deleted file mode 100644
index 46a69ab..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      /
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      /
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      /
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      /
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      /
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      /
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      /
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double.ast
deleted file mode 100644
index 42394d3..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double.ast
+++ /dev/null
@@ -1,103 +0,0 @@
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall null.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall null.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall null.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall null.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall null.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result8]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [MISSING]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double/multiply_double.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double/multiply_double.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double/multiply_double.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double/multiply_double.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double/multiply_double.3.ast
deleted file mode 100644
index a428685..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double/multiply_double.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float.ast
deleted file mode 100644
index 36fb4f1..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float.ast
+++ /dev/null
@@ -1,104 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result8]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [MISSING]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float/multiply_float.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float/multiply_float.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float/multiply_float.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float/multiply_float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float/multiply_float.3.ast
deleted file mode 100644
index cfbe2ac..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float/multiply_float.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      *
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16.ast
deleted file mode 100644
index 6419ff0..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16.ast
+++ /dev/null
@@ -1,103 +0,0 @@
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall null.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall null.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall null.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall null.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall null.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall null.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall null.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall null.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall null.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall null.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall null.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result8]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [MISSING]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16/multiply_int16.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16/multiply_int16.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16/multiply_int16.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16/multiply_int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16/multiply_int16.3.ast
deleted file mode 100644
index df7e8fa..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16/multiply_int16.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      *
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32.ast
deleted file mode 100644
index 55a5562..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32.ast
+++ /dev/null
@@ -1,103 +0,0 @@
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall null.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall null.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall null.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall null.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall null.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall null.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall null.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall null.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall null.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall null.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall null.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result8]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [MISSING]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32/multiply_int32.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32/multiply_int32.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32/multiply_int32.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32/multiply_int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32/multiply_int32.3.ast
deleted file mode 100644
index 9863256..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32/multiply_int32.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      *
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64.ast
deleted file mode 100644
index 5e34055..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64.ast
+++ /dev/null
@@ -1,104 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result8]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [MISSING]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64/multiply_int64.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64/multiply_int64.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64/multiply_int64.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64/multiply_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64/multiply_int64.3.ast
deleted file mode 100644
index e9274f2..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64/multiply_int64.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      *
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8.ast
deleted file mode 100644
index 2487b68..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8.ast
+++ /dev/null
@@ -1,103 +0,0 @@
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall null.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall null.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall null.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall null.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall null.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall null.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall null.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall null.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall null.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall null.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall null.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result8]
-    :
-    OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      LiteralExpr [MISSING]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8/multiply_int8.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8/multiply_int8.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8/multiply_int8.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8/multiply_int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8/multiply_int8.3.ast
deleted file mode 100644
index 8964180..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8/multiply_int8.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      *
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      *
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_double/subtract_double.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_double/subtract_double.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_double/subtract_double.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_double/subtract_double.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_double/subtract_double.3.ast
deleted file mode 100644
index ef39da2..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_double/subtract_double.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_float/subtract_float.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_float/subtract_float.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_float/subtract_float.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_float/subtract_float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_float/subtract_float.3.ast
deleted file mode 100644
index 214254a..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_float/subtract_float.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      -
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      -
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      -
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      -
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      -
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-      -
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int16/subtract_int16.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int16/subtract_int16.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int16/subtract_int16.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int16/subtract_int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int16/subtract_int16.3.ast
deleted file mode 100644
index c677be5..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int16/subtract_int16.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      -
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      -
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      -
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      -
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      -
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-      -
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int32/subtract_int32.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int32/subtract_int32.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int32/subtract_int32.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int32/subtract_int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int32/subtract_int32.3.ast
deleted file mode 100644
index ebdf0a8..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int32/subtract_int32.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      -
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      -
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      -
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      -
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      -
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-      -
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int64/subtract_int64.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int64/subtract_int64.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int64/subtract_int64.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int64/subtract_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int64/subtract_int64.3.ast
deleted file mode 100644
index ccfa07d..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int64/subtract_int64.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      -
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      -
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      -
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      -
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      -
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-      -
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int8/subtract_int8.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int8/subtract_int8.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int8/subtract_int8.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int8/subtract_int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int8/subtract_int8.3.ast
deleted file mode 100644
index 7565144..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int8/subtract_int8.3.ast
+++ /dev/null
@@ -1,98 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      -
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result2]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      -
-      FunctionCall test.int16@1[
-        LiteralExpr [STRING] [2]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result3]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      -
-      FunctionCall test.int32@1[
-        LiteralExpr [STRING] [+3]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result4]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      -
-      FunctionCall test.int64@1[
-        LiteralExpr [STRING] [-4]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result5]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      -
-      FunctionCall test.float@1[
-        LiteralExpr [STRING] [-5.5f]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result6]
-    :
-    OperatorExpr [
-      FunctionCall test.int8@1[
-        LiteralExpr [STRING] [+1]
-      ]
-      -
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [result7]
-    :
-    OperatorExpr [
-      FunctionCall test.double@1[
-        LiteralExpr [STRING] [-6.5d]
-      ]
-      -
-      IndexAccessor [
-        OrderedListConstructor [
-          LiteralExpr [LONG] [1]
-        ]
-        Index:         LiteralExpr [LONG] [1]
-      ]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_null/unary-minus_null.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_null/unary-minus_null.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_null/unary-minus_null.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_null/unary-minus_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_null/unary-minus_null.3.ast
deleted file mode 100644
index e7479dc..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_null/unary-minus_null.3.ast
+++ /dev/null
@@ -1,14 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [nullField]
-    :
-    NEGATIVE IndexAccessor [
-  OrderedListConstructor [
-    LiteralExpr [LONG] [1]
-  ]
-  Index:   LiteralExpr [LONG] [1]
-]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.1.ast
deleted file mode 100644
index 3c0977d..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.1.ast
+++ /dev/null
@@ -1,11 +0,0 @@
-DataverseUse TinySocial
-TypeDecl TwitterUserType [
-  open RecordType {
-    screen_name : string,
-    lang : string,
-    friends_count : int64,
-    statuses_count : int64,
-    name : string,
-    followers_count : int64
-  }
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.2.ast
deleted file mode 100644
index 98d00ca..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.2.ast
+++ /dev/null
@@ -1,2 +0,0 @@
-DataverseUse TinySocial
-DatasetDecl TwitterUsers(TwitterUserType) partitioned by [[screen_name]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.3.ast
deleted file mode 100644
index f36d0ea..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.3.ast
+++ /dev/null
@@ -1 +0,0 @@
-DataverseUse TinySocial
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.4.ast
deleted file mode 100644
index a1961c8..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_01/order-by-exception_01.4.ast
+++ /dev/null
@@ -1,17 +0,0 @@
-DataverseUse TinySocial
-Query:
-  SELECT ELEMENT [
-  Variable [ Name=user Id=0 ]
-  ]
-FROM [  FunctionCall Metadata.dataset@1[
-    LiteralExpr [STRING] [TwitterUsers] 
-  ]
-  Variable [ Name=user Id=0 ]
-]
-Orderby
-  FieldAccessor [
-    Variable [ Name=user Id=0 ]
-    Field=screen_name
-  ]
-  ASC
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.1.ast
deleted file mode 100644
index 3c0977d..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.1.ast
+++ /dev/null
@@ -1,11 +0,0 @@
-DataverseUse TinySocial
-TypeDecl TwitterUserType [
-  open RecordType {
-    screen_name : string,
-    lang : string,
-    friends_count : int64,
-    statuses_count : int64,
-    name : string,
-    followers_count : int64
-  }
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.2.ast
deleted file mode 100644
index 98d00ca..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.2.ast
+++ /dev/null
@@ -1,2 +0,0 @@
-DataverseUse TinySocial
-DatasetDecl TwitterUsers(TwitterUserType) partitioned by [[screen_name]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.3.ast
deleted file mode 100644
index f36d0ea..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.3.ast
+++ /dev/null
@@ -1 +0,0 @@
-DataverseUse TinySocial
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.4.ast
deleted file mode 100644
index fb2f736..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/range-hints/order-by-exception_02/order-by-exception_02.4.ast
+++ /dev/null
@@ -1,17 +0,0 @@
-DataverseUse TinySocial
-Query:
-  SELECT ELEMENT [
-  Variable [ Name=user Id=0 ]
-  ]
-FROM [  FunctionCall Metadata.dataset@1[
-    LiteralExpr [STRING] [TwitterUsers] 
-  ]
-  Variable [ Name=user Id=0 ]
-]
-Orderby
-  FieldAccessor [
-    Variable [ Name=user Id=0 ]
-    Field=screen_name
-  ]
-  DESC
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with1/end-with1.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with1/end-with1.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with1/end-with1.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with1/end-with1.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with1/end-with1.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with1/end-with1.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with1/end-with1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with1/end-with1.3.ast
deleted file mode 100644
index 73188fe..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with1/end-with1.3.ast
+++ /dev/null
@@ -1,12 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    FunctionCall test.end-with@2[
-      LiteralExpr [STRING] [hello world]
-      LiteralExpr [STRING] [werld]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with2/end-with2.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with2/end-with2.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with2/end-with2.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with2/end-with2.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with2/end-with2.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with2/end-with2.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with2/end-with2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with2/end-with2.3.ast
deleted file mode 100644
index 5ebbce3..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with2/end-with2.3.ast
+++ /dev/null
@@ -1,12 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    FunctionCall test.end-with@2[
-      LiteralExpr [STRING] [hello world]
-      LiteralExpr [STRING] [ world]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with3/end-with3.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with3/end-with3.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with3/end-with3.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with3/end-with3.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with3/end-with3.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with3/end-with3.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with3/end-with3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with3/end-with3.3.ast
deleted file mode 100644
index b0076f0..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with3/end-with3.3.ast
+++ /dev/null
@@ -1,12 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    FunctionCall test.end-with@2[
-      LiteralExpr [STRING] [ends]
-      LiteralExpr [STRING] []
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with4/end-with4.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with4/end-with4.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with4/end-with4.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with4/end-with4.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with4/end-with4.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with4/end-with4.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with4/end-with4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with4/end-with4.3.ast
deleted file mode 100644
index 96ce926..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with4/end-with4.3.ast
+++ /dev/null
@@ -1,12 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    FunctionCall test.end-with@2[
-      LiteralExpr [STRING] [ends]
-      LiteralExpr [STRING] [ss]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with5/end-with5.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with5/end-with5.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with5/end-with5.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with5/end-with5.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with5/end-with5.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with5/end-with5.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with5/end-with5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with5/end-with5.3.ast
deleted file mode 100644
index 53d25d8..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/end-with5/end-with5.3.ast
+++ /dev/null
@@ -1,52 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [f1]
-    :
-    FunctionCall test.end-with@2[
-      LiteralExpr [STRING] [ends]
-      LiteralExpr [STRING] [s]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [f2]
-    :
-    FunctionCall test.end-with@2[
-      LiteralExpr [STRING] [start]
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [f3]
-    :
-    FunctionCall test.end-with@2[
-      LiteralExpr [NULL]
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [f4]
-    :
-    FunctionCall test.end-with@2[
-      LiteralExpr [STRING] []
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [f5]
-    :
-    FunctionCall test.end-with@2[
-      LiteralExpr [STRING] []
-      LiteralExpr [STRING] []
-    ]
-  )
-  (
-    LiteralExpr [STRING] [f6]
-    :
-    FunctionCall test.end-with@2[
-      LiteralExpr [NULL]
-      LiteralExpr [STRING] []
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/ends-with_01/ends-with_01.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/ends-with_01/ends-with_01.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/ends-with_01/ends-with_01.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/ends-with_01/ends-with_01.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/ends-with_01/ends-with_01.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/ends-with_01/ends-with_01.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/ends-with_01/ends-with_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/ends-with_01/ends-with_01.3.ast
deleted file mode 100644
index 7996206..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/ends-with_01/ends-with_01.3.ast
+++ /dev/null
@@ -1,26 +0,0 @@
-DataverseUse test
-Query:
-SELECT ELEMENT [
-OrderedListConstructor [
-  FunctionCall test.ends-with@2[
-    Variable [ Name=x ]
-    LiteralExpr [STRING] [ar]
-  ]
-  FunctionCall test.ends-with@2[
-    Variable [ Name=y ]
-    LiteralExpr [STRING] [ar]
-  ]
-]
-]
-FROM [  OrderedListConstructor [
-    LiteralExpr [STRING] [foofoo]
-  ]
-  AS
-  Variable [ Name=x ]
-,
-  OrderedListConstructor [
-    LiteralExpr [STRING] [barbar]
-  ]
-  AS
-  Variable [ Name=y ]
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith02/endwith02.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith02/endwith02.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith02/endwith02.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith02/endwith02.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith02/endwith02.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith02/endwith02.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith02/endwith02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith02/endwith02.3.ast
deleted file mode 100644
index 266a570..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith02/endwith02.3.ast
+++ /dev/null
@@ -1,43 +0,0 @@
-Query:
-SELECT ELEMENT [
-Variable [ Name=a ]
-]
-FROM [  OrderedListConstructor [
-    FunctionCall null.end-with@2[
-      LiteralExpr [STRING] [aBCDEFghIa]
-      FunctionCall null.codepoint-to-string@1[
-        OrderedListConstructor [
-          LiteralExpr [LONG] [41]
-        ]
-      ]
-    ]
-    FunctionCall null.end-with@2[
-      LiteralExpr [STRING] [AbCDEFghIA]
-      FunctionCall null.codepoint-to-string@1[
-        OrderedListConstructor [
-          LiteralExpr [LONG] [41]
-        ]
-      ]
-    ]
-    FunctionCall null.end-with@2[
-      LiteralExpr [STRING] [AbCdEfGhIjKlMnOpQrStUvWxYz]
-      LiteralExpr [STRING] [xYz]
-    ]
-    FunctionCall null.end-with@2[
-      LiteralExpr [STRING] [abcdef]
-      FunctionCall null.lowercase@1[
-        LiteralExpr [STRING] [ABCDEf]
-      ]
-    ]
-    FunctionCall null.end-with@2[
-      LiteralExpr [STRING] [abcdef]
-      LiteralExpr [STRING] [abcdef]
-    ]
-    FunctionCall null.end-with@2[
-      LiteralExpr [STRING] [abcdef123]
-      LiteralExpr [STRING] [ef123]
-    ]
-  ]
-  AS
-  Variable [ Name=a ]
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith03/endwith03.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith03/endwith03.1.ast
deleted file mode 100644
index 0637761..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith03/endwith03.1.ast
+++ /dev/null
@@ -1,7 +0,0 @@
-DataverseUse test
-TypeDecl TestType [
-  open RecordType {
-    name : string
-  }
-]
-DatasetDecl testds(TestType) partitioned by [[name]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith03/endwith03.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith03/endwith03.2.ast
deleted file mode 100644
index 916a59e..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith03/endwith03.2.ast
+++ /dev/null
@@ -1 +0,0 @@
-DataverseUse test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith03/endwith03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith03/endwith03.3.ast
deleted file mode 100644
index 41c80a0..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/endwith03/endwith03.3.ast
+++ /dev/null
@@ -1,26 +0,0 @@
-DataverseUse test
-Query:
-SELECT ELEMENT [
-Variable [ Name=l ]
-]
-FROM [  FunctionCall Metadata.dataset@1[
-    LiteralExpr [STRING] [testds]
-  ]
-  AS
-  Variable [ Name=l ]
-]
-Where
-  FunctionCall test.end-with@2[
-    FieldAccessor [
-      Variable [ Name=l ]
-      Field=name
-    ]
-    LiteralExpr [STRING] [Jones]
-  ]
-Orderby
-  FieldAccessor [
-    Variable [ Name=l ]
-    Field=name
-  ]
-  ASC
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with1/start-with1.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with1/start-with1.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with1/start-with1.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with1/start-with1.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with1/start-with1.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with1/start-with1.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with1/start-with1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with1/start-with1.3.ast
deleted file mode 100644
index b968f1b..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with1/start-with1.3.ast
+++ /dev/null
@@ -1,12 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    FunctionCall test.start-with@2[
-      LiteralExpr [STRING] [start]
-      LiteralExpr [STRING] [st]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with2/start-with2.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with2/start-with2.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with2/start-with2.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with2/start-with2.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with2/start-with2.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with2/start-with2.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with2/start-with2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with2/start-with2.3.ast
deleted file mode 100644
index 13d5be4..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with2/start-with2.3.ast
+++ /dev/null
@@ -1,12 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    FunctionCall test.start-with@2[
-      LiteralExpr [STRING] [start]
-      LiteralExpr [STRING] [t]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with3/start-with3.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with3/start-with3.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with3/start-with3.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with3/start-with3.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with3/start-with3.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with3/start-with3.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with3/start-with3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with3/start-with3.3.ast
deleted file mode 100644
index b321a57..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with3/start-with3.3.ast
+++ /dev/null
@@ -1,12 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    FunctionCall test.start-with@2[
-      LiteralExpr [STRING] [start]
-      LiteralExpr [STRING] [start]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with4/start-with4.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with4/start-with4.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with4/start-with4.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with4/start-with4.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with4/start-with4.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with4/start-with4.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with4/start-with4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with4/start-with4.3.ast
deleted file mode 100644
index 5cd1e1c..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with4/start-with4.3.ast
+++ /dev/null
@@ -1,52 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [f1]
-    :
-    FunctionCall test.start-with@2[
-      LiteralExpr [STRING] [start]
-      LiteralExpr [STRING] []
-    ]
-  )
-  (
-    LiteralExpr [STRING] [f2]
-    :
-    FunctionCall test.start-with@2[
-      LiteralExpr [STRING] [start]
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [f3]
-    :
-    FunctionCall test.start-with@2[
-      LiteralExpr [NULL]
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [f4]
-    :
-    FunctionCall test.start-with@2[
-      LiteralExpr [STRING] []
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [f5]
-    :
-    FunctionCall test.start-with@2[
-      LiteralExpr [STRING] []
-      LiteralExpr [STRING] []
-    ]
-  )
-  (
-    LiteralExpr [STRING] [f6]
-    :
-    FunctionCall test.start-with@2[
-      LiteralExpr [NULL]
-      LiteralExpr [STRING] []
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with5/start-with5.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with5/start-with5.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with5/start-with5.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with5/start-with5.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with5/start-with5.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with5/start-with5.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with5/start-with5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with5/start-with5.3.ast
deleted file mode 100644
index e96b937..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/start-with5/start-with5.3.ast
+++ /dev/null
@@ -1,12 +0,0 @@
-DataverseUse test
-Query:
-RecordConstructor [
-  (
-    LiteralExpr [STRING] [result1]
-    :
-    FunctionCall test.start-with@2[
-      LiteralExpr [STRING] []
-      LiteralExpr [STRING] [s]
-    ]
-  )
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/starts-with_01/starts-with_01.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/starts-with_01/starts-with_01.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/starts-with_01/starts-with_01.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/starts-with_01/starts-with_01.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/starts-with_01/starts-with_01.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/starts-with_01/starts-with_01.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/starts-with_01/starts-with_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/starts-with_01/starts-with_01.3.ast
deleted file mode 100644
index 6bc99d1..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/starts-with_01/starts-with_01.3.ast
+++ /dev/null
@@ -1,26 +0,0 @@
-DataverseUse test
-Query:
-SELECT ELEMENT [
-OrderedListConstructor [
-  FunctionCall test.starts-with@2[
-    Variable [ Name=x ]
-    LiteralExpr [STRING] [ba]
-  ]
-  FunctionCall test.starts-with@2[
-    Variable [ Name=y ]
-    LiteralExpr [STRING] [ba]
-  ]
-]
-]
-FROM [  OrderedListConstructor [
-    LiteralExpr [STRING] [foofoo]
-  ]
-  AS
-  Variable [ Name=x ]
-,
-  OrderedListConstructor [
-    LiteralExpr [STRING] [barbar]
-  ]
-  AS
-  Variable [ Name=y ]
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/startwith02/startwith02.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/startwith02/startwith02.1.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/startwith02/startwith02.1.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/startwith02/startwith02.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/startwith02/startwith02.2.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/startwith02/startwith02.2.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/startwith02/startwith02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/startwith02/startwith02.3.ast
deleted file mode 100644
index 9f525d0..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/startwith02/startwith02.3.ast
+++ /dev/null
@@ -1,77 +0,0 @@
-Query:
-SELECT ELEMENT [
-Variable [ Name=a ]
-]
-FROM [  OrderedListConstructor [
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [Hello]
-      LiteralExpr [STRING] [H]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [Hello]
-      FunctionCall null.lowercase@1[
-        LiteralExpr [STRING] [He]
-      ]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [Hello]
-      LiteralExpr [STRING] []
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [Hello]
-      LiteralExpr [STRING] [ ]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [Hello]
-      LiteralExpr [NULL]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [abcdef]
-      FunctionCall null.lowercase@1[
-        LiteralExpr [STRING] [ABCDEf]
-      ]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [abcdef]
-      LiteralExpr [STRING] [abcdef]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [abcdef]
-      LiteralExpr [STRING] [abc ]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [abc\tdef]
-      LiteralExpr [STRING] [abc\t]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [ abcdef]
-      LiteralExpr [STRING] [abc]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [0x1FF]
-      LiteralExpr [STRING] [0]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [<ID>]
-      LiteralExpr [STRING] [<]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [aBCDEFghI]
-      FunctionCall null.codepoint-to-string@1[
-        OrderedListConstructor [
-          LiteralExpr [LONG] [41]
-        ]
-      ]
-    ]
-    FunctionCall null.start-with@2[
-      LiteralExpr [STRING] [AbCDEFghI]
-      FunctionCall null.codepoint-to-string@1[
-        OrderedListConstructor [
-          LiteralExpr [LONG] [41]
-        ]
-      ]
-    ]
-  ]
-  AS
-  Variable [ Name=a ]
-]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/query-ASTERIXDB-1263.23.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.23.ast
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/query-ASTERIXDB-1263.23.ast
rename to asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.23.ast
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/query-ASTERIXDB-1329.24.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.24.ast
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/query-ASTERIXDB-1329.24.ast
rename to asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.24.ast
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/query-ASTERIXDB-1331.25.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.25.ast
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/query-ASTERIXDB-1331.25.ast
rename to asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.25.ast
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/group-by.26.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.26.ast
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/group-by.26.ast
rename to asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.26.ast
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/aggregate.27.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.27.ast
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/aggregate.27.ast
rename to asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.27.ast
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/query-ASTERIXDB-1263.23.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.23.ast
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/query-ASTERIXDB-1263.23.ast
rename to asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.23.ast
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/union/union/union.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/union/union/union.1.ast
deleted file mode 100644
index e339672..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/union/union/union.1.ast
+++ /dev/null
@@ -1,13 +0,0 @@
-DataverseUse TinySocial
-TypeDecl FacebookUserType [
-  open RecordType {
-    id : int64
-  }
-]
-TypeDecl FacebookMessageType [
-  open RecordType {
-    message_id : int64
-  }
-]
-DatasetDecl FacebookUsers(FacebookUserType) partitioned by [[id]]
-DatasetDecl FacebookMessages(FacebookMessageType) partitioned by [[message_id]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/union/union/union.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/union/union/union.2.ast
deleted file mode 100644
index f36d0ea..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/union/union/union.2.ast
+++ /dev/null
@@ -1 +0,0 @@
-DataverseUse TinySocial
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/union/union/union.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/union/union/union.3.ast
deleted file mode 100644
index e69de29..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/union/union/union.3.ast
+++ /dev/null
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
index 86475a2..5750b28 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -6924,6 +6924,11 @@
   </test-group>
   <test-group name="types">
     <test-case FilePath="types">
+      <compilation-unit name="any-object">
+        <output-dir compare="Text">any-object</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="types">
       <compilation-unit name="record01">
         <output-dir compare="Text">record01</output-dir>
       </compilation-unit>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index b6fe6f8..a2bc4ce 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -7190,7 +7190,7 @@
     <test-case FilePath="user-defined-functions">
       <compilation-unit name="udf30">
         <output-dir compare="Text">udf30</output-dir>
-        <expected-error>Cannot find dataset y because there is no dataverse declared, nor an alias with name y</expected-error>
+        <expected-error>Cannot find dataset y in dataverse Default nor an alias with name y</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="user-defined-functions">
@@ -7705,6 +7705,11 @@
   </test-group>
   <test-group name="types">
     <test-case FilePath="types">
+      <compilation-unit name="any-object">
+        <output-dir compare="Text">any-object</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="types">
       <compilation-unit name="record01">
         <output-dir compare="Text">record01</output-dir>
       </compilation-unit>
diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java
index d0594d2..1c48dbb 100644
--- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java
+++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java
@@ -44,6 +44,7 @@
 
 import org.apache.asterix.common.config.GlobalConfig;
 import org.apache.asterix.common.utils.ServletUtil.Servlets;
+import org.apache.asterix.test.base.ComparisonException;
 import org.apache.asterix.test.server.ITestServer;
 import org.apache.asterix.test.server.TestServerProvider;
 import org.apache.asterix.testframework.context.TestCaseContext;
@@ -52,6 +53,7 @@
 import org.apache.asterix.testframework.xml.TestCase.CompilationUnit;
 import org.apache.asterix.testframework.xml.TestGroup;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.mutable.MutableInt;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
@@ -121,16 +123,15 @@
         BufferedReader readerActual = new BufferedReader(
                 new InputStreamReader(new FileInputStream(actualFile), "UTF-8"));
         boolean regex = false;
-        if (actualFile.toString().endsWith(".regex")) {
-            runScriptAndCompareWithResultRegex(scriptFile, expectedFile, actualFile);
-            return;
-        } else if (actualFile.toString().endsWith(".regexadm")) {
-            regex = true;
-        }
-
-        String lineExpected, lineActual;
-        int num = 1;
         try {
+            if (actualFile.toString().endsWith(".regex")) {
+                runScriptAndCompareWithResultRegex(scriptFile, expectedFile, actualFile);
+                return;
+            } else if (actualFile.toString().endsWith(".regexadm")) {
+                regex = true;
+            }
+            String lineExpected, lineActual;
+            int num = 1;
             while ((lineExpected = readerExpected.readLine()) != null) {
                 lineActual = readerActual.readLine();
                 // Assert.assertEquals(lineExpected, lineActual);
@@ -138,7 +139,7 @@
                     if (lineExpected.isEmpty()) {
                         continue;
                     }
-                    throw new Exception(
+                    throw new ComparisonException(
                             "Result for " + scriptFile + " changed at line " + num + ":\n< " + lineExpected + "\n> ");
                 }
 
@@ -146,19 +147,21 @@
                 String[] lineSplitsExpected = lineExpected.split("Time");
                 String[] lineSplitsActual = lineActual.split("Time");
                 if (lineSplitsExpected.length != lineSplitsActual.length) {
-                    throw new Exception("Result for " + scriptFile + " changed at line " + num + ":\n< " + lineExpected
-                            + "\n> " + lineActual);
+                    throw new ComparisonException(
+                            "Result for " + scriptFile + " changed at line " + num + ":\n< " + lineExpected
+                                    + "\n> " + lineActual);
                 }
                 if (!equalStrings(lineSplitsExpected[0], lineSplitsActual[0], regex)) {
-                    throw new Exception("Result for " + scriptFile + " changed at line " + num + ":\n< " + lineExpected
-                            + "\n> " + lineActual);
+                    throw new ComparisonException(
+                            "Result for " + scriptFile + " changed at line " + num + ":\n< " + lineExpected
+                                    + "\n> " + lineActual);
                 }
 
                 for (int i = 1; i < lineSplitsExpected.length; i++) {
                     String[] splitsByCommaExpected = lineSplitsExpected[i].split(",");
                     String[] splitsByCommaActual = lineSplitsActual[i].split(",");
                     if (splitsByCommaExpected.length != splitsByCommaActual.length) {
-                        throw new Exception("Result for " + scriptFile + " changed at line " + num + ":\n< "
+                        throw new ComparisonException("Result for " + scriptFile + " changed at line " + num + ":\n< "
                                 + lineExpected + "\n> " + lineActual);
                     }
                     for (int j = 1; j < splitsByCommaExpected.length; j++) {
@@ -168,8 +171,9 @@
                             continue;
                         }
                         if (!equalStrings(splitsByCommaExpected[j], splitsByCommaActual[j], regex)) {
-                            throw new Exception("Result for " + scriptFile + " changed at line " + num + ":\n< "
-                                    + lineExpected + "\n> " + lineActual);
+                            throw new ComparisonException(
+                                    "Result for " + scriptFile + " changed at line " + num + ":\n< "
+                                            + lineExpected + "\n> " + lineActual);
                         }
                     }
                 }
@@ -178,7 +182,8 @@
             }
             lineActual = readerActual.readLine();
             if (lineActual != null) {
-                throw new Exception("Result for " + scriptFile + " changed at line " + num + ":\n< \n> " + lineActual);
+                throw new ComparisonException(
+                        "Result for " + scriptFile + " changed at line " + num + ":\n< \n> " + lineActual);
             }
         } catch (Exception e) {
             System.err.println("Actual results file: " + actualFile.toString());
@@ -223,8 +228,8 @@
                             if (expectedBagElements.size() != actualBagElements.size()) {
                                 return false;
                             }
-                            int [] expectedHits = new int [expectedBagElements.size()];
-                            int [] actualHits = new int [actualBagElements.size()];
+                            int[] expectedHits = new int[expectedBagElements.size()];
+                            int[] actualHits = new int[actualBagElements.size()];
                             int k = 0;
                             for (String expectedElement : expectedBagElements) {
                                 int l = 0;
@@ -289,9 +294,8 @@
         int num = 1;
         try (BufferedReader readerExpected = new BufferedReader(
                 new InputStreamReader(new FileInputStream(expectedFile), "UTF-8"));
-             BufferedReader readerActual = new BufferedReader(
-                new InputStreamReader(new FileInputStream(actualFile), "UTF-8")))
-        {
+                BufferedReader readerActual = new BufferedReader(
+                        new InputStreamReader(new FileInputStream(actualFile), "UTF-8"))) {
             StringBuilder actual = new StringBuilder();
             while ((lineActual = readerActual.readLine()) != null) {
                 actual.append(lineActual).append('\n');
@@ -331,7 +335,6 @@
 
     }
 
-
     // For tests where you simply want the byte-for-byte output.
     private static void writeOutputToFile(File actualFile, InputStream resultStream) throws Exception {
         try (FileOutputStream out = new FileOutputStream(actualFile)) {
@@ -919,7 +922,8 @@
                         e.printStackTrace();
                         System.err.println("...Unexpected!");
                         if (expectedError != null) {
-                            System.err.println("Expected to find the following in error text:\n+++++\n" + expectedError + "\n+++++");
+                            System.err.println("Expected to find the following in error text:\n+++++\n" + expectedError
+                                    + "\n+++++");
                         }
                         if (failedGroup != null) {
                             failedGroup.getTestCase().add(testCaseCtx.getTestCase());
@@ -960,4 +964,40 @@
     public static String stripJavaComments(String text) {
         return JAVA_BLOCK_COMMENT_PATTERN.matcher(text).replaceAll("");
     }
+
+    public void cleanup(String testCase, List<String> badtestcases) throws Exception {
+        try {
+            ArrayList<String> toBeDropped = new ArrayList<>();
+            InputStream resultStream = null;
+            OutputFormat fmt = OutputFormat.ADM;
+            resultStream = executeQueryService("select dv.DataverseName from Metadata.`Dataverse` as dv;", fmt,
+                    getEndpoint(Servlets.QUERY_SERVICE), new ArrayList<>());
+            resultStream = ResultExtractor.extract(resultStream);
+            BufferedReader reader = new BufferedReader(new InputStreamReader(resultStream));
+            String dataverse = reader.readLine();
+            while (dataverse != null) {
+                JSONObject json = new JSONObject(dataverse);
+                String dvName = json.getString("DataverseName");
+                if (!dvName.equals("Metadata") && !dvName.equals("Default")) {
+                    toBeDropped.add(dvName);
+                }
+                dataverse = reader.readLine();
+            }
+            if (!toBeDropped.isEmpty()) {
+                badtestcases.add(testCase);
+                LOGGER.warning(
+                        "Last test left some garbage. Dropping dataverses: " + StringUtils.join(toBeDropped, ','));
+                StringBuilder dropStatement = new StringBuilder();
+                for (String dv : toBeDropped) {
+                    dropStatement.append("drop dataverse ");
+                    dropStatement.append(dv);
+                    dropStatement.append(";\n");
+                }
+                resultStream = executeQueryService(dropStatement.toString(), getEndpoint(Servlets.QUERY_SERVICE));
+                ResultExtractor.extract(resultStream);
+            }
+        } catch (Throwable th) {
+            th.printStackTrace();
+        }
+    }
 }
diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/base/ComparisonException.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/base/ComparisonException.java
new file mode 100644
index 0000000..42e4362
--- /dev/null
+++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/base/ComparisonException.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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 org.apache.asterix.test.base;
+
+public class ComparisonException extends Exception {
+    private static final long serialVersionUID = 1L;
+
+    public ComparisonException(String message) {
+        super(message);
+    }
+}
diff --git a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AbstractExecutionIT.java b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AbstractExecutionIT.java
index a20ca50..676137c 100644
--- a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AbstractExecutionIT.java
+++ b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AbstractExecutionIT.java
@@ -49,7 +49,7 @@
 
     protected static final Logger LOGGER = Logger.getLogger(AbstractExecutionIT.class.getName());
 
-    protected static final String PATH_ACTUAL = "ittest" + File.separator;
+    protected static final String PATH_ACTUAL = "target" + File.separator + "ittest" + File.separator;
     protected static final String PATH_BASE = StringUtils
             .join(new String[] { "..", "asterix-app", "src", "test", "resources", "runtimets" }, File.separator);
 
@@ -59,6 +59,8 @@
 
     private static final String EXTERNAL_LIBRARY_TEST_GROUP = "lib";
 
+    private static final List<String> badTestCases = new ArrayList<>();
+
     private static String reportPath =
             new File(StringUtils.join(new String[] { "target", "failsafe-reports" }, File.separator)).getAbsolutePath();
 
@@ -88,8 +90,8 @@
         AsterixLifecycleIT.setUp();
 
         File externalTestsJar = new File(StringUtils.join(
-                new String[] { "..", "asterix-external-data", "target" } , File.separator)).listFiles(
-                (dir, name) -> name.matches("asterix-external-data-.*-tests.jar"))[0];
+                new String[] { "..", "asterix-external-data", "target" }, File.separator)).listFiles(
+                        (dir, name) -> name.matches("asterix-external-data-.*-tests.jar"))[0];
 
         FileUtils.copyFile(externalTestsJar, new File(
                 AsterixInstallerIntegrationUtil.getManagixHome() + "/clusters/local/working_dir/asterix/repo/",
@@ -97,7 +99,6 @@
 
         AsterixLifecycleIT.restartInstance();
 
-
         FileUtils.copyDirectoryStructure(
                 new File(StringUtils.join(new String[] { "..", "asterix-app", "data" }, File.separator)),
                 new File(AsterixInstallerIntegrationUtil.getManagixHome() + "/clusters/local/working_dir/data"));
@@ -115,7 +116,7 @@
         System.setProperty(ExternalDataConstants.NODE_RESOLVER_FACTORY_PROPERTY,
                 IdentitiyResolverFactory.class.getName());
 
-        reportPath = new File(StringUtils.join(new String[]{"target", "failsafe-reports"}, File.separator))
+        reportPath = new File(StringUtils.join(new String[] { "target", "failsafe-reports" }, File.separator))
                 .getAbsolutePath();
     }
 
@@ -127,8 +128,13 @@
             outdir.delete();
         }
         AsterixLifecycleIT.tearDown();
-
         HDFSCluster.getInstance().cleanup();
+        if (!badTestCases.isEmpty()) {
+            System.out.println("The following test cases left some data");
+            for (String testCase : badTestCases) {
+                System.out.println(testCase);
+            }
+        }
     }
 
     @Parameters
@@ -153,6 +159,7 @@
             return;
         }
         testExecutor.executeTest(PATH_ACTUAL, tcCtx, null, false);
+        testExecutor.cleanup(tcCtx.toString(), badTestCases);
     }
 
     protected boolean skip() {
diff --git a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixClusterLifeCycleIT.java b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixClusterLifeCycleIT.java
index df31788..89fb70e 100644
--- a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixClusterLifeCycleIT.java
+++ b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixClusterLifeCycleIT.java
@@ -44,7 +44,7 @@
             .join(new String[] { "src", "test", "resources", "integrationts", "lifecycle" }, File.separator);
     private static final String CLUSTER_BASE = StringUtils
             .join(new String[] { "src", "test", "resources", "clusterts" }, File.separator);
-    private static final String PATH_ACTUAL = "ittest" + File.separator;
+    private static final String PATH_ACTUAL = "target" + File.separator + "ittest" + File.separator;
     private static String managixFolderName;
     private static final Logger LOGGER = Logger.getLogger(AsterixClusterLifeCycleIT.class.getName());
     private static List<TestCaseContext> testCaseCollection;
diff --git a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixExternalLibraryIT.java b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixExternalLibraryIT.java
index 3d3d564..57aaeee 100644
--- a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixExternalLibraryIT.java
+++ b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixExternalLibraryIT.java
@@ -38,7 +38,7 @@
     private static final String LIBRARY_NAME = "testlib";
     private static final String LIBRARY_DATAVERSE = "externallibtest";
     private static final String PATH_BASE = "src/test/resources/integrationts/library";
-    private static final String PATH_ACTUAL = "ittest/";
+    private static final String PATH_ACTUAL = "target" + File.separator + "ittest" + File.separator;
     private static final String LIBRARY_PATH = "target" + File.separator + "resources" + File.separator + "externallib"
             + File.separator + "testlib-zip-binary-assembly.zip";
     private static final Logger LOGGER = Logger.getLogger(AsterixExternalLibraryIT.class.getName());
diff --git a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixLifecycleIT.java b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixLifecycleIT.java
index 117751f..52e75cc 100644
--- a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixLifecycleIT.java
+++ b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/AsterixLifecycleIT.java
@@ -46,7 +46,7 @@
     private static final int NUM_NC = 2;
     private static final CommandHandler cmdHandler = new CommandHandler();
     private static final String PATH_BASE = "src/test/resources/integrationts/lifecycle";
-    private static final String PATH_ACTUAL = "ittest/";
+    private static final String PATH_ACTUAL = "target" + File.separator + "ittest" + File.separator;
     private static final Logger LOGGER = Logger.getLogger(AsterixLifecycleIT.class.getName());
     private static List<TestCaseContext> testCaseCollection;
     private final TestExecutor testExecutor = new TestExecutor();
diff --git a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/ReplicationIT.java b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/ReplicationIT.java
index 908c384..37aa59d 100644
--- a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/ReplicationIT.java
+++ b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/test/ReplicationIT.java
@@ -49,7 +49,7 @@
             .join(new String[] { "src", "test", "resources", "integrationts", "replication" }, File.separator);
     private static final String CLUSTER_BASE = StringUtils
             .join(new String[] { "src", "test", "resources", "clusterts" }, File.separator);
-    private static final String PATH_ACTUAL = "repliationtest" + File.separator;
+    private static final String PATH_ACTUAL = "target" + File.separator + "repliationtest" + File.separator;
     private static String managixFolderName;
     private static final Logger LOGGER = Logger.getLogger(ReplicationIT.class.getName());
     private static File asterixProjectDir = new File(System.getProperty("user.dir"));
diff --git a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/transaction/DmlRecoveryIT.java b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/transaction/DmlRecoveryIT.java
index ecac44e..68c009a 100644
--- a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/transaction/DmlRecoveryIT.java
+++ b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/transaction/DmlRecoveryIT.java
@@ -44,7 +44,7 @@
     // variable to indicate whether this test will be executed
 
     private static final Logger LOGGER = Logger.getLogger(RecoveryIT.class.getName());
-    private static final String PATH_ACTUAL = "rttest/";
+    private static final String PATH_ACTUAL = "target" + File.separator + "rttest" + File.separator;
 
     private static final String TESTSUITE_PATH_BASE = "../asterix-app/src/test/resources/runtimets/";
 
@@ -114,8 +114,9 @@
         Collection<Object[]> testArgs = new ArrayList<Object[]>();
         TestCaseContext.Builder b = new TestCaseContext.Builder();
         for (TestCaseContext ctx : b.build(new File(TESTSUITE_PATH_BASE))) {
-            if (ctx.getTestCase().getFilePath().equals("dml"))
+            if (ctx.getTestCase().getFilePath().equals("dml")) {
                 testArgs.add(new Object[] { ctx });
+            }
         }
         return testArgs;
     }
diff --git a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/transaction/RecoveryIT.java b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/transaction/RecoveryIT.java
index 25c93af..9795702 100644
--- a/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/transaction/RecoveryIT.java
+++ b/asterixdb/asterix-installer/src/test/java/org/apache/asterix/installer/transaction/RecoveryIT.java
@@ -38,11 +38,12 @@
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameters;
+
 @RunWith(Parameterized.class)
 public class RecoveryIT {
 
     private static final Logger LOGGER = Logger.getLogger(RecoveryIT.class.getName());
-    private static final String PATH_ACTUAL = "rttest/";
+    private static final String PATH_ACTUAL = "target" + File.separator + "rttest" + File.separator;
     private static final String PATH_BASE = "src/test/resources/transactionts/";
     private static final String HDFS_BASE = "../asterix-app/";
     private TestCaseContext tcCtx;
diff --git a/asterixdb/asterix-installer/src/test/resources/integrationts/library/results/library-metadata/dataverseDataset/dataverseDataset.1.adm b/asterixdb/asterix-installer/src/test/resources/integrationts/library/results/library-metadata/dataverseDataset/dataverseDataset.1.adm
index 68aa542..122cf71 100644
--- a/asterixdb/asterix-installer/src/test/resources/integrationts/library/results/library-metadata/dataverseDataset/dataverseDataset.1.adm
+++ b/asterixdb/asterix-installer/src/test/resources/integrationts/library/results/library-metadata/dataverseDataset/dataverseDataset.1.adm
@@ -1,2 +1,3 @@
+{ "DataverseName": "Default", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Thu Sep 15 03:11:25 UTC 2016", "PendingOp": 0 }
 { "DataverseName": "Metadata", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Mon Jun 27 17:22:24 PDT 2016", "PendingOp": 0 }
 { "DataverseName": "externallibtest", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Mon Jun 27 17:22:44 PDT 2016", "PendingOp": 0 }
diff --git a/asterixdb/asterix-lang-aql/src/main/javacc/AQL.jj b/asterixdb/asterix-lang-aql/src/main/javacc/AQL.jj
index 17d0909..0a9079d 100644
--- a/asterixdb/asterix-lang-aql/src/main/javacc/AQL.jj
+++ b/asterixdb/asterix-lang-aql/src/main/javacc/AQL.jj
@@ -1291,16 +1291,16 @@
 
 TypeReferenceExpression TypeReference() throws ParseException:
 {
-  String id = null;
+  Pair<Identifier,Identifier> id = null;
 }
 {
- id = Identifier()
+ id = QualifiedName()
    {
-     if (id.equalsIgnoreCase("int")) {
-        id = "int64";
+     if (id.first == null && id.second.getValue().equalsIgnoreCase("int")) {
+        id.second.setValue("int64");
      }
 
-     return new TypeReferenceExpression(new Identifier(id));
+     return new TypeReferenceExpression(id);
    }
 }
 
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/TypeReferenceExpression.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/TypeReferenceExpression.java
index 49f0667..b360797 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/TypeReferenceExpression.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/TypeReferenceExpression.java
@@ -22,16 +22,17 @@
 import org.apache.asterix.lang.common.struct.Identifier;
 import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
 import org.apache.commons.lang.ObjectUtils;
+import org.apache.hyracks.algebricks.common.utils.Pair;
 
 public class TypeReferenceExpression implements TypeExpression {
 
-    private final Identifier ident;
+    private final Pair<Identifier, Identifier> ident;
 
-    public TypeReferenceExpression(Identifier ident) {
+    public TypeReferenceExpression(Pair<Identifier, Identifier> ident) {
         this.ident = ident;
     }
 
-    public Identifier getIdent() {
+    public Pair<Identifier, Identifier> getIdent() {
         return ident;
     }
 
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/FormatPrintVisitor.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/FormatPrintVisitor.java
index 5ff4a03..fb2d3bd 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/FormatPrintVisitor.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/FormatPrintVisitor.java
@@ -414,7 +414,11 @@
 
     @Override
     public Void visit(TypeReferenceExpression t, Integer arg) throws AsterixException {
-        out.print(normalize(t.getIdent().getValue()));
+        if (t.getIdent().first != null && t.getIdent().first.getValue() != null) {
+            out.print(normalize(t.getIdent().first.getValue()));
+            out.print('.');
+        }
+        out.print(normalize(t.getIdent().second.getValue()));
         return null;
     }
 
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/QueryPrintVisitor.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/QueryPrintVisitor.java
index a5c9efc..e7cf43b 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/QueryPrintVisitor.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/QueryPrintVisitor.java
@@ -333,7 +333,11 @@
 
     @Override
     public Void visit(TypeReferenceExpression t, Integer arg) throws AsterixException {
-        out.print(t.getIdent());
+        if (t.getIdent().first != null && t.getIdent().first.getValue() != null) {
+            out.print(t.getIdent().first.getValue());
+            out.print('.');
+        }
+        out.print(t.getIdent().second.getValue());
         return null;
     }
 
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
index dab178b..697439d 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
+++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
@@ -1363,16 +1363,16 @@
 
 TypeReferenceExpression TypeReference() throws ParseException:
 {
-  String id = null;
+  Pair<Identifier,Identifier> id = null;
 }
 {
- id = Identifier()
+ id = QualifiedName()
    {
-     if (id.equalsIgnoreCase("int")) {
-        id = "int64";
+     if (id.first == null && id.second.getValue().equalsIgnoreCase("int")) {
+        id.second.setValue("int64");
      }
 
-     return new TypeReferenceExpression(new Identifier(id));
+     return new TypeReferenceExpression(id);
    }
 }
 
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
index c1dfd02..934fe4c 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -19,6 +19,7 @@
 package org.apache.asterix.metadata.bootstrap;
 
 import java.io.File;
+import java.rmi.RemoteException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -38,6 +39,7 @@
 import org.apache.asterix.common.config.IAsterixPropertiesProvider;
 import org.apache.asterix.common.context.BaseOperationTracker;
 import org.apache.asterix.common.context.CorrelatedPrefixMergePolicyFactory;
+import org.apache.asterix.common.exceptions.ACIDException;
 import org.apache.asterix.common.ioopcallbacks.LSMBTreeIOOperationCallbackFactory;
 import org.apache.asterix.common.utils.StoragePathUtil;
 import org.apache.asterix.external.adapter.factory.GenericAdapterFactory;
@@ -104,7 +106,7 @@
  * stopUniverse() should be called upon application undeployment.
  */
 public class MetadataBootstrap {
-    public static final boolean IS_DEBUG_MODE = false;// true
+    public static final boolean IS_DEBUG_MODE = false;
     private static final Logger LOGGER = Logger.getLogger(MetadataBootstrap.class.getName());
     private static IAsterixAppRuntimeContext runtimeContext;
     private static IBufferCache bufferCache;
@@ -116,7 +118,6 @@
     private static List<String> nodeNames;
     private static String outputDir;
     private static boolean isNewUniverse;
-
     private static final IMetadataIndex[] PRIMARY_INDEXES =
             new IMetadataIndex[] { MetadataPrimaryIndexes.DATAVERSE_DATASET, MetadataPrimaryIndexes.DATASET_DATASET,
                     MetadataPrimaryIndexes.DATATYPE_DATASET, MetadataPrimaryIndexes.INDEX_DATASET,
@@ -128,8 +129,23 @@
 
     private static IAsterixPropertiesProvider propertiesProvider;
 
+    private MetadataBootstrap() {
+    }
+
+    /**
+     * bootstrap metadata
+     *
+     * @param asterixPropertiesProvider
+     * @param ncApplicationContext
+     * @param isNewUniverse
+     * @throws ACIDException
+     * @throws RemoteException
+     * @throws MetadataException
+     * @throws Exception
+     */
     public static void startUniverse(IAsterixPropertiesProvider asterixPropertiesProvider,
-            INCApplicationContext ncApplicationContext, boolean isNewUniverse) throws Exception {
+            INCApplicationContext ncApplicationContext, boolean isNewUniverse)
+            throws RemoteException, ACIDException, MetadataException {
         MetadataBootstrap.setNewUniverse(isNewUniverse);
         runtimeContext = (IAsterixAppRuntimeContext) ncApplicationContext.getApplicationObject();
         propertiesProvider = asterixPropertiesProvider;
@@ -175,33 +191,35 @@
         } catch (Exception e) {
             try {
                 if (IS_DEBUG_MODE) {
-                    e.printStackTrace();
+                    LOGGER.log(Level.SEVERE, "Failure during metadata bootstrap", e);
                 }
                 MetadataManager.INSTANCE.abortTransaction(mdTxnCtx);
             } catch (Exception e2) {
                 e.addSuppressed(e2);
-                // TODO
-                // change the exception type to AbortFailureException
+                // TODO change the exception type to AbortFailureException
                 throw new MetadataException(e);
             }
-            throw e;
+            throw new MetadataException(e);
         }
     }
 
-    public static void stopUniverse() {
-        // Close all BTree files in BufferCache.
-        // metadata datasets will be closed when the dataset life cycle manger is closed
-    }
-
-    private static void insertInitialDataverses(MetadataTransactionContext mdTxnCtx) throws Exception {
-        String dataverseName = MetadataPrimaryIndexes.DATAVERSE_DATASET.getDataverseName();
+    private static void insertInitialDataverses(MetadataTransactionContext mdTxnCtx) throws MetadataException {
         String dataFormat = NonTaggedDataFormat.NON_TAGGED_DATA_FORMAT;
         MetadataManager.INSTANCE.addDataverse(mdTxnCtx,
-                new Dataverse(dataverseName, dataFormat, IMetadataEntity.PENDING_NO_OP));
+                new Dataverse(MetadataConstants.METADATA_DATAVERSE_NAME, dataFormat, IMetadataEntity.PENDING_NO_OP));
+        MetadataManager.INSTANCE.addDataverse(mdTxnCtx, MetadataBuiltinEntities.DEFAULT_DATAVERSE);
     }
 
+    /**
+     * Inserts a metadata dataset to the physical dataset index
+     * Should be performed on a bootstrap of a new universe
+     *
+     * @param mdTxnCtx
+     * @param indexes
+     * @throws MetadataException
+     */
     public static void insertMetadataDatasets(MetadataTransactionContext mdTxnCtx, IMetadataIndex[] indexes)
-            throws Exception {
+            throws MetadataException {
         for (int i = 0; i < indexes.length; i++) {
             IDatasetDetails id = new InternalDatasetDetails(FileStructure.BTREE, PartitioningStrategy.HASH,
                     indexes[i].getPartitioningExpr(), indexes[i].getPartitioningExpr(), null,
@@ -219,7 +237,7 @@
         }
     }
 
-    public static void getBuiltinTypes(ArrayList<IAType> types) throws Exception {
+    private static void getBuiltinTypes(List<IAType> types) {
         Collection<BuiltinType> builtinTypes = AsterixBuiltinTypeMap.getBuiltinTypes().values();
         Iterator<BuiltinType> iter = builtinTypes.iterator();
         while (iter.hasNext()) {
@@ -227,47 +245,47 @@
         }
     }
 
-    public static void getMetadataTypes(ArrayList<IAType> types) throws Exception {
+    private static void getMetadataTypes(ArrayList<IAType> types) {
         for (int i = 0; i < PRIMARY_INDEXES.length; i++) {
             types.add(PRIMARY_INDEXES[i].getPayloadRecordType());
         }
     }
 
-    public static void insertMetadataDatatypes(MetadataTransactionContext mdTxnCtx) throws Exception {
-        String dataverseName = MetadataPrimaryIndexes.DATAVERSE_DATASET.getDataverseName();
-        ArrayList<IAType> types = new ArrayList<IAType>();
+    private static void insertMetadataDatatypes(MetadataTransactionContext mdTxnCtx) throws MetadataException {
+        ArrayList<IAType> types = new ArrayList<>();
         getBuiltinTypes(types);
         getMetadataTypes(types);
         for (int i = 0; i < types.size(); i++) {
             MetadataManager.INSTANCE.addDatatype(mdTxnCtx,
-                    new Datatype(dataverseName, types.get(i).getTypeName(), types.get(i), false));
+                    new Datatype(MetadataConstants.METADATA_DATAVERSE_NAME, types.get(i).getTypeName(), types.get(i),
+                            false));
         }
+        MetadataManager.INSTANCE.addDatatype(mdTxnCtx,
+                MetadataBuiltinEntities.ANY_OBJECT_DATATYPE);
         if (LOGGER.isLoggable(Level.INFO)) {
             LOGGER.info("Finished inserting initial datatypes.");
         }
     }
 
-    public static void insertNodes(MetadataTransactionContext mdTxnCtx) throws Exception {
+    private static void insertNodes(MetadataTransactionContext mdTxnCtx) throws MetadataException {
         for (String nodesName : nodeNames) {
             MetadataManager.INSTANCE.addNode(mdTxnCtx, new Node(nodesName, 0, 0));
         }
     }
 
-    public static void insertInitialGroups(MetadataTransactionContext mdTxnCtx) throws Exception {
-        String groupName = MetadataPrimaryIndexes.DATAVERSE_DATASET.getNodeGroupName();
-        List<String> metadataGroupNodeNames = new ArrayList<String>();
+    private static void insertInitialGroups(MetadataTransactionContext mdTxnCtx) throws MetadataException {
+        List<String> metadataGroupNodeNames = new ArrayList<>();
         metadataGroupNodeNames.add(metadataNodeName);
-        NodeGroup groupRecord = new NodeGroup(groupName, metadataGroupNodeNames);
+        NodeGroup groupRecord = new NodeGroup(MetadataConstants.METADATA_NODEGROUP_NAME, metadataGroupNodeNames);
         MetadataManager.INSTANCE.addNodegroup(mdTxnCtx, groupRecord);
-
-        List<String> nodes = new ArrayList<String>();
+        List<String> nodes = new ArrayList<>();
         nodes.addAll(nodeNames);
         NodeGroup defaultGroup = new NodeGroup(MetadataConstants.METADATA_DEFAULT_NODEGROUP_NAME, nodes);
         MetadataManager.INSTANCE.addNodegroup(mdTxnCtx, defaultGroup);
-
     }
 
-    private static void insertInitialAdapters(MetadataTransactionContext mdTxnCtx) throws Exception {
+    private static void insertInitialAdapters(MetadataTransactionContext mdTxnCtx)
+            throws MetadataException {
         String[] builtInAdapterClassNames = new String[] { GenericAdapterFactory.class.getName() };
         DatasourceAdapter adapter;
         for (String adapterClassName : builtInAdapterClassNames) {
@@ -279,7 +297,7 @@
         }
     }
 
-    private static void insertInitialFeedPolicies(MetadataTransactionContext mdTxnCtx) throws Exception {
+    private static void insertInitialFeedPolicies(MetadataTransactionContext mdTxnCtx) throws MetadataException {
         for (FeedPolicyEntity feedPolicy : BuiltinFeedPolicies.policies) {
             MetadataManager.INSTANCE.addFeedPolicy(mdTxnCtx, feedPolicy);
         }
@@ -288,29 +306,46 @@
         }
     }
 
-    private static void insertInitialCompactionPolicies(MetadataTransactionContext mdTxnCtx) throws Exception {
+    private static void insertInitialCompactionPolicies(MetadataTransactionContext mdTxnCtx) throws MetadataException {
         String[] builtInCompactionPolicyClassNames =
                 new String[] { ConstantMergePolicyFactory.class.getName(), PrefixMergePolicyFactory.class.getName(),
                         NoMergePolicyFactory.class.getName(), CorrelatedPrefixMergePolicyFactory.class.getName() };
-        CompactionPolicy compactionPolicy;
         for (String policyClassName : builtInCompactionPolicyClassNames) {
-            compactionPolicy = getCompactionPolicyEntity(policyClassName);
+            CompactionPolicy compactionPolicy = getCompactionPolicyEntity(policyClassName);
             MetadataManager.INSTANCE.addCompactionPolicy(mdTxnCtx, compactionPolicy);
         }
     }
 
-    private static DatasourceAdapter getAdapter(String adapterFactoryClassName) throws Exception {
-        String adapterName = ((IAdapterFactory) (Class.forName(adapterFactoryClassName).newInstance())).getAlias();
-        return new DatasourceAdapter(new AdapterIdentifier(MetadataConstants.METADATA_DATAVERSE_NAME, adapterName),
-                adapterFactoryClassName, IDataSourceAdapter.AdapterType.INTERNAL);
+    private static DatasourceAdapter getAdapter(String adapterFactoryClassName)
+            throws MetadataException {
+        try {
+            String adapterName = ((IAdapterFactory) (Class.forName(adapterFactoryClassName).newInstance())).getAlias();
+            return new DatasourceAdapter(new AdapterIdentifier(MetadataConstants.METADATA_DATAVERSE_NAME, adapterName),
+                    adapterFactoryClassName, IDataSourceAdapter.AdapterType.INTERNAL);
+        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+            throw new MetadataException("Unable to instantiate builtin Adapter", e);
+        }
     }
 
-    private static CompactionPolicy getCompactionPolicyEntity(String compactionPolicyClassName) throws Exception {
-        String policyName =
-                ((ILSMMergePolicyFactory) (Class.forName(compactionPolicyClassName).newInstance())).getName();
-        return new CompactionPolicy(MetadataConstants.METADATA_DATAVERSE_NAME, policyName, compactionPolicyClassName);
+    private static CompactionPolicy getCompactionPolicyEntity(String compactionPolicyClassName)
+            throws MetadataException {
+        try {
+            String policyName =
+                    ((ILSMMergePolicyFactory) (Class.forName(compactionPolicyClassName).newInstance())).getName();
+            return new CompactionPolicy(MetadataConstants.METADATA_DATAVERSE_NAME, policyName,
+                    compactionPolicyClassName);
+        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+            throw new MetadataException("Unable to instantiate builtin Merge Policy Factory", e);
+        }
     }
 
+    /**
+     * Enlist a metadata index so it is available for metadata operations
+     * should be performed upon bootstrapping
+     *
+     * @param index
+     * @throws HyracksDataException
+     */
     public static void enlistMetadataDataset(IMetadataIndex index) throws HyracksDataException {
         ClusterPartition metadataPartition = propertiesProvider.getMetadataProperties().getMetadataPartition();
         int metadataDeviceId = metadataPartition.getIODeviceNum();
@@ -387,12 +422,12 @@
         return metadataNodeName;
     }
 
+    /**
+     * Perform recovery of DDL operations metadata records
+     */
     public static void startDDLRecovery() throws MetadataException {
         // #. clean up any record which has pendingAdd/DelOp flag
         // as traversing all records from DATAVERSE_DATASET to DATASET_DATASET, and then to INDEX_DATASET.
-        String dataverseName = null;
-        String datasetName = null;
-        String indexName = null;
         MetadataTransactionContext mdTxnCtx = null;
         MetadataManager.INSTANCE.acquireWriteLatch();
         if (LOGGER.isLoggable(Level.INFO)) {
@@ -401,59 +436,9 @@
 
         try {
             mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
-
             List<Dataverse> dataverses = MetadataManager.INSTANCE.getDataverses(mdTxnCtx);
             for (Dataverse dataverse : dataverses) {
-                dataverseName = dataverse.getDataverseName();
-                if (dataverse.getPendingOp() != IMetadataEntity.PENDING_NO_OP) {
-                    // drop pending dataverse
-                    MetadataManager.INSTANCE.dropDataverse(mdTxnCtx, dataverseName);
-                    if (LOGGER.isLoggable(Level.INFO)) {
-                        LOGGER.info("Dropped a pending dataverse: " + dataverseName);
-                    }
-                } else {
-                    List<Dataset> datasets = MetadataManager.INSTANCE.getDataverseDatasets(mdTxnCtx, dataverseName);
-                    for (Dataset dataset : datasets) {
-                        datasetName = dataset.getDatasetName();
-                        if (dataset.getPendingOp() != IMetadataEntity.PENDING_NO_OP) {
-                            // drop pending dataset
-                            MetadataManager.INSTANCE.dropDataset(mdTxnCtx, dataverseName, datasetName);
-                            if (LOGGER.isLoggable(Level.INFO)) {
-                                LOGGER.info("Dropped a pending dataset: " + dataverseName + "." + datasetName);
-                            }
-                        } else {
-                            List<Index> indexes =
-                                    MetadataManager.INSTANCE.getDatasetIndexes(mdTxnCtx, dataverseName, datasetName);
-                            for (Index index : indexes) {
-                                indexName = index.getIndexName();
-                                if (index.getPendingOp() != IMetadataEntity.PENDING_NO_OP) {
-                                    // drop pending index
-                                    MetadataManager.INSTANCE.dropIndex(mdTxnCtx, dataverseName, datasetName, indexName);
-                                    if (LOGGER.isLoggable(Level.INFO)) {
-                                        LOGGER.info("Dropped a pending index: " + dataverseName + "." + datasetName
-                                                + "." + indexName);
-                                    }
-                                }
-                            }
-                        }
-                        if (dataset.getDatasetType() == DatasetType.EXTERNAL) {
-                            // if the dataset has no indexes, delete all its files
-                            List<Index> indexes =
-                                    MetadataManager.INSTANCE.getDatasetIndexes(mdTxnCtx, dataverseName, datasetName);
-                            if (indexes.size() == 0) {
-                                List<ExternalFile> files =
-                                        MetadataManager.INSTANCE.getDatasetExternalFiles(mdTxnCtx, dataset);
-                                for (ExternalFile file : files) {
-                                    MetadataManager.INSTANCE.dropExternalFile(mdTxnCtx, file);
-                                    if (LOGGER.isLoggable(Level.INFO)) {
-                                        LOGGER.info("Dropped an external file: " + dataverseName + "." + datasetName
-                                                + "." + file.getFileNumber());
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
+                recoverDataverse(mdTxnCtx, dataverse);
             }
             // the commit wasn't there before. yet, everything was working correctly!!!!!!!!!!!
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
@@ -463,7 +448,7 @@
         } catch (Exception e) {
             try {
                 if (IS_DEBUG_MODE) {
-                    e.printStackTrace();
+                    LOGGER.log(Level.SEVERE, "Failure during DDL recovery", e);
                 }
                 MetadataManager.INSTANCE.abortTransaction(mdTxnCtx);
             } catch (Exception e2) {
@@ -475,6 +460,68 @@
         }
     }
 
+    private static void recoverDataverse(MetadataTransactionContext mdTxnCtx, Dataverse dataverse)
+            throws MetadataException {
+        if (dataverse.getPendingOp() != IMetadataEntity.PENDING_NO_OP) {
+            // drop pending dataverse
+            MetadataManager.INSTANCE.dropDataverse(mdTxnCtx, dataverse.getDataverseName());
+            if (LOGGER.isLoggable(Level.INFO)) {
+                LOGGER.info("Dropped a pending dataverse: " + dataverse.getDataverseName());
+            }
+        } else {
+            List<Dataset> datasets =
+                    MetadataManager.INSTANCE.getDataverseDatasets(mdTxnCtx, dataverse.getDataverseName());
+            for (Dataset dataset : datasets) {
+                recoverDataset(mdTxnCtx, dataset);
+            }
+        }
+    }
+
+    private static void recoverDataset(MetadataTransactionContext mdTxnCtx, Dataset dataset) throws MetadataException {
+        if (dataset.getPendingOp() != IMetadataEntity.PENDING_NO_OP) {
+            // drop pending dataset
+            MetadataManager.INSTANCE.dropDataset(mdTxnCtx, dataset.getDataverseName(), dataset.getDatasetName());
+            if (LOGGER.isLoggable(Level.INFO)) {
+                LOGGER.info(
+                        "Dropped a pending dataset: " + dataset.getDataverseName() + "." + dataset.getDatasetName());
+            }
+        } else {
+            List<Index> indexes =
+                    MetadataManager.INSTANCE.getDatasetIndexes(mdTxnCtx, dataset.getDataverseName(),
+                            dataset.getDatasetName());
+            for (Index index : indexes) {
+                if (index.getPendingOp() != IMetadataEntity.PENDING_NO_OP) {
+                    // drop pending index
+                    MetadataManager.INSTANCE.dropIndex(mdTxnCtx, dataset.getDataverseName(), dataset.getDatasetName(),
+                            index.getIndexName());
+                    if (LOGGER.isLoggable(Level.INFO)) {
+                        LOGGER.info("Dropped a pending index: " + dataset.getDataverseName() + "."
+                                + dataset.getDatasetName()
+                                + "." + index.getIndexName());
+                    }
+                }
+            }
+        }
+        if (dataset.getDatasetType() == DatasetType.EXTERNAL) {
+            // if the dataset has no indexes, delete all its files
+            List<Index> indexes =
+                    MetadataManager.INSTANCE.getDatasetIndexes(mdTxnCtx, dataset.getDataverseName(),
+                            dataset.getDatasetName());
+            if (indexes.isEmpty()) {
+                List<ExternalFile> files =
+                        MetadataManager.INSTANCE.getDatasetExternalFiles(mdTxnCtx, dataset);
+                for (ExternalFile file : files) {
+                    MetadataManager.INSTANCE.dropExternalFile(mdTxnCtx, file);
+                    if (LOGGER.isLoggable(Level.INFO)) {
+                        LOGGER.info("Dropped an external file: " + dataset.getDataverseName() + "."
+                                + dataset.getDatasetName()
+                                + "." + file.getFileNumber());
+                    }
+                }
+            }
+        }
+    }
+
     public static boolean isNewUniverse() {
         return isNewUniverse;
     }
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBuiltinEntities.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBuiltinEntities.java
new file mode 100644
index 0000000..edbbc4a
--- /dev/null
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBuiltinEntities.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *   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 org.apache.asterix.metadata.bootstrap;
+
+import org.apache.asterix.metadata.api.IMetadataEntity;
+import org.apache.asterix.metadata.entities.Datatype;
+import org.apache.asterix.metadata.entities.Dataverse;
+import org.apache.asterix.metadata.utils.MetadataConstants;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.asterix.runtime.formats.NonTaggedDataFormat;
+
+public class MetadataBuiltinEntities {
+    //--------------------------------------- Dataverses ----------------------------------------//
+    public static final String DEFAULT_DATAVERSE_NAME = "Default";
+    public static final Dataverse DEFAULT_DATAVERSE =
+            new Dataverse(DEFAULT_DATAVERSE_NAME, NonTaggedDataFormat.class.getName(),
+                    IMetadataEntity.PENDING_NO_OP);
+    //--------------------------------------- Datatypes -----------------------------------------//
+    public static final ARecordType ANY_OBJECT_RECORD_TYPE =
+            new ARecordType("AnyObject", new String[0], new IAType[0], true);
+    public static final Datatype ANY_OBJECT_DATATYPE =
+            new Datatype(MetadataConstants.METADATA_DATAVERSE_NAME, ANY_OBJECT_RECORD_TYPE.getTypeName(),
+                    ARecordType.FULLY_OPEN_RECORD_TYPE, false);
+
+    private MetadataBuiltinEntities() {
+    }
+}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataConstants.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataConstants.java
index fbd2380..1dc6657 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataConstants.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataConstants.java
@@ -19,9 +19,10 @@
 
 package org.apache.asterix.metadata.utils;
 
+/**
+ * Contains metadata constants
+ */
 public class MetadataConstants {
-    private MetadataConstants() {
-    }
 
     // Name of the dataverse the metadata lives in.
     public static final String METADATA_DATAVERSE_NAME = "Metadata";
@@ -32,4 +33,7 @@
     // Name of the default nodegroup where internal/feed datasets will be partitioned
     // if an explicit nodegroup is not specified at the time of creation of a dataset
     public static final String METADATA_DEFAULT_NODEGROUP_NAME = "DEFAULT_NG_ALL_NODES";
+
+    private MetadataConstants() {
+    }
 }
diff --git a/asterixdb/asterix-server/src/test/java/org/apache/asterix/server/test/NCServiceExecutionIT.java b/asterixdb/asterix-server/src/test/java/org/apache/asterix/server/test/NCServiceExecutionIT.java
index ab50b51..e3a561d 100644
--- a/asterixdb/asterix-server/src/test/java/org/apache/asterix/server/test/NCServiceExecutionIT.java
+++ b/asterixdb/asterix-server/src/test/java/org/apache/asterix/server/test/NCServiceExecutionIT.java
@@ -21,6 +21,7 @@
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 import java.util.logging.Logger;
 
 import org.apache.asterix.test.aql.TestExecutor;
@@ -93,6 +94,8 @@
 
     private final TestCaseContext tcCtx;
     private static final TestExecutor testExecutor = new TestExecutor();
+
+    private static final List<String> badTestCases = new ArrayList<>();
     private static HyracksVirtualCluster cluster;
 
     @BeforeClass
@@ -113,30 +116,25 @@
         cluster = new HyracksVirtualCluster(new File(APP_HOME), new File(ASTERIX_APP_DIR));
         cluster.addNCService(
                 new File(CONF_DIR, "ncservice1.conf"),
-                new File(LOG_DIR, "ncservice1.log")
-        );
+                new File(LOG_DIR, "ncservice1.log"));
         cluster.addNCService(
                 new File(CONF_DIR, "ncservice2.conf"),
-                new File(LOG_DIR, "ncservice2.log")
-        );
+                new File(LOG_DIR, "ncservice2.log"));
 
         try {
             Thread.sleep(2000);
-        }
-        catch (InterruptedException ignored) {
+        } catch (InterruptedException ignored) {
         }
 
         // Start CC
         cluster.start(
                 new File(CONF_DIR, "cc.conf"),
-                new File(LOG_DIR, "cc.log")
-        );
+                new File(LOG_DIR, "cc.log"));
 
         LOGGER.info("Sleeping while cluster comes online...");
         try {
             Thread.sleep(6000);
-        }
-        catch (InterruptedException ignored) {
+        } catch (InterruptedException ignored) {
         }
     }
 
@@ -149,6 +147,12 @@
         }
         cluster.stop();
         HDFSCluster.getInstance().cleanup();
+        if (!badTestCases.isEmpty()) {
+            System.out.println("The following test cases left some data");
+            for (String testCase : badTestCases) {
+                System.out.println(testCase);
+            }
+        }
     }
 
     @Parameters
@@ -157,7 +161,7 @@
         TestCaseContext.Builder b = new TestCaseContext.Builder();
         for (TestCaseContext ctx : b.build(new File(TESTS_DIR))) {
             if (!skip(ctx)) {
-                testArgs.add(new Object[]{ctx});
+                testArgs.add(new Object[] { ctx });
             }
         }
         return testArgs;
@@ -176,7 +180,6 @@
         return false;
     }
 
-
     public NCServiceExecutionIT(TestCaseContext ctx) {
         this.tcCtx = ctx;
     }
@@ -184,5 +187,6 @@
     @Test
     public void test() throws Exception {
         testExecutor.executeTest(ACTUAL_RESULTS_DIR, tcCtx, null, false);
+        testExecutor.cleanup(tcCtx.toString(), badTestCases);
     }
 }
diff --git a/asterixdb/asterix-yarn/src/test/resources/library/results/library-metadata/dataverseDataset/dataverseDataset.1.adm b/asterixdb/asterix-yarn/src/test/resources/library/results/library-metadata/dataverseDataset/dataverseDataset.1.adm
index d4e5619..99b23da 100644
--- a/asterixdb/asterix-yarn/src/test/resources/library/results/library-metadata/dataverseDataset/dataverseDataset.1.adm
+++ b/asterixdb/asterix-yarn/src/test/resources/library/results/library-metadata/dataverseDataset/dataverseDataset.1.adm
@@ -1,2 +1,3 @@
+{ "DataverseName": "Default", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Thu Sep 15 03:11:25 UTC 2016", "PendingOp": 0 }
 { "DataverseName": "Metadata", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Thu Apr 25 11:17:56 PDT 2013", "PendingOp": 0 }
 { "DataverseName": "externallibtest", "DataFormat": "org.apache.asterix.runtime.formats.NonTaggedDataFormat", "Timestamp": "Thu Apr 25 11:18:12 PDT 2013", "PendingOp": 0 }
