You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2015/08/14 00:07:51 UTC

[1/3] vxquery git commit: Unnesting rule and code additions to support XMark Query 8.

Repository: vxquery
Updated Branches:
  refs/heads/master 3e40e5a71 -> 7fc0d93b4


http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/XTestOptions.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/XTestOptions.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/XTestOptions.java
index 53403f2..80fdd65 100644
--- a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/XTestOptions.java
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/XTestOptions.java
@@ -17,63 +17,63 @@ package org.apache.vxquery.xtest;
 import org.kohsuke.args4j.Option;
 
 public class XTestOptions {
-    @Option(name = "-O", required = false, usage = "Optimization level")
+    @Option(name = "-O", required = false, usage = "Optimization level. (default: Full Optimization)")
     int optimizationLevel = Integer.MAX_VALUE;
 
-    @Option(name = "-frameSize", required = false, usage = "Setting frame size")
+    @Option(name = "-frame-size", required = false, usage = "Setting frame size. (default: 65,536)")
     int frameSize = 65536;
 
-    @Option(name = "-port", required = false, usage = "Port for web server to listen on")
+    @Option(name = "-port", required = false, usage = "Port for web server to listen on.")
     int port;
 
-    @Option(name = "-catalog", required = true, usage = "Test catalog XML")
+    @Option(name = "-catalog", required = true, usage = "Test catalog XML.")
     String catalog;
 
-    @Option(name = "-threads", required = false, usage = "Number of threads")
+    @Option(name = "-threads", required = false, usage = "Number of threads. (default: 1)")
     int threads;
 
-    @Option(name = "-include", required = false, usage = "Include filter regular expression")
+    @Option(name = "-include", required = false, usage = "Include filter regular expression.")
     String include;
 
-    @Option(name = "-exclude", required = false, usage = "Exclude filter regular expression")
+    @Option(name = "-exclude", required = false, usage = "Exclude filter regular expression.")
     String exclude;
 
-    @Option(name = "-previous-test-results", required = false, usage = "File path to previous test results (text report output file)")
+    @Option(name = "-previous-test-results", required = false, usage = "File path to previous test results. (text report output file)")
     String previousTestResults;
 
     @Option(name = "-v", required = false, usage = "Verbose")
     boolean verbose;
 
-    @Option(name = "-keepalive", required = false, usage = "Milliseconds to keep server alive after tests have completed")
+    @Option(name = "-keepalive", required = false, usage = "Milliseconds to keep server alive after tests have completed.")
     long keepalive;
 
-    @Option(name = "-textreport", required = false, usage = "Text report output file")
+    @Option(name = "-textreport", required = false, usage = "Text report output file.")
     String diffable;
 
-    @Option(name = "-xmlreport", required = false, usage = "XML report output file")
+    @Option(name = "-xmlreport", required = false, usage = "XML report output file.")
     String xmlReport;
 
-    @Option(name = "-htmlreport", required = false, usage = "HTML report output file")
+    @Option(name = "-htmlreport", required = false, usage = "HTML report output file.")
     String htmlReport;
 
-    @Option(name = "-showquery", usage = "Show query string")
+    @Option(name = "-showquery", usage = "Show query string.")
     boolean showQuery;
 
-    @Option(name = "-showast", usage = "Show abstract syntax tree")
+    @Option(name = "-showast", usage = "Show abstract syntax tree.")
     boolean showAST;
 
-    @Option(name = "-showtet", usage = "Show translated expression tree")
+    @Option(name = "-showtet", usage = "Show translated expression tree.")
     boolean showTET;
 
-    @Option(name = "-showoet", usage = "Show optimized expression tree")
+    @Option(name = "-showoet", usage = "Show optimized expression tree.")
     boolean showOET;
 
-    @Option(name = "-showrp", usage = "Show runtime plan")
+    @Option(name = "-showrp", usage = "Show runtime plan.")
     boolean showRP;
 
-    @Option(name = "-compileonly", usage = "Compile the query and stop")
+    @Option(name = "-compileonly", usage = "Compile the query and stop.")
     boolean compileOnly;
 
-    @Option(name = "-showresult", usage = "Show query result")
+    @Option(name = "-showresult", usage = "Show query result.")
     boolean showResult;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/AbstractXQueryTest.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/AbstractXQueryTest.java b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/AbstractXQueryTest.java
index 9cae8e8..12a91a9 100644
--- a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/AbstractXQueryTest.java
+++ b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/AbstractXQueryTest.java
@@ -30,7 +30,7 @@ public abstract class AbstractXQueryTest {
     private TestRunner tr;
 
     protected abstract XTestOptions getTestOptions();
-    
+
     protected static XTestOptions getDefaultTestOptions() {
         XTestOptions opts = new XTestOptions();
         opts.verbose = false;
@@ -40,10 +40,6 @@ public abstract class AbstractXQueryTest {
         return opts;
     }
 
-    protected static void setCatalogToTestOptions(XTestOptions opts, String catalog) {
-        opts.catalog = catalog;
-    }
-
     public AbstractXQueryTest(TestCase tc) throws Exception {
         this.tc = tc;
         tr = new TestRunner(getTestOptions());

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryTest.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryTest.java b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryTest.java
index 91adbbf..3704d07 100644
--- a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryTest.java
+++ b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryTest.java
@@ -25,7 +25,7 @@ import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameters;
 
 @RunWith(Parameterized.class)
-public class VXQueryTest extends AbstractXQueryTest{
+public class VXQueryTest extends AbstractXQueryTest {
 
     private static String VXQUERY_CATALOG = StringUtils.join(new String[] { "src", "test", "resources",
             "VXQueryCatalog.xml" }, File.separator);
@@ -43,7 +43,7 @@ public class VXQueryTest extends AbstractXQueryTest{
 
     public static XTestOptions getOptions() {
         XTestOptions options = getDefaultTestOptions();
-        setCatalogToTestOptions(options, VXQUERY_CATALOG);
+        options.catalog = VXQUERY_CATALOG;
         return options;
     }
 

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryXMarkTest.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryXMarkTest.java b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryXMarkTest.java
new file mode 100644
index 0000000..ac35a0c
--- /dev/null
+++ b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryXMarkTest.java
@@ -0,0 +1,55 @@
+/*
+* 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.vxquery.xtest;
+
+import java.io.File;
+import java.util.Collection;
+
+import org.apache.commons.lang3.StringUtils;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class VXQueryXMarkTest extends AbstractXQueryTest {
+
+    private static String VXQUERY_XMARK_CATALOG = StringUtils.join(new String[] { "src", "test", "resources",
+            "VXQueryXMarkCatalog.xml" }, File.separator);
+
+    public VXQueryXMarkTest(TestCase tc) throws Exception {
+        super(tc);
+    }
+
+    @Parameters
+    public static Collection<Object[]> tests() throws Exception {
+        JUnitTestCaseFactory jtcf_vxquery = new JUnitTestCaseFactory(getOptions());
+        Collection<Object[]> tests = jtcf_vxquery.getList();
+        return tests;
+    }
+
+    public static XTestOptions getOptions() {
+        XTestOptions options = getDefaultTestOptions();
+        options.catalog = VXQUERY_XMARK_CATALOG;
+        return options;
+    }
+
+    @Override
+    protected XTestOptions getTestOptions() {
+        return getOptions();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/XMarkTest.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/XMarkTest.java b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/XMarkTest.java
index 0e7838f..0753a79 100644
--- a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/XMarkTest.java
+++ b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/XMarkTest.java
@@ -28,7 +28,7 @@ import org.junit.runners.Parameterized.Parameters;
 public class XMarkTest extends AbstractXQueryTest {
 
     private static String XMARK_CATALOG = StringUtils.join(new String[] { "src", "test", "resources",
-            "VXQueryXMarkCatalog.xml" }, File.separator);
+            "XMarkCatalog.xml" }, File.separator);
 
     public XMarkTest(TestCase tc) throws Exception {
         super(tc);
@@ -43,7 +43,8 @@ public class XMarkTest extends AbstractXQueryTest {
 
     public static XTestOptions getOptions() {
         XTestOptions options = getDefaultTestOptions();
-        setCatalogToTestOptions(options, XMARK_CATALOG);
+        options.catalog = XMARK_CATALOG;
+        options.frameSize = (int) Math.pow(2, 23);
         return options;
     }
 

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/XQTSTest.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/XQTSTest.java b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/XQTSTest.java
index 68f00a3..0dc356b 100644
--- a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/XQTSTest.java
+++ b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/XQTSTest.java
@@ -43,7 +43,7 @@ public class XQTSTest extends AbstractXQueryTest {
 
     public static XTestOptions getOptions() {
         XTestOptions options = getDefaultTestOptions();
-        setCatalogToTestOptions(options, XQTS_CATALOG);
+        options.catalog = XQTS_CATALOG;
         options.previousTestResults = StringUtils.join(new String[] { "results", "xqts.txt" }, File.separator);
         return options;
     }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-xtest/src/test/resources/Queries/XQuery/XMark/Modified/q08.xq
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/test/resources/Queries/XQuery/XMark/Modified/q08.xq b/vxquery-xtest/src/test/resources/Queries/XQuery/XMark/Modified/q08.xq
index 1f0045a..dc1af0e 100644
--- a/vxquery-xtest/src/test/resources/Queries/XQuery/XMark/Modified/q08.xq
+++ b/vxquery-xtest/src/test/resources/Queries/XQuery/XMark/Modified/q08.xq
@@ -22,7 +22,7 @@ for $p in collection($collection1)/site/people/person
   let $a := count(
     let $collection2 := "closed_auctions"
     for $t in collection($collection2)/site/closed_auctions/closed_auction
-      where $t/buyer/@person = $p/@id
+      where $t/buyer/@person eq $p/@id
       return $t
     )
   return <item person="{$p/name/text()}">{$a}</item>


[2/3] vxquery git commit: Unnesting rule and code additions to support XMark Query 8.

Posted by pr...@apache.org.
http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-xtest/results/xqts.txt
----------------------------------------------------------------------
diff --git a/vxquery-xtest/results/xqts.txt b/vxquery-xtest/results/xqts.txt
index 8b76ab6..8054c36 100644
--- a/vxquery-xtest/results/xqts.txt
+++ b/vxquery-xtest/results/xqts.txt
@@ -3,7 +3,7 @@ Appendices/Annex-E//annex-2, EXPECTED_RESULT_GOT_ERROR
 Appendices/Annex-E//annex-3, EXPECTED_RESULT_GOT_ERROR
 Appendices/Annex-E//annex-4, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 Appendices/Annex-E//annex-5, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
-Appendices/Annex-E//annex-6, EXPECTED_RESULT_GOT_FAILURE
+Appendices/Annex-E//annex-6, EXPECTED_RESULT_GOT_ERROR
 Appendices/Annex-E//annex-7, EXPECTED_RESULT_GOT_ERROR
 Appendices/Annex-E//annex-8, EXPECTED_RESULT_GOT_ERROR
 Appendices/Appendix-A4//appendix-A4-1, EXPECTED_RESULT_GOT_SAME_RESULT
@@ -62,7 +62,7 @@ CondExpr//K2-CondExpr-6, EXPECTED_ERROR_GOT_SAME_ERROR
 CondExpr//K2-CondExpr-7, EXPECTED_RESULT_GOT_SAME_RESULT
 Construct/ComputeCon/ComputeConAttr//K2-ComputeConAttr-1, EXPECTED_ERROR_GOT_SAME_ERROR
 Construct/ComputeCon/ComputeConAttr//K2-ComputeConAttr-10, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
-Construct/ComputeCon/ComputeConAttr//K2-ComputeConAttr-11, EXPECTED_RESULT_GOT_FAILURE
+Construct/ComputeCon/ComputeConAttr//K2-ComputeConAttr-11, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Construct/ComputeCon/ComputeConAttr//K2-ComputeConAttr-12, EXPECTED_ERROR_GOT_SAME_ERROR
 Construct/ComputeCon/ComputeConAttr//K2-ComputeConAttr-13, EXPECTED_ERROR_GOT_SAME_ERROR
 Construct/ComputeCon/ComputeConAttr//K2-ComputeConAttr-14, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
@@ -312,11 +312,11 @@ Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-45, EXPECTED_RES
 Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-46, EXPECTED_RESULT_GOT_FAILURE
 Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-47, EXPECTED_RESULT_GOT_FAILURE
 Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-48, EXPECTED_ERROR_GOT_SAME_ERROR
-Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-49, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-49, EXPECTED_RESULT_GOT_SAME_RESULT
 Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-5, EXPECTED_RESULT_GOT_SAME_RESULT
-Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-50, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-50, EXPECTED_RESULT_GOT_SAME_RESULT
 Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-51, EXPECTED_ERROR_GOT_SAME_ERROR
-Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-52, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-52, EXPECTED_RESULT_GOT_SAME_RESULT
 Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-53, EXPECTED_ERROR_GOT_SAME_ERROR
 Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-54, EXPECTED_ERROR_GOT_SAME_ERROR
 Construct/DirectConElem/DirectConElemAttr//K2-DirectConElemAttr-55, EXPECTED_ERROR_GOT_SAME_ERROR
@@ -571,9 +571,9 @@ Construct/DirectConOther//K2-DirectConOther-70, EXPECTED_RESULT_GOT_DIFFERENT_RE
 Construct/DirectConOther//K2-DirectConOther-71, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Construct/DirectConOther//K2-DirectConOther-8, EXPECTED_ERROR_GOT_SAME_ERROR
 Construct/DirectConOther//K2-DirectConOther-9, EXPECTED_ERROR_GOT_SAME_ERROR
-ErrorsAndOptimization//errors-and-optimization-1, EXPECTED_RESULT_GOT_ERROR
+ErrorsAndOptimization//errors-and-optimization-1, EXPECTED_RESULT_GOT_SAME_RESULT
 ErrorsAndOptimization//errors-and-optimization-2, EXPECTED_ERROR_GOT_SAME_ERROR
-ErrorsAndOptimization//errors-and-optimization-3, EXPECTED_RESULT_GOT_FAILURE
+ErrorsAndOptimization//errors-and-optimization-3, EXPECTED_RESULT_GOT_ERROR
 ErrorsAndOptimization//errors-and-optimization-4, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 ErrorsAndOptimization//errors-and-optimization-5, EXPECTED_ERROR_GOT_SAME_ERROR
 ErrorsAndOptimization//errors-and-optimization-6, EXPECTED_ERROR_GOT_SAME_ERROR
@@ -598,16 +598,16 @@ Expressions/CondExpr//CondExpr018, EXPECTED_RESULT_GOT_FAILURE
 Expressions/CondExpr//CondExpr019, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/CondExpr//CondExpr020, EXPECTED_RESULT_GOT_FAILURE
 Expressions/CondExpr//CondExpr021, EXPECTED_RESULT_GOT_FAILURE
-Expressions/CondExpr//CondExpr022, EXPECTED_RESULT_GOT_ERROR
+Expressions/CondExpr//CondExpr022, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/CondExpr//K-CondExpr-1, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/CondExpr//K-CondExpr-10, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/CondExpr//K-CondExpr-11, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/CondExpr//K-CondExpr-12, EXPECTED_RESULT_GOT_FAILURE
+Expressions/CondExpr//K-CondExpr-12, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/CondExpr//K-CondExpr-2, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/CondExpr//K-CondExpr-3, EXPECTED_RESULT_GOT_FAILURE
-Expressions/CondExpr//K-CondExpr-4, EXPECTED_RESULT_GOT_FAILURE
-Expressions/CondExpr//K-CondExpr-5, EXPECTED_RESULT_GOT_FAILURE
-Expressions/CondExpr//K-CondExpr-6, EXPECTED_RESULT_GOT_FAILURE
+Expressions/CondExpr//K-CondExpr-3, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/CondExpr//K-CondExpr-4, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/CondExpr//K-CondExpr-5, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/CondExpr//K-CondExpr-6, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/CondExpr//K-CondExpr-7, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/CondExpr//K-CondExpr-8, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/CondExpr//K-CondExpr-9, EXPECTED_RESULT_GOT_SAME_RESULT
@@ -867,13 +867,13 @@ Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-nsprein-2, EX
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-parent-1, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-1, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-10, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-2, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-2, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-3, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-4, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-5, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-6, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-7, EXPECTED_ERROR_GOT_SAME_ERROR
-Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-8, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-8, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-syntax-9, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-ws-1, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Construct/DirectConElem/DirectConElemAttr//Constr-attr-ws-2, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
@@ -1088,26 +1088,26 @@ Expressions/ContextExpr/ExternalContextExpr//externalcontextitem-7, EXPECTED_RES
 Expressions/ContextExpr/ExternalContextExpr//externalcontextitem-8, EXPECTED_RESULT_GOT_FAILURE
 Expressions/ContextExpr/ExternalContextExpr//externalcontextitem-9, EXPECTED_RESULT_GOT_FAILURE
 Expressions/ContextExpr/InternalContextExpr//internalcontextitem-1, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-10, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-11, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-12, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-13, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-14, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-15, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-16, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-17, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-18, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-19, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-2, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-20, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-21, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-3, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-4, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-5, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-6, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-7, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-8, EXPECTED_RESULT_GOT_FAILURE
-Expressions/ContextExpr/InternalContextExpr//internalcontextitem-9, EXPECTED_ERROR_GOT_FAILURE
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-10, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-11, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-12, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-13, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-14, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-15, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-16, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-17, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-18, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-19, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-2, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-20, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-21, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-3, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-4, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-5, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-6, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-7, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-8, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/ContextExpr/InternalContextExpr//internalcontextitem-9, EXPECTED_ERROR_GOT_RESULT
 Expressions/ExtensionExpression//K-ExtensionExpression-1, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/ExtensionExpression//K-ExtensionExpression-2, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/ExtensionExpression//K-ExtensionExpression-3, EXPECTED_RESULT_GOT_SAME_RESULT
@@ -1325,8 +1325,8 @@ Expressions/FLWORExpr/LetExpr//LetExpr007, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/FLWORExpr/LetExpr//LetExpr008, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/FLWORExpr/LetExpr//LetExpr009, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/FLWORExpr/LetExpr//LetExpr010, EXPECTED_ERROR_GOT_SAME_ERROR
-Expressions/FLWORExpr/LetExpr//LetExpr011, EXPECTED_RESULT_GOT_FAILURE
-Expressions/FLWORExpr/LetExpr//LetExpr012, EXPECTED_RESULT_GOT_FAILURE
+Expressions/FLWORExpr/LetExpr//LetExpr011, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/FLWORExpr/LetExpr//LetExpr012, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/FLWORExpr/LetExpr//LetExpr013, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/FLWORExpr/LetExpr//LetExpr014, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/FLWORExpr/LetExpr//LetExpr015, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
@@ -1525,7 +1525,7 @@ Expressions/FLWORExpr/ReturnExpr//ReturnExpr003, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/ReturnExpr//ReturnExpr004, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/ReturnExpr//ReturnExpr005, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/ReturnExpr//ReturnExpr006, EXPECTED_RESULT_GOT_FAILURE
-Expressions/FLWORExpr/ReturnExpr//ReturnExpr007, EXPECTED_RESULT_GOT_FAILURE
+Expressions/FLWORExpr/ReturnExpr//ReturnExpr007, EXPECTED_RESULT_GOT_ERROR
 Expressions/FLWORExpr/ReturnExpr//ReturnExpr008, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/ReturnExpr//ReturnExpr009, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/ReturnExpr//ReturnExpr010, EXPECTED_ERROR_GOT_FAILURE
@@ -1540,16 +1540,16 @@ Expressions/FLWORExpr/ReturnExpr//ReturnExpr018, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/ReturnExpr//ReturnExpr019, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/FLWORExpr/ReturnExpr//ReturnExpr020, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/WhereExpr//K-WhereExpr-1, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/FLWORExpr/WhereExpr//K-WhereExpr-10, EXPECTED_RESULT_GOT_FAILURE
-Expressions/FLWORExpr/WhereExpr//K-WhereExpr-11, EXPECTED_RESULT_GOT_FAILURE
+Expressions/FLWORExpr/WhereExpr//K-WhereExpr-10, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/FLWORExpr/WhereExpr//K-WhereExpr-11, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/FLWORExpr/WhereExpr//K-WhereExpr-2, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/FLWORExpr/WhereExpr//K-WhereExpr-3, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/FLWORExpr/WhereExpr//K-WhereExpr-4, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/FLWORExpr/WhereExpr//K-WhereExpr-5, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/FLWORExpr/WhereExpr//K-WhereExpr-6, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/FLWORExpr/WhereExpr//K-WhereExpr-7, EXPECTED_RESULT_GOT_FAILURE
-Expressions/FLWORExpr/WhereExpr//K-WhereExpr-8, EXPECTED_RESULT_GOT_FAILURE
-Expressions/FLWORExpr/WhereExpr//K-WhereExpr-9, EXPECTED_RESULT_GOT_FAILURE
+Expressions/FLWORExpr/WhereExpr//K-WhereExpr-7, EXPECTED_RESULT_GOT_ERROR
+Expressions/FLWORExpr/WhereExpr//K-WhereExpr-8, EXPECTED_RESULT_GOT_ERROR
+Expressions/FLWORExpr/WhereExpr//K-WhereExpr-9, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/FLWORExpr/WhereExpr//WhereExpr001, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/WhereExpr//WhereExpr002, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/FLWORExpr/WhereExpr//WhereExpr003, EXPECTED_RESULT_GOT_FAILURE
@@ -1557,12 +1557,12 @@ Expressions/FLWORExpr/WhereExpr//WhereExpr004, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/WhereExpr//WhereExpr005, EXPECTED_ERROR_GOT_RESULT
 Expressions/FLWORExpr/WhereExpr//WhereExpr006, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/WhereExpr//WhereExpr007, EXPECTED_RESULT_GOT_FAILURE
-Expressions/FLWORExpr/WhereExpr//WhereExpr008, EXPECTED_ERROR_GOT_FAILURE
+Expressions/FLWORExpr/WhereExpr//WhereExpr008, EXPECTED_ERROR_GOT_RESULT
 Expressions/FLWORExpr/WhereExpr//WhereExpr009, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/WhereExpr//WhereExpr010, EXPECTED_ERROR_GOT_FAILURE
 Expressions/FLWORExpr/WhereExpr//WhereExpr013, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/WhereExpr//WhereExpr014, EXPECTED_RESULT_GOT_FAILURE
-Expressions/FLWORExpr/WhereExpr//WhereExpr015, EXPECTED_ERROR_GOT_FAILURE
+Expressions/FLWORExpr/WhereExpr//WhereExpr015, EXPECTED_ERROR_GOT_RESULT
 Expressions/FLWORExpr/WhereExpr//WhereExpr016, EXPECTED_RESULT_GOT_FAILURE
 Expressions/FLWORExpr/WhereExpr//WhereExpr017, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/FLWORExpr/WhereExpr//WhereExpr018, EXPECTED_ERROR_GOT_SAME_ERROR
@@ -1663,8 +1663,8 @@ Expressions/LogicExpr//K-LogicExpr-10, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-11, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-12, EXPECTED_RESULT_GOT_ERROR
 Expressions/LogicExpr//K-LogicExpr-13, EXPECTED_RESULT_GOT_ERROR
-Expressions/LogicExpr//K-LogicExpr-14, EXPECTED_RESULT_GOT_FAILURE
-Expressions/LogicExpr//K-LogicExpr-15, EXPECTED_RESULT_GOT_FAILURE
+Expressions/LogicExpr//K-LogicExpr-14, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/LogicExpr//K-LogicExpr-15, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-16, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/LogicExpr//K-LogicExpr-17, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/LogicExpr//K-LogicExpr-18, EXPECTED_ERROR_GOT_SAME_ERROR
@@ -1675,16 +1675,16 @@ Expressions/LogicExpr//K-LogicExpr-21, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/LogicExpr//K-LogicExpr-22, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-23, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-24, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/LogicExpr//K-LogicExpr-25, EXPECTED_RESULT_GOT_FAILURE
-Expressions/LogicExpr//K-LogicExpr-26, EXPECTED_RESULT_GOT_FAILURE
-Expressions/LogicExpr//K-LogicExpr-27, EXPECTED_RESULT_GOT_FAILURE
+Expressions/LogicExpr//K-LogicExpr-25, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/LogicExpr//K-LogicExpr-26, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/LogicExpr//K-LogicExpr-27, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-28, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-29, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-3, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-30, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-31, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/LogicExpr//K-LogicExpr-32, EXPECTED_RESULT_GOT_FAILURE
-Expressions/LogicExpr//K-LogicExpr-33, EXPECTED_RESULT_GOT_FAILURE
+Expressions/LogicExpr//K-LogicExpr-32, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/LogicExpr//K-LogicExpr-33, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-34, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-35, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-36, EXPECTED_RESULT_GOT_SAME_RESULT
@@ -1694,9 +1694,9 @@ Expressions/LogicExpr//K-LogicExpr-39, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-4, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-40, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-41, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/LogicExpr//K-LogicExpr-42, EXPECTED_RESULT_GOT_FAILURE
-Expressions/LogicExpr//K-LogicExpr-43, EXPECTED_RESULT_GOT_FAILURE
-Expressions/LogicExpr//K-LogicExpr-44, EXPECTED_RESULT_GOT_FAILURE
+Expressions/LogicExpr//K-LogicExpr-42, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/LogicExpr//K-LogicExpr-43, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/LogicExpr//K-LogicExpr-44, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/LogicExpr//K-LogicExpr-45, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/LogicExpr//K-LogicExpr-46, EXPECTED_ERROR_GOT_RESULT
 Expressions/LogicExpr//K-LogicExpr-5, EXPECTED_RESULT_GOT_SAME_RESULT
@@ -3334,14 +3334,14 @@ Expressions/Operators/ArithExpr/NumericOpr/NumericUnaryPlus//op-numeric-unary-pl
 Expressions/Operators/ArithExpr/NumericOpr/NumericUnaryPlus//op-numeric-unary-plususht1args-1, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/ArithExpr/NumericOpr/NumericUnaryPlus//op-numeric-unary-plususht1args-2, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/ArithExpr/NumericOpr/NumericUnaryPlus//op-numeric-unary-plususht1args-3, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//GenCompEq-1, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//GenCompEq-1, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//GenCompEq-2, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//GenCompEq-3, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//GenCompEq-4, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//GenCompEq-5, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//GenCompEq-6, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-1, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-10, EXPECTED_ERROR_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-10, EXPECTED_ERROR_GOT_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-11, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-12, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-13, EXPECTED_RESULT_GOT_SAME_RESULT
@@ -3390,7 +3390,7 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-51, EXPECTED_ER
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-52, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-53, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-54, EXPECTED_ERROR_GOT_SAME_ERROR
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-55, EXPECTED_ERROR_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-55, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-56, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-57, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-58, EXPECTED_ERROR_GOT_SAME_ERROR
@@ -3398,7 +3398,7 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-59, EXPECTED_ER
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-6, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-7, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-8, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-9, EXPECTED_ERROR_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//K-GenCompEq-9, EXPECTED_ERROR_GOT_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression1, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression10, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression11, EXPECTED_RESULT_GOT_SAME_RESULT
@@ -3437,9 +3437,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression40, EXPECT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression41, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression42, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression43, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression44, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression45, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression46, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression44, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression45, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression46, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression47, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression48, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression49, EXPECTED_RESULT_GOT_FAILURE
@@ -3448,9 +3448,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression50, EXPECT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression51, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression52, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression53, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression54, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression55, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression56, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression54, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression55, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression56, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression57, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression58, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression59, EXPECTED_RESULT_GOT_FAILURE
@@ -3459,9 +3459,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression60, EXPECT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression61, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression62, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression63, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression64, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression65, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression66, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression64, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression65, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression66, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression67, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression68, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompEq//generalexpression69, EXPECTED_RESULT_GOT_FAILURE
@@ -3560,9 +3560,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression436, EXPEC
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression437, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression438, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression439, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression440, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression441, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression442, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression440, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression441, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression442, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression443, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression444, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression445, EXPECTED_RESULT_GOT_FAILURE
@@ -3570,9 +3570,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression446, EXPEC
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression447, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression448, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression449, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression450, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression451, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression452, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression450, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression451, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression452, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression453, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression454, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression455, EXPECTED_RESULT_GOT_FAILURE
@@ -3580,9 +3580,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression456, EXPEC
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression457, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression458, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression459, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression460, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression461, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression462, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression460, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression461, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression462, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression463, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression464, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGT//generalexpression465, EXPECTED_RESULT_GOT_FAILURE
@@ -3669,9 +3669,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression535, EXP
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression536, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression537, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression538, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression539, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression540, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression541, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression539, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression540, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression541, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression542, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression543, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression544, EXPECTED_RESULT_GOT_FAILURE
@@ -3679,9 +3679,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression545, EXP
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression546, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression547, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression548, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression549, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression550, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression551, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression549, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression550, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression551, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression552, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression553, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression554, EXPECTED_RESULT_GOT_FAILURE
@@ -3689,9 +3689,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression555, EXP
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression556, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression557, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression558, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression559, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression560, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression561, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression559, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression560, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression561, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression562, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression563, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompGTEQ//generalexpression564, EXPECTED_RESULT_GOT_FAILURE
@@ -3788,9 +3788,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression238, EXPEC
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression239, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression240, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression241, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression242, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression243, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression244, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression242, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression243, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression244, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression245, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression246, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression247, EXPECTED_RESULT_GOT_FAILURE
@@ -3798,9 +3798,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression248, EXPEC
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression249, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression250, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression251, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression252, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression253, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression254, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression252, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression253, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression254, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression255, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression256, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression257, EXPECTED_RESULT_GOT_FAILURE
@@ -3808,9 +3808,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression258, EXPEC
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression259, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression260, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression261, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression262, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression263, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression264, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression262, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression263, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression264, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression265, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression266, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLT//generalexpression267, EXPECTED_RESULT_GOT_FAILURE
@@ -3896,9 +3896,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression337, EXP
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression338, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression339, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression340, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression341, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression342, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression343, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression341, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression342, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression343, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression344, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression345, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression346, EXPECTED_RESULT_GOT_FAILURE
@@ -3906,9 +3906,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression347, EXP
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression348, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression349, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression350, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression351, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression352, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression353, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression351, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression352, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression353, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression354, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression355, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression356, EXPECTED_RESULT_GOT_FAILURE
@@ -3916,9 +3916,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression357, EXP
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression358, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression359, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression360, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression361, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression362, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression363, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression361, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression362, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression363, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression364, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression365, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompLTEQ//generalexpression366, EXPECTED_RESULT_GOT_FAILURE
@@ -4037,9 +4037,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression139, EXPEC
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression140, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression141, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression142, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression143, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression144, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression145, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression143, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression144, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression145, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression146, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression147, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression148, EXPECTED_RESULT_GOT_FAILURE
@@ -4047,9 +4047,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression149, EXPEC
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression150, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression151, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression152, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression153, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression154, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression155, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression153, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression154, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression155, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression156, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression157, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression158, EXPECTED_RESULT_GOT_FAILURE
@@ -4057,9 +4057,9 @@ Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression159, EXPEC
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression160, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression161, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression162, EXPECTED_RESULT_GOT_SAME_RESULT
-Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression163, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression164, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression165, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression163, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression164, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression165, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression166, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression167, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/CompExpr/GenComprsn/GenCompNE//generalexpression168, EXPECTED_RESULT_GOT_FAILURE
@@ -5597,26 +5597,26 @@ Expressions/Operators/NodeOp/NodeBefore//nodeexpressionhc8, EXPECTED_RESULT_GOT_
 Expressions/Operators/NodeOp/NodeBefore//nodeexpressionhc9, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/NodeOp/NodeSame//nodecomparisonerr-1, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 Expressions/Operators/NodeOp/NodeSame//nodeexpression1, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
-Expressions/Operators/NodeOp/NodeSame//nodeexpression10, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpression11, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpression12, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpression13, EXPECTED_ERROR_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpression14, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpression15, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpression16, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/NodeOp/NodeSame//nodeexpression10, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpression11, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpression12, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpression13, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpression14, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpression15, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpression16, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/NodeOp/NodeSame//nodeexpression2, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
-Expressions/Operators/NodeOp/NodeSame//nodeexpression3, EXPECTED_ERROR_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpression4, EXPECTED_ERROR_GOT_FAILURE
+Expressions/Operators/NodeOp/NodeSame//nodeexpression3, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpression4, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 Expressions/Operators/NodeOp/NodeSame//nodeexpression5, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 Expressions/Operators/NodeOp/NodeSame//nodeexpression6, EXPECTED_RESULT_GOT_ERROR
-Expressions/Operators/NodeOp/NodeSame//nodeexpression7, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpression8, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpression9, EXPECTED_ERROR_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpressionhc1, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpressionhc2, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpressionhc3, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpressionhc4, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/NodeOp/NodeSame//nodeexpressionhc5, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/NodeOp/NodeSame//nodeexpression7, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpression8, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpression9, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpressionhc1, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpressionhc2, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpressionhc3, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpressionhc4, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/NodeOp/NodeSame//nodeexpressionhc5, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqConcat//op-concatenate-mix-args-001, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Operators/SeqOp/SeqConcat//op-concatenate-mix-args-002, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Operators/SeqOp/SeqConcat//op-concatenate-mix-args-003, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
@@ -5637,14 +5637,14 @@ Expressions/Operators/SeqOp/SeqConcat//op-concatenate-mix-args-017, EXPECTED_RES
 Expressions/Operators/SeqOp/SeqConcat//op-concatenate-mix-args-018, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/Operators/SeqOp/SeqConcat//op-concatenate-mix-args-019, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/SeqOp/SeqConcat//op-concatenate-mix-args-020, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-001, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-002, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-003, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-004, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-001, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-002, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-003, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-004, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-005, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-006, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-007, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-008, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-008, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-009, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-010, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-011, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
@@ -5660,14 +5660,14 @@ Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-020, EXPECTED_RESULT_
 Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-021, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-022, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqExcept//fn-except-node-args-023, EXPECTED_RESULT_GOT_ERROR
-Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-001, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-002, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-003, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-004, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-001, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-002, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-003, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-004, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-005, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-006, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-007, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-008, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-008, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-009, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-010, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-011, EXPECTED_RESULT_GOT_ERROR
@@ -5683,16 +5683,16 @@ Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-020, EXPECTED_R
 Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-021, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-022, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqIntersect//fn-intersect-node-args-023, EXPECTED_RESULT_GOT_ERROR
-Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-001, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-001, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-002, EXPECTED_RESULT_GOT_ERROR
-Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-003, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-004, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-003, EXPECTED_RESULT_GOT_ERROR
+Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-004, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-005, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-006, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-006, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-007, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-008, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-008, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-009, EXPECTED_RESULT_GOT_FAILURE
-Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-010, EXPECTED_RESULT_GOT_FAILURE
+Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-010, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-011, EXPECTED_RESULT_GOT_FAILURE
 Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-012, EXPECTED_RESULT_GOT_ERROR
 Expressions/Operators/SeqOp/SeqUnion//fn-union-node-args-013, EXPECTED_RESULT_GOT_ERROR
@@ -5710,22 +5710,22 @@ Expressions/OrderExpr//K-OrderExpr-1, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/OrderExpr//K-OrderExpr-2, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/OrderExpr//K-OrderExpr-3, EXPECTED_RESULT_GOT_ERROR
 Expressions/OrderExpr//K-OrderExpr-4, EXPECTED_RESULT_GOT_ERROR
-Expressions/OrderExpr//Orderexpr-1, EXPECTED_RESULT_GOT_FAILURE
-Expressions/OrderExpr//Orderexpr-10, EXPECTED_RESULT_GOT_FAILURE
-Expressions/OrderExpr//Orderexpr-11, EXPECTED_RESULT_GOT_FAILURE
-Expressions/OrderExpr//Orderexpr-12, EXPECTED_RESULT_GOT_FAILURE
-Expressions/OrderExpr//Orderexpr-13, EXPECTED_RESULT_GOT_FAILURE
-Expressions/OrderExpr//Orderexpr-14, EXPECTED_RESULT_GOT_FAILURE
+Expressions/OrderExpr//Orderexpr-1, EXPECTED_RESULT_GOT_ERROR
+Expressions/OrderExpr//Orderexpr-10, EXPECTED_RESULT_GOT_ERROR
+Expressions/OrderExpr//Orderexpr-11, EXPECTED_RESULT_GOT_ERROR
+Expressions/OrderExpr//Orderexpr-12, EXPECTED_RESULT_GOT_ERROR
+Expressions/OrderExpr//Orderexpr-13, EXPECTED_RESULT_GOT_ERROR
+Expressions/OrderExpr//Orderexpr-14, EXPECTED_RESULT_GOT_ERROR
 Expressions/OrderExpr//Orderexpr-15, EXPECTED_RESULT_GOT_ERROR
 Expressions/OrderExpr//Orderexpr-16, EXPECTED_RESULT_GOT_ERROR
 Expressions/OrderExpr//Orderexpr-17, EXPECTED_RESULT_GOT_ERROR
 Expressions/OrderExpr//Orderexpr-18, EXPECTED_RESULT_GOT_ERROR
-Expressions/OrderExpr//Orderexpr-19, EXPECTED_RESULT_GOT_FAILURE
-Expressions/OrderExpr//Orderexpr-2, EXPECTED_RESULT_GOT_FAILURE
-Expressions/OrderExpr//Orderexpr-20, EXPECTED_RESULT_GOT_FAILURE
-Expressions/OrderExpr//Orderexpr-5, EXPECTED_RESULT_GOT_FAILURE
-Expressions/OrderExpr//Orderexpr-6, EXPECTED_RESULT_GOT_FAILURE
-Expressions/OrderExpr//Orderexpr-9, EXPECTED_RESULT_GOT_FAILURE
+Expressions/OrderExpr//Orderexpr-19, EXPECTED_RESULT_GOT_ERROR
+Expressions/OrderExpr//Orderexpr-2, EXPECTED_RESULT_GOT_ERROR
+Expressions/OrderExpr//Orderexpr-20, EXPECTED_RESULT_GOT_ERROR
+Expressions/OrderExpr//Orderexpr-5, EXPECTED_RESULT_GOT_ERROR
+Expressions/OrderExpr//Orderexpr-6, EXPECTED_RESULT_GOT_ERROR
+Expressions/OrderExpr//Orderexpr-9, EXPECTED_RESULT_GOT_ERROR
 Expressions/OrderExpr//orderedunorderedexpr-1, EXPECTED_RESULT_GOT_ERROR
 Expressions/OrderExpr//orderedunorderedexpr-2, EXPECTED_RESULT_GOT_ERROR
 Expressions/OrderExpr//orderedunorderedexpr-3, EXPECTED_RESULT_GOT_ERROR
@@ -5789,7 +5789,7 @@ Expressions/PathExpr/Predicates//predicates-25, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Predicates//predicates-26, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Predicates//predicates-27, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Predicates//predicates-28, EXPECTED_RESULT_GOT_FAILURE
-Expressions/PathExpr/Predicates//predicates-29, EXPECTED_ERROR_GOT_FAILURE
+Expressions/PathExpr/Predicates//predicates-29, EXPECTED_ERROR_GOT_RESULT
 Expressions/PathExpr/Predicates//predicates-3, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Predicates//predicates-30, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Predicates//predicates-31, EXPECTED_RESULT_GOT_FAILURE
@@ -6021,7 +6021,7 @@ Expressions/PathExpr/Steps/Axes//Axes108, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 Expressions/PathExpr/Steps/Axes//Axes109, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 Expressions/PathExpr/Steps/Axes//Axes110, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 Expressions/PathExpr/Steps/Axes//Axes111, EXPECTED_RESULT_GOT_ERROR
-Expressions/PathExpr/Steps/Axes//axis-err-1, EXPECTED_ERROR_GOT_FAILURE
+Expressions/PathExpr/Steps/Axes//axis-err-1, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 Expressions/PathExpr/Steps/NodeTest//NodeTest001, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Steps/NodeTest//NodeTest002, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Steps/NodeTest//NodeTest003, EXPECTED_RESULT_GOT_FAILURE
@@ -6052,7 +6052,7 @@ Expressions/PathExpr/Steps/NodeTest//NodeTesthc-8, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Steps/NodeTest//nametest-1, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Steps/NodeTest//nametest-10, EXPECTED_RESULT_GOT_ERROR
 Expressions/PathExpr/Steps/NodeTest//nametest-11, EXPECTED_RESULT_GOT_ERROR
-Expressions/PathExpr/Steps/NodeTest//nametest-12, EXPECTED_RESULT_GOT_FAILURE
+Expressions/PathExpr/Steps/NodeTest//nametest-12, EXPECTED_RESULT_GOT_ERROR
 Expressions/PathExpr/Steps/NodeTest//nametest-13, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Steps/NodeTest//nametest-14, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PathExpr/Steps/NodeTest//nametest-15, EXPECTED_RESULT_GOT_FAILURE
@@ -6066,7 +6066,7 @@ Expressions/PathExpr/Steps/NodeTest//nametest-5, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/PathExpr/Steps/NodeTest//nametest-6, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/PathExpr/Steps/NodeTest//nametest-7, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/PathExpr/Steps/NodeTest//nametest-8, EXPECTED_RESULT_GOT_ERROR
-Expressions/PathExpr/Steps/NodeTest//nametest-9, EXPECTED_RESULT_GOT_FAILURE
+Expressions/PathExpr/Steps/NodeTest//nametest-9, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/PathExpr/Steps/NodeTestSection/NameTest//K-NameTest-1, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/PathExpr/Steps/NodeTestSection/NameTest//K-NameTest-10, EXPECTED_ERROR_GOT_SAME_ERROR
 Expressions/PathExpr/Steps/NodeTestSection/NameTest//K-NameTest-11, EXPECTED_ERROR_GOT_SAME_ERROR
@@ -6476,16 +6476,16 @@ Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-18, EXPECTED_RESULT_GOT_
 Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-2, EXPECTED_RESULT_GOT_ERROR
 Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-20, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-21, EXPECTED_RESULT_GOT_FAILURE
-Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-22, EXPECTED_ERROR_GOT_FAILURE
+Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-22, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-23, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-4, EXPECTED_RESULT_GOT_ERROR
-Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-7, EXPECTED_RESULT_GOT_FAILURE
+Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-7, EXPECTED_RESULT_GOT_ERROR
 Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-8, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PrologExpr/DefaultOrderingProlog//orderDecl-9, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PrologExpr/DefaultOrderingProlog//orderdecl-14, EXPECTED_RESULT_GOT_FAILURE
 Expressions/PrologExpr/DefaultOrderingProlog//orderdecl-3, EXPECTED_RESULT_GOT_ERROR
 Expressions/PrologExpr/DefaultOrderingProlog//orderdecl-5, EXPECTED_RESULT_GOT_ERROR
-Expressions/PrologExpr/DefaultOrderingProlog//orderdecl-6, EXPECTED_RESULT_GOT_FAILURE
+Expressions/PrologExpr/DefaultOrderingProlog//orderdecl-6, EXPECTED_RESULT_GOT_ERROR
 Expressions/PrologExpr/EmptyOrderProlog//K-EmptyOrderProlog-1, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/PrologExpr/EmptyOrderProlog//K-EmptyOrderProlog-2, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/PrologExpr/EmptyOrderProlog//K-EmptyOrderProlog-3, EXPECTED_ERROR_GOT_RESULT
@@ -7020,18 +7020,18 @@ Expressions/SeqExpr/CombNodeSeq//combiningnodeseqexcepthc4, EXPECTED_RESULT_GOT_
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqexcepthc5, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqexcepthc6, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc1, EXPECTED_RESULT_GOT_ERROR
-Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc10, EXPECTED_RESULT_GOT_FAILURE
+Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc10, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc2, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc3, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc4, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc5, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc6, EXPECTED_RESULT_GOT_ERROR
-Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc7, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc8, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc9, EXPECTED_RESULT_GOT_FAILURE
+Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc7, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc8, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/CombNodeSeq//combiningnodeseqhc9, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqintersecthc1, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqintersecthc2, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
-Expressions/SeqExpr/CombNodeSeq//combiningnodeseqintersecthc3, EXPECTED_RESULT_GOT_FAILURE
+Expressions/SeqExpr/CombNodeSeq//combiningnodeseqintersecthc3, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/CombNodeSeq//combiningnodeseqintersecthc4, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/ConstructSeq/RangeExpr//K-RangeExpr-1, EXPECTED_ERROR_GOT_RESULT
 Expressions/SeqExpr/ConstructSeq/RangeExpr//K-RangeExpr-10, EXPECTED_RESULT_GOT_SAME_RESULT
@@ -7104,121 +7104,121 @@ Expressions/SeqExpr/ConstructSeq/commaOp//sequenceexpressionhc7, EXPECTED_RESULT
 Expressions/SeqExpr/ConstructSeq/commaOp//sequenceexpressionhc8, EXPECTED_RESULT_GOT_FAILURE
 Expressions/SeqExpr/ConstructSeq/commaOp//sequenceexpressionhc9, EXPECTED_RESULT_GOT_FAILURE
 Expressions/SeqExpr/FilterExpr//K-FilterExpr-1, EXPECTED_ERROR_GOT_SAME_ERROR
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-10, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-11, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-12, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-13, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-14, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-15, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-16, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-17, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-18, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-19, EXPECTED_RESULT_GOT_FAILURE
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-10, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-11, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-12, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-13, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-14, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-15, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-16, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-17, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-18, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-19, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/SeqExpr/FilterExpr//K-FilterExpr-2, EXPECTED_ERROR_GOT_SAME_ERROR
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-20, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-21, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-22, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-23, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-24, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-25, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-26, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-27, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-28, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-29, EXPECTED_RESULT_GOT_FAILURE
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-20, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-21, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-22, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-23, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-24, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-25, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-26, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-27, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-28, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-29, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/SeqExpr/FilterExpr//K-FilterExpr-3, EXPECTED_ERROR_GOT_SAME_ERROR
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-30, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-31, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-32, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-33, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-34, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-35, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-36, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-37, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-38, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-39, EXPECTED_RESULT_GOT_FAILURE
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-30, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-31, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-32, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-33, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-34, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-35, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-36, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-37, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-38, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-39, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/FilterExpr//K-FilterExpr-4, EXPECTED_ERROR_GOT_SAME_ERROR
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-40, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-41, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-42, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-43, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-44, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-45, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-46, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-47, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-48, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-49, EXPECTED_ERROR_GOT_FAILURE
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-40, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-41, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-42, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-43, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-44, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-45, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-46, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-47, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-48, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-49, EXPECTED_ERROR_GOT_RESULT
 Expressions/SeqExpr/FilterExpr//K-FilterExpr-5, EXPECTED_ERROR_GOT_SAME_ERROR
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-50, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-51, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-52, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-53, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-54, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-55, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-56, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-57, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-58, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-59, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-6, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-60, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-61, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-62, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-63, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-64, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-65, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-66, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-67, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-68, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-69, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-7, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-70, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-71, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-72, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-73, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-74, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-75, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-76, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-77, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-78, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-79, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-8, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-80, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-81, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-82, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-83, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-84, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-85, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-86, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-87, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-88, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-89, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-9, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-90, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-91, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-92, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-93, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//K-FilterExpr-94, EXPECTED_ERROR_GOT_FAILURE
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-50, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-51, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-52, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-53, EXPECTED_ERROR_GOT_SAME_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-54, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-55, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-56, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-57, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-58, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-59, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-6, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-60, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-61, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-62, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-63, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-64, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-65, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-66, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-67, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-68, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-69, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-7, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-70, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-71, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-72, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-73, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-74, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-75, EXPECTED_ERROR_GOT_SAME_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-76, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-77, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-78, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-79, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-8, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-80, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-81, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-82, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-83, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-84, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-85, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-86, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-87, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-88, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-89, EXPECTED_RESULT_GOT_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-9, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-90, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-91, EXPECTED_ERROR_GOT_SAME_ERROR
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-92, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-93, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//K-FilterExpr-94, EXPECTED_ERROR_GOT_RESULT
 Expressions/SeqExpr/FilterExpr//filterexpressionhc1, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc10, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc11, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc12, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc13, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc14, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc15, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc16, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc17, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc18, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc19, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc2, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc20, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc21, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc22, EXPECTED_ERROR_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc3, EXPECTED_RESULT_GOT_FAILURE
+Expressions/SeqExpr/FilterExpr//filterexpressionhc10, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc11, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc12, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc13, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc14, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc15, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc16, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc17, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc18, EXPECTED_RESULT_GOT_SAME_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc19, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc2, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc20, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc21, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc22, EXPECTED_ERROR_GOT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc3, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/SeqExpr/FilterExpr//filterexpressionhc4, EXPECTED_RESULT_GOT_ERROR
 Expressions/SeqExpr/FilterExpr//filterexpressionhc5, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc6, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc7, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc8, EXPECTED_RESULT_GOT_FAILURE
-Expressions/SeqExpr/FilterExpr//filterexpressionhc9, EXPECTED_RESULT_GOT_FAILURE
+Expressions/SeqExpr/FilterExpr//filterexpressionhc6, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc7, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc8, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
+Expressions/SeqExpr/FilterExpr//filterexpressionhc9, EXPECTED_RESULT_GOT_SAME_RESULT
 Expressions/SeqExpr/RangeExpr//rangeExpr-1, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/SeqExpr/RangeExpr//rangeExpr-10, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 Expressions/SeqExpr/RangeExpr//rangeExpr-11, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
@@ -10600,7 +10600,7 @@ FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-13, EXPECTED_RES
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-14, EXPECTED_RESULT_GOT_FAILURE
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-15, EXPECTED_ERROR_GOT_FAILURE
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-16, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
-FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-17, EXPECTED_RESULT_GOT_FAILURE
+FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-17, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-18, EXPECTED_RESULT_GOT_SAME_RESULT
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-19, EXPECTED_ERROR_GOT_RESULT
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-2, EXPECTED_ERROR_GOT_RESULT
@@ -10618,10 +10618,10 @@ FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-3, EXPECTED_ERRO
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-30, EXPECTED_ERROR_GOT_RESULT
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-31, EXPECTED_ERROR_GOT_RESULT
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-32, EXPECTED_ERROR_GOT_RESULT
-FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-33, EXPECTED_ERROR_GOT_FAILURE
-FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-34, EXPECTED_ERROR_GOT_FAILURE
-FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-35, EXPECTED_ERROR_GOT_FAILURE
-FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-36, EXPECTED_ERROR_GOT_FAILURE
+FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-33, EXPECTED_ERROR_GOT_RESULT
+FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-34, EXPECTED_ERROR_GOT_RESULT
+FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-35, EXPECTED_ERROR_GOT_RESULT
+FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-36, EXPECTED_ERROR_GOT_RESULT
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-37, EXPECTED_ERROR_GOT_RESULT
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-38, EXPECTED_RESULT_GOT_DIFFERENT_RESULT
 FLWORExpr/OrderbyExpr/OrderbyExprWithout//K2-OrderbyExprWithout-39, EXPECTED_ERROR_GOT_RESULT
@@ -10645,137 +10645,137 @@ FLWORExpr/ReturnExpr//K2-ReturnExpr-1, EXPECTED_ERROR_GOT_DIFFERENT_ERROR
 FLWORExpr/WhereExpr//K2-WhereExpr-1, EXPECTED_ERROR_GOT_SAME_ERROR
 FLWORExpr/WhereExpr//K2-WhereExpr-2, EXPECTED_ERROR_GOT_SAME_ERROR
 FullAxis/ancestor-or-selfAxis//ancestorself-1, EXPECTED_ERROR_GOT_FAILURE
-FullAxis/ancestor-or-selfAxis//ancestorself-10, EXPECTED_RESULT_GOT_FAILURE
+FullAxis/ancestor-or-selfAxis//ancestorself-10, EXPECTED_RESULT_GOT_ERROR
 FullAxis/ancestor-or-selfAxis//ancestorself-11, EXPECTED_RESULT_GOT_FAILURE
 FullAxis/ancestor-or-selfAxis//ancestorself-12, EXPECTED_RESULT_GOT_FAILURE
-FullAxis/ancestor-or-selfAxis//ancestorself-13, EXPECTED_RESULT_GOT_FAILURE
-FullAxis/ancestor-or-selfAxis//ancestorself-14, EXPECTED_RESULT_GOT_FAILURE
-FullAxis/ancestor-or-selfAxis//ancestorself-15, EXPECTED_RESULT_GOT_FAILURE
-FullAxis/ancestor-or-selfAxis//ancestorself-16, EXPECTED_RESULT_GOT_FAILURE
-FullAxis/ancestor-or-selfAxis//ancestorself-17, EXPECTED_RESULT_GOT_FAILURE
-FullAxis/ancestor-or-selfAxis//ancestorself-18, EXPECTED_RESULT_GOT_FAILURE
-FullAxis/ancestor-or-selfAxis//ancestorself-19, EXPECTED_RESULT_G

<TRUNCATED>

[3/3] vxquery git commit: Unnesting rule and code additions to support XMark Query 8.

Posted by pr...@apache.org.
Unnesting rule and code additions to support XMark Query 8.


Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo
Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/7fc0d93b
Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/7fc0d93b
Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/7fc0d93b

Branch: refs/heads/master
Commit: 7fc0d93b4f83fa9ead1f053bf041e1b871ee9f33
Parents: 3e40e5a
Author: Preston Carman <pr...@apache.org>
Authored: Thu Aug 13 14:48:17 2015 -0700
Committer: Preston Carman <pr...@apache.org>
Committed: Thu Aug 13 14:48:17 2015 -0700

----------------------------------------------------------------------
 .../java/org/apache/vxquery/cli/VXQuery.java    |   54 +-
 .../compiler/rewriter/RewriteRuleset.java       |   50 +-
 .../rewriter/rules/ConsolidateUnnestsRule.java  |   79 +-
 .../rules/ConvertAssignToUnnestRule.java        |   31 +-
 .../ConvertFromAlgebricksExpressionsRule.java   |   33 +-
 .../ConvertToAlgebricksExpressionsRule.java     |   16 +-
 .../rules/InlineNestedVariablesRule.java        |   97 --
 .../ExtractFunctionsFromJoinConditionRule.java  |  141 ++
 .../InlineNestedVariablesRule.java              |   97 ++
 ...oveFreeVariableOperatorOutOfSubplanRule.java |  178 +++
 ...GeneralComparisonScalarEvaluatorFactory.java |   12 +-
 .../IfThenElseScalarEvaluatorFactory.java       |   37 +-
 .../vxquery/serializer/XMLSerializer.java       |    9 +-
 .../xmlquery/query/XMLQueryCompiler.java        |   10 +-
 .../xmlquery/translator/XMLQueryTranslator.java |   42 +-
 vxquery-xtest/pom.xml                           |    1 +
 vxquery-xtest/results/xqts.txt                  | 1480 +++++++++---------
 .../org/apache/vxquery/xtest/XTestOptions.java  |   38 +-
 .../vxquery/xtest/AbstractXQueryTest.java       |    6 +-
 .../org/apache/vxquery/xtest/VXQueryTest.java   |    4 +-
 .../apache/vxquery/xtest/VXQueryXMarkTest.java  |   55 +
 .../org/apache/vxquery/xtest/XMarkTest.java     |    5 +-
 .../java/org/apache/vxquery/xtest/XQTSTest.java |    2 +-
 .../Queries/XQuery/XMark/Modified/q08.xq        |    2 +-
 24 files changed, 1465 insertions(+), 1014 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
----------------------------------------------------------------------
diff --git a/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java b/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
index 5b99978..cf21c76 100644
--- a/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
+++ b/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
@@ -77,7 +77,7 @@ public class VXQuery {
 
     /**
      * Constructor to use command line options passed.
-     * 
+     *
      * @param opts
      *            Command line options object
      */
@@ -87,7 +87,7 @@ public class VXQuery {
 
     /**
      * Main method to get command line options and execute query process.
-     * 
+     *
      * @param args
      * @throws Exception
      */
@@ -134,7 +134,7 @@ public class VXQuery {
     /**
      * Creates a new Hyracks connection with: the client IP address and port provided, if IP address is provided in command line. Otherwise create a new virtual
      * cluster with Hyracks nodes. Queries passed are run either way. After running queries, if a virtual cluster has been created, it is shut down.
-     * 
+     *
      * @throws Exception
      */
     private void execute() throws Exception {
@@ -160,7 +160,7 @@ public class VXQuery {
     /**
      * Reads the contents of the files passed in the list of arguments to a string. If -showquery argument is passed, output the query as string. Run the query
      * for the string.
-     * 
+     *
      * @throws IOException
      * @throws SystemException
      * @throws Exception
@@ -226,7 +226,7 @@ public class VXQuery {
 
     /**
      * Get cluster node configuration.
-     * 
+     *
      * @return Configuration of node controllers as array of Strings.
      * @throws Exception
      */
@@ -243,7 +243,7 @@ public class VXQuery {
     /**
      * Creates a Hyracks dataset, if not already existing with the job frame size, and 1 reader. Allocates a new buffer of size specified in the frame of Hyracks
      * node. Creates new dataset reader with the current job ID and result set ID. Outputs the string in buffer for each frame.
-     * 
+     *
      * @param spec
      *            JobSpecification object, containing frame size. Current specified job.
      * @param writer
@@ -274,7 +274,7 @@ public class VXQuery {
 
     /**
      * Create a unique result set id to get the correct query back from the cluster.
-     * 
+     *
      * @return Result Set id generated with current system time.
      */
     protected ResultSetId createResultSetId() {
@@ -284,7 +284,7 @@ public class VXQuery {
     /**
      * Start local virtual cluster with cluster controller node and node controller nodes. IP address provided for node controller is localhost. Unassigned ports
      * 39000 and 39001 are used for client and cluster port respectively. Creates a new Hyracks connection with the IP address and client ports.
-     * 
+     *
      * @throws Exception
      */
     public void startLocalHyracks() throws Exception {
@@ -317,7 +317,7 @@ public class VXQuery {
 
     /**
      * Shuts down the virtual cluster, along with all nodes and node execution, network and queue managers.
-     * 
+     *
      * @throws Exception
      */
     public void stopLocalHyracks() throws Exception {
@@ -329,7 +329,7 @@ public class VXQuery {
 
     /**
      * Reads the contents of file given in query into a String. The file is always closed. For XML files UTF-8 encoding is used.
-     * 
+     *
      * @param query
      *            The query with filename to be processed
      * @return UTF-8 formatted query string
@@ -341,7 +341,7 @@ public class VXQuery {
 
     /**
      * Save and print out the timing message.
-     * 
+     *
      * @param message
      */
     private static void timingMessage(String message) {
@@ -353,55 +353,55 @@ public class VXQuery {
      * Helper class with fields and methods to handle all command line options
      */
     private static class CmdLineOptions {
-        @Option(name = "-available-processors", usage = "Number of available processors. (default java's available processors)")
+        @Option(name = "-available-processors", usage = "Number of available processors. (default: java's available processors)")
         private int availableProcessors = -1;
 
-        @Option(name = "-client-net-ip-address", usage = "IP Address of the ClusterController")
+        @Option(name = "-client-net-ip-address", usage = "IP Address of the ClusterController.")
         private String clientNetIpAddress = null;
 
-        @Option(name = "-client-net-port", usage = "Port of the ClusterController (default 1098)")
+        @Option(name = "-client-net-port", usage = "Port of the ClusterController. (default: 1098)")
         private int clientNetPort = 1098;
 
-        @Option(name = "-local-node-controllers", usage = "Number of local node controllers (default 1)")
+        @Option(name = "-local-node-controllers", usage = "Number of local node controllers. (default: 1)")
         private int localNodeControllers = 1;
 
-        @Option(name = "-frame-size", usage = "Frame size in bytes. (default 65,536)")
+        @Option(name = "-frame-size", usage = "Frame size in bytes. (default: 65,536)")
         private int frameSize = 65536;
 
-        @Option(name = "-join-hash-size", usage = "Join hash size in bytes. (default 67,108,864)")
+        @Option(name = "-join-hash-size", usage = "Join hash size in bytes. (default: 67,108,864)")
         private long joinHashSize = -1;
 
-        @Option(name = "-maximum-data-size", usage = "Maximum possible data size in bytes. (default 150,323,855,000)")
+        @Option(name = "-maximum-data-size", usage = "Maximum possible data size in bytes. (default: 150,323,855,000)")
         private long maximumDataSize = -1;
 
         @Option(name = "-buffer-size", usage = "Disk read buffer size in bytes.")
         private int bufferSize = -1;
 
-        @Option(name = "-O", usage = "Optimization Level. Default: Full Optimization")
+        @Option(name = "-O", usage = "Optimization Level. (default: Full Optimization)")
         private int optimizationLevel = Integer.MAX_VALUE;
 
-        @Option(name = "-showquery", usage = "Show query string")
+        @Option(name = "-showquery", usage = "Show query string.")
         private boolean showQuery;
 
-        @Option(name = "-showast", usage = "Show abstract syntax tree")
+        @Option(name = "-showast", usage = "Show abstract syntax tree.")
         private boolean showAST;
 
-        @Option(name = "-showtet", usage = "Show translated expression tree")
+        @Option(name = "-showtet", usage = "Show translated expression tree.")
         private boolean showTET;
 
-        @Option(name = "-showoet", usage = "Show optimized expression tree")
+        @Option(name = "-showoet", usage = "Show optimized expression tree.")
         private boolean showOET;
 
-        @Option(name = "-showrp", usage = "Show Runtime plan")
+        @Option(name = "-showrp", usage = "Show Runtime plan.")
         private boolean showRP;
 
-        @Option(name = "-compileonly", usage = "Compile the query and stop")
+        @Option(name = "-compileonly", usage = "Compile the query and stop.")
         private boolean compileOnly;
 
-        @Option(name = "-repeatexec", usage = "Number of times to repeat execution")
+        @Option(name = "-repeatexec", usage = "Number of times to repeat execution.")
         private int repeatExec = 1;
 
-        @Option(name = "-timing", usage = "Produce timing information")
+        @Option(name = "-timing", usage = "Produce timing information.")
         private boolean timing;
 
         @Option(name = "-timing-ignore-queries", usage = "Ignore the first X number of quereies.")

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/RewriteRuleset.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/RewriteRuleset.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/RewriteRuleset.java
index 7b55856..c3d0358 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/RewriteRuleset.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/RewriteRuleset.java
@@ -22,13 +22,11 @@ import java.util.List;
 import org.apache.vxquery.compiler.rewriter.rules.ConsolidateDescandantChild;
 import org.apache.vxquery.compiler.rewriter.rules.ConsolidateAssignAggregateRule;
 import org.apache.vxquery.compiler.rewriter.rules.ConvertAssignToUnnestRule;
-import org.apache.vxquery.compiler.rewriter.rules.ReplaceSourceMapInDocExpression;
 import org.apache.vxquery.compiler.rewriter.rules.ConvertFromAlgebricksExpressionsRule;
 import org.apache.vxquery.compiler.rewriter.rules.ConvertToAlgebricksExpressionsRule;
 import org.apache.vxquery.compiler.rewriter.rules.EliminateSubplanForSingleItemsRule;
 import org.apache.vxquery.compiler.rewriter.rules.EliminateUnnestAggregateSequencesRule;
 import org.apache.vxquery.compiler.rewriter.rules.EliminateUnnestAggregateSubplanRule;
-import org.apache.vxquery.compiler.rewriter.rules.InlineNestedVariablesRule;
 import org.apache.vxquery.compiler.rewriter.rules.IntroduceCollectionRule;
 import org.apache.vxquery.compiler.rewriter.rules.IntroduceTwoStepAggregateRule;
 import org.apache.vxquery.compiler.rewriter.rules.PushChildIntoDataScanRule;
@@ -40,17 +38,24 @@ import org.apache.vxquery.compiler.rewriter.rules.RemoveRedundantPromoteExpressi
 import org.apache.vxquery.compiler.rewriter.rules.RemoveRedundantTreatExpressionsRule;
 import org.apache.vxquery.compiler.rewriter.rules.RemoveUnusedSortDistinctNodesRule;
 import org.apache.vxquery.compiler.rewriter.rules.RemoveUnusedUnnestIterateRule;
+import org.apache.vxquery.compiler.rewriter.rules.ReplaceSourceMapInDocExpression;
 import org.apache.vxquery.compiler.rewriter.rules.SetCollectionDataSourceRule;
 import org.apache.vxquery.compiler.rewriter.rules.SetVariableIdContextRule;
+import org.apache.vxquery.compiler.rewriter.rules.algebricksalternatives.ExtractFunctionsFromJoinConditionRule;
+import org.apache.vxquery.compiler.rewriter.rules.algebricksalternatives.InlineNestedVariablesRule;
+import org.apache.vxquery.compiler.rewriter.rules.algebricksalternatives.MoveFreeVariableOperatorOutOfSubplanRule;
 
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer;
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.BreakSelectIntoConjunctsRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.ComplexJoinInferenceRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.ComplexUnnestToProductRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.ConsolidateAssignsRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.ConsolidateSelectsRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.CopyLimitDownRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.EliminateGroupByEmptyKeyRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.EliminateSubplanRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.EliminateSubplanWithInputCardinalityOneRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.EnforceStructuralPropertiesRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.ExtractCommonOperatorsRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.ExtractGbyExpressionsRule;
@@ -58,17 +63,21 @@ import edu.uci.ics.hyracks.algebricks.rewriter.rules.FactorRedundantGroupAndDeco
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.InferTypesRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.InlineAssignIntoAggregateRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.InlineVariablesRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.InsertOuterJoinRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroJoinInsideSubplanRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceAggregateCombinerRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceGroupByCombinerRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceGroupByForSubplanRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceProjectsRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.MoveFreeVariableOperatorOutOfSubplanRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.NestedSubplanToJoinRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.PullSelectOutOfEqJoin;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushMapOperatorDownThroughProductRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushProjectDownRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushProjectIntoDataSourceScanRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushSelectDownRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushSelectIntoJoinRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushSubplanIntoGroupByRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushSubplanWithAggregateDownThroughProductRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.ReinferAllTypesRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.RemoveRedundantVariablesRule;
@@ -76,6 +85,7 @@ import edu.uci.ics.hyracks.algebricks.rewriter.rules.RemoveUnusedAssignAndAggreg
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.SetAlgebricksPhysicalOperatorsRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.SetExecutionModeRule;
 import edu.uci.ics.hyracks.algebricks.rewriter.rules.SimpleUnnestToProductRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.SubplanOutOfGroupRule;
 
 public class RewriteRuleset {
     /**
@@ -98,7 +108,7 @@ public class RewriteRuleset {
         // TODO Fix the group by operator before putting back in the rule set.
         //        normalization.add(new ConvertAssignSortDistinctNodesToOperatorsRule());
 
-        // Find unnest followed by aggregate in a subplan. 
+        // Find unnest followed by aggregate in a subplan.
         normalization.add(new EliminateUnnestAggregateSubplanRule());
         normalization.add(new RemoveRedundantVariablesRule());
         normalization.add(new RemoveUnusedAssignAndAggregateRule());
@@ -199,6 +209,38 @@ public class RewriteRuleset {
         return typeInfer;
     }
 
+    /**
+     * Unnest more complex structures.
+     */
+    public final static List<IAlgebraicRewriteRule> buildUnnestingRuleCollection() {
+        List<IAlgebraicRewriteRule> xquery = new LinkedList<IAlgebraicRewriteRule>();
+
+        xquery.add(new PushSelectDownRule());
+        xquery.add(new SimpleUnnestToProductRule());
+        xquery.add(new ComplexUnnestToProductRule());
+        xquery.add(new ComplexJoinInferenceRule());
+        xquery.add(new PushSelectIntoJoinRule());
+        xquery.add(new IntroJoinInsideSubplanRule());
+        xquery.add(new PushMapOperatorDownThroughProductRule());
+        xquery.add(new PushSubplanWithAggregateDownThroughProductRule());
+        xquery.add(new IntroduceGroupByForSubplanRule());
+        xquery.add(new SubplanOutOfGroupRule());
+        xquery.add(new InsertOuterJoinRule());
+        xquery.add(new ExtractFunctionsFromJoinConditionRule());
+
+        xquery.add(new RemoveRedundantVariablesRule());
+        xquery.add(new RemoveUnusedAssignAndAggregateRule());
+
+        xquery.add(new FactorRedundantGroupAndDecorVarsRule());
+        xquery.add(new EliminateSubplanRule());
+        xquery.add(new EliminateGroupByEmptyKeyRule());
+        xquery.add(new PushSubplanIntoGroupByRule());
+        xquery.add(new NestedSubplanToJoinRule());
+        xquery.add(new EliminateSubplanWithInputCardinalityOneRule());
+
+        return xquery;
+    }
+
     public final static List<IAlgebraicRewriteRule> buildNormalizationRuleCollection() {
         List<IAlgebraicRewriteRule> normalization = new LinkedList<IAlgebraicRewriteRule>();
         normalization.add(new EliminateSubplanRule());

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConsolidateUnnestsRule.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConsolidateUnnestsRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConsolidateUnnestsRule.java
index 6a2bb08..f1b2196 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConsolidateUnnestsRule.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConsolidateUnnestsRule.java
@@ -37,26 +37,26 @@ import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.UnnestOpera
  * operator (2). XQuery unnest operator (1) must have a scalar implementation
  * of the unnest function. If so the two unnest expressions can be merged
  * together.
- * 
+ *
  * <pre>
- * Before 
+ * Before
  * 
  *   plan__parent
  *   UNNEST( $v2 : uf2( $v1 ) )
  *   UNNEST( $v1 : uf1( $v0 ) )
  *   plan__child
- *   
+ * 
  *   Where $v1 is not used in plan__parent and uf1 is not a descendant expression.
- *   
+ * 
  * After
  * 
  *   plan__parent
  *   UNNEST( $v2 : uf2( sf1( $v0 ) ) )
  *   plan__child
- *   
+ * 
  *   uf1 becomes sf1 since it changes from unnesting to scalar expression.
  * </pre>
- * 
+ *
  * @author prestonc
  */
 public class ConsolidateUnnestsRule extends AbstractUsedVariablesProcessingRule {
@@ -75,41 +75,42 @@ public class ConsolidateUnnestsRule extends AbstractUsedVariablesProcessingRule
         }
         UnnestOperator unnest2 = (UnnestOperator) op2;
 
-        if (!usedVariables.contains(unnest2.getVariable())) {
-            // Check to see if the unnest2 expression has a scalar implementation.
-            ILogicalExpression logicalExpression2 = (ILogicalExpression) unnest2.getExpressionRef().getValue();
-            if (logicalExpression2.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
-                return false;
-            }
-            AbstractFunctionCallExpression functionCall2 = (AbstractFunctionCallExpression) logicalExpression2;
-            Function functionInfo2 = (Function) functionCall2.getFunctionInfo();
-            if (!functionInfo2.hasScalarEvaluatorFactory()) {
-                return false;
-            }
-            // Exception for specific path expressions.
-            if (functionCall2.getFunctionIdentifier().equals(BuiltinOperators.DESCENDANT.getFunctionIdentifier())
-                    || functionCall2.getFunctionIdentifier().equals(
-                            BuiltinOperators.DESCENDANT_OR_SELF.getFunctionIdentifier())) {
-                return false;
-            }
-
-            // Find unnest2 variable in unnest1
-            Mutable<ILogicalExpression> unnest1Arg = ExpressionToolbox.findVariableExpression(
-                    unnest1.getExpressionRef(), unnest2.getVariable());
-            if (unnest1Arg == null) {
-                return false;
-            }
+        if (usedVariables.contains(unnest2.getVariable())) {
+            return false;
+        }
 
-            // Replace unnest2 expression in unnest1
-            ScalarFunctionCallExpression child = new ScalarFunctionCallExpression(functionInfo2,
-                    functionCall2.getArguments());
-            unnest1Arg.setValue(child);
+        // Check to see if the unnest2 expression has a scalar implementation.
+        ILogicalExpression logicalExpression2 = (ILogicalExpression) unnest2.getExpressionRef().getValue();
+        if (logicalExpression2.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
+            return false;
+        }
+        AbstractFunctionCallExpression functionCall2 = (AbstractFunctionCallExpression) logicalExpression2;
+        Function functionInfo2 = (Function) functionCall2.getFunctionInfo();
+        if (!functionInfo2.hasScalarEvaluatorFactory()) {
+            return false;
+        }
+        // Exception for specific path expressions.
+        if (functionCall2.getFunctionIdentifier().equals(BuiltinOperators.DESCENDANT.getFunctionIdentifier())
+                || functionCall2.getFunctionIdentifier().equals(
+                        BuiltinOperators.DESCENDANT_OR_SELF.getFunctionIdentifier())) {
+            return false;
+        }
 
-            // Move input for unnest2 into unnest1
-            unnest1.getInputs().clear();
-            unnest1.getInputs().addAll(unnest2.getInputs());
-            return true;
+        // Find unnest2 variable in unnest1
+        Mutable<ILogicalExpression> unnest1Arg = ExpressionToolbox.findVariableExpression(unnest1.getExpressionRef(),
+                unnest2.getVariable());
+        if (unnest1Arg == null) {
+            return false;
         }
-        return false;
+
+        // Replace unnest2 expression in unnest1
+        ScalarFunctionCallExpression child = new ScalarFunctionCallExpression(functionInfo2,
+                functionCall2.getArguments());
+        unnest1Arg.setValue(child);
+
+        // Move input for unnest2 into unnest1
+        unnest1.getInputs().clear();
+        unnest1.getInputs().addAll(unnest2.getInputs());
+        return true;
     }
 }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertAssignToUnnestRule.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertAssignToUnnestRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertAssignToUnnestRule.java
index 72f6d03..28e54e4 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertAssignToUnnestRule.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertAssignToUnnestRule.java
@@ -31,12 +31,11 @@ import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.UnnestingFunction
 import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
 import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.UnnestOperator;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 
 /**
  * The rule searches for unnest(iterate) operator followed by an assign(child)
  * operator and merges the assign into the unnest operator.
- * 
+ *
  * <pre>
  * Before
  * 
@@ -44,22 +43,23 @@ import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
  *   UNNEST( $v2 : iterate( $v1 ) )
  *   ASSIGN( $v1 : sf1( $v0 ) )
  *   plan__child
- *   
+ * 
  *   where plan__parent does not use $v1 and $v0 is defined in plan__child.
  *   sf1 is a scalar function that has a unnesting implementation.
- *   
+ * 
  * After
  * 
  *   plan__parent
  *   UNNEST( $v2 : uf1( $v0 ) )
  *   plan__child
  * </pre>
- * 
+ *
  * @author prestonc
  */
-public class ConvertAssignToUnnestRule implements IAlgebraicRewriteRule {
+public class ConvertAssignToUnnestRule extends AbstractUsedVariablesProcessingRule {
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    protected boolean processOperator(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         if (op.getOperatorTag() != LogicalOperatorTag.UNNEST) {
             return false;
@@ -82,6 +82,10 @@ public class ConvertAssignToUnnestRule implements IAlgebraicRewriteRule {
         }
         AssignOperator assign = (AssignOperator) op2;
 
+        if (usedVariables.contains(assign.getVariables())) {
+            return false;
+        }
+
         // Check to see if the expression has an unnesting implementation.
         ILogicalExpression logicalExpression2 = (ILogicalExpression) assign.getExpressions().get(0).getValue();
         if (logicalExpression2.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
@@ -92,21 +96,16 @@ public class ConvertAssignToUnnestRule implements IAlgebraicRewriteRule {
         if (!functionInfo2.hasUnnestingEvaluatorFactory()) {
             return false;
         }
-        
-        // TODO add checks for variables used that have now been removed.
 
         // Update the unnest parameters.
         unnest.getInputs().clear();
         unnest.getInputs().addAll(assign.getInputs());
-    
-        UnnestingFunctionCallExpression child = new UnnestingFunctionCallExpression(functionInfo2, functionCall2.getArguments());
+
+        UnnestingFunctionCallExpression child = new UnnestingFunctionCallExpression(functionInfo2,
+                functionCall2.getArguments());
         unnest.getExpressionRef().setValue(child);
-        
+
         return true;
     }
 
-    @Override
-    public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context) {
-        return false;
-    }
 }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertFromAlgebricksExpressionsRule.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertFromAlgebricksExpressionsRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertFromAlgebricksExpressionsRule.java
index f77b93b..b363c85 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertFromAlgebricksExpressionsRule.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertFromAlgebricksExpressionsRule.java
@@ -45,26 +45,26 @@ import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
  * The rule searches for where the Algebricks builtin function are temporarly in the plan in place of XQuery function.
  * The combination the Algebricks builtin function are replace with boolean XQuery function and the XQuery equivalent
  * function.
- * 
+ *
  * <pre>
  * Before
  * 
  *   plan__parent
  *   %OPERATOR( $v1 : algebricks_function( \@input_expression ) )
  *   plan__child
- *   
+ * 
  *   where the function annotation contains a hint on which xquery expression is represented by the algebricks function.
- *   
- * After 
+ * 
+ * After
  * 
  *   plan__parent
  *   %OPERATOR( $v1 :xquery_expression( \@input_expression ) ) )
  *   plan__child
- *   
- *   note the xquery_expression may include the boolean function to ensure only a true or false result.
  * 
+ *   note the xquery_expression may include the boolean function to ensure only a true or false result.
+ *
  * </pre>
- * 
+ *
  * @author prestonc, shivanim
  */
 public class ConvertFromAlgebricksExpressionsRule implements IAlgebraicRewriteRule {
@@ -77,20 +77,14 @@ public class ConvertFromAlgebricksExpressionsRule implements IAlgebraicRewriteRu
     @SuppressWarnings({ "unchecked", "rawtypes" })
     public ConvertFromAlgebricksExpressionsRule() {
         ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.AND, new Pair(BuiltinOperators.AND, null));
-        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.EQ, new Pair(BuiltinOperators.VALUE_EQ,
-                BuiltinOperators.GENERAL_EQ));
-        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.GE, new Pair(BuiltinOperators.VALUE_GE,
-                BuiltinOperators.GENERAL_GE));
-        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.GT, new Pair(BuiltinOperators.VALUE_GT,
-                BuiltinOperators.GENERAL_GT));
+        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.EQ, new Pair(BuiltinOperators.VALUE_EQ, null));
+        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.GE, new Pair(BuiltinOperators.VALUE_GE, null));
+        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.GT, new Pair(BuiltinOperators.VALUE_GT, null));
         ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.IS_NULL, new Pair(null, BuiltinFunctions.FN_EMPTY_1));
-        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.LE, new Pair(BuiltinOperators.VALUE_LE,
-                BuiltinOperators.GENERAL_LE));
-        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.LT, new Pair(BuiltinOperators.VALUE_LT,
-                BuiltinOperators.GENERAL_LT));
+        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.LE, new Pair(BuiltinOperators.VALUE_LE, null));
+        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.LT, new Pair(BuiltinOperators.VALUE_LT, null));
         ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.NOT, new Pair(null, BuiltinFunctions.FN_NOT_1));
-        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.NEQ, new Pair(BuiltinOperators.VALUE_NE,
-                BuiltinOperators.GENERAL_NE));
+        ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.NEQ, new Pair(BuiltinOperators.VALUE_NE, null));
         ALGEBRICKS_MAP.put(AlgebricksBuiltinFunctions.OR, new Pair(BuiltinOperators.OR, null));
     }
 
@@ -109,6 +103,7 @@ public class ConvertFromAlgebricksExpressionsRule implements IAlgebraicRewriteRu
                 modified = true;
             }
         }
+        context.computeAndSetTypeEnvironmentForOperator(opRef.getValue());
         return modified;
     }
 

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertToAlgebricksExpressionsRule.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertToAlgebricksExpressionsRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertToAlgebricksExpressionsRule.java
index f1747fc..394c622 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertToAlgebricksExpressionsRule.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/ConvertToAlgebricksExpressionsRule.java
@@ -42,7 +42,7 @@ import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
  * The rule searches for where the XQuery function are used in place of Algebricks builtin function.
  * The combination of the boolean XQuery function and the XQuery equivalent function are replaced with
  * the Algebricks builtin function .
- * 
+ *
  * <pre>
  * Before
  * 
@@ -50,18 +50,18 @@ import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
  *   %OPERATOR( $v1 : xquery_expression( \@input_expression ) )
  *   plan__child
  * 
- *   where xquery_expression has a known equivalent in Algebricks, 
+ *   where xquery_expression has a known equivalent in Algebricks,
  *     such as conditional expressions and a check for null.
  *     The expression may include the boolean function to ensure only
  *     a true or false result.
- *   
- * After 
+ * 
+ * After
  * 
  *   plan__parent
  *   %OPERATOR( $v1 : algebricks_function( \@input_expression ) )
  *   plan__child
  * </pre>
- * 
+ *
  * @author prestonc, shivanim
  */
 public class ConvertToAlgebricksExpressionsRule implements IAlgebraicRewriteRule {
@@ -81,12 +81,6 @@ public class ConvertToAlgebricksExpressionsRule implements IAlgebraicRewriteRule
 
         ALGEBRICKS_MAP.put(BuiltinFunctions.FN_EMPTY_1.getFunctionIdentifier(), AlgebricksBuiltinFunctions.IS_NULL);
         ALGEBRICKS_MAP.put(BuiltinFunctions.FN_NOT_1.getFunctionIdentifier(), AlgebricksBuiltinFunctions.NOT);
-        ALGEBRICKS_MAP.put(BuiltinOperators.GENERAL_EQ.getFunctionIdentifier(), AlgebricksBuiltinFunctions.EQ);
-        ALGEBRICKS_MAP.put(BuiltinOperators.GENERAL_GE.getFunctionIdentifier(), AlgebricksBuiltinFunctions.GE);
-        ALGEBRICKS_MAP.put(BuiltinOperators.GENERAL_GT.getFunctionIdentifier(), AlgebricksBuiltinFunctions.GT);
-        ALGEBRICKS_MAP.put(BuiltinOperators.GENERAL_LE.getFunctionIdentifier(), AlgebricksBuiltinFunctions.LE);
-        ALGEBRICKS_MAP.put(BuiltinOperators.GENERAL_LT.getFunctionIdentifier(), AlgebricksBuiltinFunctions.LT);
-        ALGEBRICKS_MAP.put(BuiltinOperators.GENERAL_NE.getFunctionIdentifier(), AlgebricksBuiltinFunctions.NEQ);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/InlineNestedVariablesRule.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/InlineNestedVariablesRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/InlineNestedVariablesRule.java
deleted file mode 100644
index c0c082f..0000000
--- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/InlineNestedVariablesRule.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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.vxquery.compiler.rewriter.rules;
-
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.InlineVariablesRule;
-
-/**
- * Modifies the InlineVariablesRule to also process nested plans.
- */
-public class InlineNestedVariablesRule extends InlineVariablesRule {
-
-    protected boolean inlineVariables(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
-            throws AlgebricksException {
-        AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-
-        // Update mapping from variables to expressions during top-down traversal.
-        if (op.getOperatorTag() == LogicalOperatorTag.ASSIGN) {
-            AssignOperator assignOp = (AssignOperator) op;
-            List<LogicalVariable> vars = assignOp.getVariables();
-            List<Mutable<ILogicalExpression>> exprs = assignOp.getExpressions();
-            for (int i = 0; i < vars.size(); i++) {
-                ILogicalExpression expr = exprs.get(i).getValue();
-                // Ignore functions that are either in the doNotInline set or are non-functional               
-                if (expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
-                    AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr;
-                    if (doNotInlineFuncs.contains(funcExpr.getFunctionIdentifier()) || !funcExpr.isFunctional()) {
-                        continue;
-                    }
-                }
-                varAssignRhs.put(vars.get(i), exprs.get(i).getValue());
-            }
-        }
-
-        boolean modified = false;
-        // Descend into nested plans inlining along the way.
-        if (op.hasNestedPlans()) {
-            AbstractOperatorWithNestedPlans nestedOp = (AbstractOperatorWithNestedPlans) op;
-            for (ILogicalPlan nestedPlan : nestedOp.getNestedPlans()) {
-                for (Mutable<ILogicalOperator> nestedOpRef : nestedPlan.getRoots()) {
-                    if (inlineVariables(nestedOpRef, context)) {
-                        modified = true;
-                    }
-                }
-            }
-        }
-
-        // Descend into children inlining along on the way.
-        for (Mutable<ILogicalOperator> inputOpRef : op.getInputs()) {
-            if (inlineVariables(inputOpRef, context)) {
-                modified = true;
-            }
-        }
-
-        if (performBottomUpAction(op)) {
-            modified = true;
-        }
-
-        if (modified) {
-            context.computeAndSetTypeEnvironmentForOperator(op);
-            context.addToDontApplySet(this, op);
-            // Re-enable rules that we may have already tried. They could be applicable now after inlining.
-            context.removeFromAlreadyCompared(opRef.getValue());
-        }
-
-        return modified;
-    }
-}

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/ExtractFunctionsFromJoinConditionRule.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/ExtractFunctionsFromJoinConditionRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/ExtractFunctionsFromJoinConditionRule.java
new file mode 100644
index 0000000..9847c7f
--- /dev/null
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/ExtractFunctionsFromJoinConditionRule.java
@@ -0,0 +1,141 @@
+/*
+ * 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.vxquery.compiler.rewriter.rules.algebricksalternatives;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.AlgebricksBuiltinFunctions;
+import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
+import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+
+/**
+ * Factors out function expressions from each comparison function or similarity function in join condition by assigning them to a variables, and replacing the function expressions with references to those variables.
+ * Examples:
+ * Plan with function expressions in comparison or similarity condition of join expression. Generates one assign operator per extracted function expression.
+ * Example
+ * Before plan:
+ * join ( eq( funcX($$1), funcX($$2) ) )
+ * After plan:
+ * join (eq($$3,$$4))
+ * assign [$$4] <- [funcY($$2)]
+ * assign [$$3] <- [funcX($$1)]
+ */
+public class ExtractFunctionsFromJoinConditionRule implements IAlgebraicRewriteRule {
+
+    @Override
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+        return false;
+    }
+
+    @Override
+    public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
+        AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
+
+        if (op.getOperatorTag() != LogicalOperatorTag.INNERJOIN
+                && op.getOperatorTag() != LogicalOperatorTag.LEFTOUTERJOIN) {
+            return false;
+        }
+        AbstractBinaryJoinOperator joinOp = (AbstractBinaryJoinOperator) op;
+        ILogicalExpression expr = joinOp.getCondition().getValue();
+
+        return assignFunctionExpressions(joinOp, expr, context);
+
+    }
+
+    private boolean assignFunctionExpressions(AbstractLogicalOperator joinOp, ILogicalExpression expr,
+            IOptimizationContext context) throws AlgebricksException {
+        if (expr.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
+            return false;
+        }
+        AbstractFunctionCallExpression fexp = (AbstractFunctionCallExpression) expr;
+        FunctionIdentifier fi = fexp.getFunctionIdentifier();
+
+        boolean modified = false;
+        if (fi.equals(AlgebricksBuiltinFunctions.AND) || fi.equals(AlgebricksBuiltinFunctions.OR)) {
+            for (Mutable<ILogicalExpression> a : fexp.getArguments()) {
+                if (assignFunctionExpressions(joinOp, a.getValue(), context)) {
+                    modified = true;
+                }
+            }
+            return modified;
+        } else if (AlgebricksBuiltinFunctions.isComparisonFunction(fi)) {
+            for (Mutable<ILogicalExpression> exprRef : fexp.getArguments()) {
+                if (exprRef.getValue().getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
+                    LogicalVariable newVar = context.newVar();
+                    AssignOperator newAssign = new AssignOperator(newVar, new MutableObject<ILogicalExpression>(exprRef
+                            .getValue().cloneExpression()));
+                    newAssign.setExecutionMode(joinOp.getExecutionMode());
+
+                    // Place assign below joinOp.
+                    List<LogicalVariable> used = new ArrayList<LogicalVariable>();
+                    VariableUtilities.getUsedVariables(newAssign, used);
+
+                    Mutable<ILogicalOperator> leftBranchRef = joinOp.getInputs().get(0);
+                    ILogicalOperator leftBranch = leftBranchRef.getValue();
+                    List<LogicalVariable> leftBranchVariables = new ArrayList<LogicalVariable>();
+                    VariableUtilities.getLiveVariables(leftBranch, leftBranchVariables);
+                    if (leftBranchVariables.containsAll(used)) {
+                        // place assign on left branch
+                        newAssign.getInputs().add(new MutableObject<ILogicalOperator>(leftBranch));
+                        leftBranchRef.setValue(newAssign);
+                        modified = true;
+                    } else {
+                        Mutable<ILogicalOperator> rightBranchRef = joinOp.getInputs().get(1);
+                        ILogicalOperator rightBranch = rightBranchRef.getValue();
+                        List<LogicalVariable> rightBranchVariables = new ArrayList<LogicalVariable>();
+                        VariableUtilities.getLiveVariables(rightBranch, rightBranchVariables);
+                        if (rightBranchVariables.containsAll(used)) {
+                            // place assign on right branch
+                            newAssign.getInputs().add(new MutableObject<ILogicalOperator>(rightBranch));
+                            rightBranchRef.setValue(newAssign);
+                            modified = true;
+                        }
+                    }
+
+                    if (modified) {
+                        // Replace original expr with variable reference.
+                        exprRef.setValue(new VariableReferenceExpression(newVar));
+                        context.computeAndSetTypeEnvironmentForOperator(newAssign);
+                        context.computeAndSetTypeEnvironmentForOperator(joinOp);
+                    }
+                }
+            }
+            return modified;
+        } else {
+            return false;
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/InlineNestedVariablesRule.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/InlineNestedVariablesRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/InlineNestedVariablesRule.java
new file mode 100644
index 0000000..ca0bc1c
--- /dev/null
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/InlineNestedVariablesRule.java
@@ -0,0 +1,97 @@
+/*
+ * 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.vxquery.compiler.rewriter.rules.algebricksalternatives;
+
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.InlineVariablesRule;
+
+/**
+ * Modifies the InlineVariablesRule to also process nested plans.
+ */
+public class InlineNestedVariablesRule extends InlineVariablesRule {
+
+    protected boolean inlineVariables(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
+        AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
+
+        // Update mapping from variables to expressions during top-down traversal.
+        if (op.getOperatorTag() == LogicalOperatorTag.ASSIGN) {
+            AssignOperator assignOp = (AssignOperator) op;
+            List<LogicalVariable> vars = assignOp.getVariables();
+            List<Mutable<ILogicalExpression>> exprs = assignOp.getExpressions();
+            for (int i = 0; i < vars.size(); i++) {
+                ILogicalExpression expr = exprs.get(i).getValue();
+                // Ignore functions that are either in the doNotInline set or are non-functional
+                if (expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
+                    AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr;
+                    if (doNotInlineFuncs.contains(funcExpr.getFunctionIdentifier()) || !funcExpr.isFunctional()) {
+                        continue;
+                    }
+                }
+                varAssignRhs.put(vars.get(i), exprs.get(i).getValue());
+            }
+        }
+
+        boolean modified = false;
+        // Descend into nested plans inlining along the way.
+        if (op.hasNestedPlans()) {
+            AbstractOperatorWithNestedPlans nestedOp = (AbstractOperatorWithNestedPlans) op;
+            for (ILogicalPlan nestedPlan : nestedOp.getNestedPlans()) {
+                for (Mutable<ILogicalOperator> nestedOpRef : nestedPlan.getRoots()) {
+                    if (inlineVariables(nestedOpRef, context)) {
+                        modified = true;
+                    }
+                }
+            }
+        }
+
+        // Descend into children inlining along on the way.
+        for (Mutable<ILogicalOperator> inputOpRef : op.getInputs()) {
+            if (inlineVariables(inputOpRef, context)) {
+                modified = true;
+            }
+        }
+
+        if (performBottomUpAction(op)) {
+            modified = true;
+        }
+
+        if (modified) {
+            context.computeAndSetTypeEnvironmentForOperator(op);
+            context.addToDontApplySet(this, op);
+            // Re-enable rules that we may have already tried. They could be applicable now after inlining.
+            context.removeFromAlreadyCompared(opRef.getValue());
+        }
+
+        return modified;
+    }
+}

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/MoveFreeVariableOperatorOutOfSubplanRule.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/MoveFreeVariableOperatorOutOfSubplanRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/MoveFreeVariableOperatorOutOfSubplanRule.java
new file mode 100644
index 0000000..94b809d
--- /dev/null
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/algebricksalternatives/MoveFreeVariableOperatorOutOfSubplanRule.java
@@ -0,0 +1,178 @@
+/*
+ * 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.vxquery.compiler.rewriter.rules.algebricksalternatives;
+
+import java.util.HashSet;
+import java.util.ListIterator;
+import java.util.Set;
+
+import org.apache.commons.lang3.mutable.Mutable;
+
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
+import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
+import edu.uci.ics.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.AbstractDecorrelationRule;
+
+/**
+ * The rule searches for operators that can be moved outside the subplan.
+ *
+ * <pre>
+ * Before
+ * 
+ *   %PARENT_PLAN
+ *   SUBPLAN{
+ *     %NESTED_OPERATORS_B+
+ *     ASSIGN || %SUBPLAN
+ *     %NESTED_OPERATORS_A*
+ *     NESTEDTUPLESOURCE
+ *   }
+ *   %CHILD_PLAN
+ * 
+ *   where
+ *     %SUBPLAN has one nested plan with a root AGGREGATE operator.
+ * 
+ * After
+ * 
+ *   %PARENT_PLAN
+ *   SUBPLAN{
+ *     %NESTED_OPERATORS_B+
+ *     %NESTED_OPERATORS_A*
+ *     NESTEDTUPLESOURCE
+ *   }
+ *   ASSIGN || %SUBPLAN
+ *   %CHILD_PLAN
+ * </pre>
+ */
+public class MoveFreeVariableOperatorOutOfSubplanRule extends AbstractDecorrelationRule {
+
+    @Override
+    public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
+        AbstractLogicalOperator op0 = (AbstractLogicalOperator) opRef.getValue();
+        if (op0.getOperatorTag() != LogicalOperatorTag.SUBPLAN) {
+            return false;
+        }
+        SubplanOperator subplan = (SubplanOperator) op0;
+
+        Mutable<ILogicalOperator> leftRef = subplan.getInputs().get(0);
+        if (((AbstractLogicalOperator) leftRef.getValue()).getOperatorTag() == LogicalOperatorTag.EMPTYTUPLESOURCE) {
+            return false;
+        }
+
+        ListIterator<ILogicalPlan> plansIter = subplan.getNestedPlans().listIterator();
+        ILogicalPlan p = null;
+        while (plansIter.hasNext()) {
+            p = plansIter.next();
+        }
+        if (p == null) {
+            return false;
+        }
+        if (p.getRoots().size() != 1) {
+            return false;
+        }
+        Mutable<ILogicalOperator> opRef1 = p.getRoots().get(0);
+
+        //The root operator will not be movable. Start with the second op
+        AbstractLogicalOperator op1 = (AbstractLogicalOperator) opRef1.getValue();
+        if (op1.getInputs().size() != 1) {
+            return false;
+        }
+        Mutable<ILogicalOperator> op2Ref = op1.getInputs().get(0);
+
+        //Get all variables that come from outside of the loop
+        Set<LogicalVariable> free = new HashSet<LogicalVariable>();
+        OperatorPropertiesUtil.getFreeVariablesInSelfOrDesc(op1, free);
+
+        while (op2Ref != null) {
+            //Get the operator that we want to look at
+            AbstractLogicalOperator op2 = (AbstractLogicalOperator) op2Ref.getValue();
+
+            //Make sure we are looking at subplan with a scan/join
+            if (op2.getInputs().size() != 1 || !descOrSelfIsScanOrJoin(op2)) {
+                return false;
+            }
+            boolean notApplicable = false;
+
+            //Get its used variables
+            Set<LogicalVariable> used = new HashSet<LogicalVariable>();
+
+            //not movable if the operator is not an assign or subplan
+            //Might be helpful in the future for other operations in the future
+            if (op2.getOperatorTag() == LogicalOperatorTag.ASSIGN) {
+                VariableUtilities.getUsedVariables(op2, used);
+            } else if (op2.getOperatorTag() == LogicalOperatorTag.SUBPLAN) {
+                // Nested plan must have an aggregate root.
+                ListIterator<ILogicalPlan> subplansIter = ((SubplanOperator) op2).getNestedPlans().listIterator();
+                ILogicalPlan plan = null;
+                while (subplansIter.hasNext()) {
+                    plan = subplansIter.next();
+                }
+                if (plan == null) {
+                    return false;
+                }
+                if (plan.getRoots().size() != 1) {
+                    return false;
+                }
+                ILogicalOperator op3 = plan.getRoots().get(0).getValue();
+                if (op3.getOperatorTag() != LogicalOperatorTag.AGGREGATE) {
+                    return false;
+                }
+                // Used variables do not include ones created in the subplan.
+                VariableUtilities.getUsedVariables(op2, used);
+                Set<LogicalVariable> subplanProducedAndDown = new HashSet<LogicalVariable>();
+                VariableUtilities.getProducedVariablesInDescendantsAndSelf(op3, subplanProducedAndDown);
+                used.removeAll(subplanProducedAndDown);
+            } else {
+                notApplicable = true;
+            }
+
+            //Make sure that all of its used variables come from outside
+            for (LogicalVariable var : used) {
+                if (!free.contains(var)) {
+                    notApplicable = true;
+                }
+            }
+
+            if (notApplicable) {
+                op2Ref = op2.getInputs().get(0);
+            } else {
+                //Make the input of op2 be the input of op1
+                op2Ref.setValue(op2.getInputs().get(0).getValue());
+
+                //Make the outside of the subplan the input of op2
+                Mutable<ILogicalOperator> outsideRef = op2.getInputs().get(0);
+                outsideRef.setValue(op0.getInputs().get(0).getValue());
+
+                //Make op2 the input of the subplan
+                Mutable<ILogicalOperator> op2OutsideRef = op0.getInputs().get(0);
+                op2OutsideRef.setValue(op2);
+
+                return true;
+            }
+
+        }
+        return false;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java
index 446b445..99c4faa 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java
@@ -146,7 +146,7 @@ public abstract class AbstractGeneralComparisonScalarEvaluatorFactory extends
 
             /**
              * Check the second argument for a sequence and loop if required.
-             * 
+             *
              * @param aOp
              * @param tvpArg1
              * @param tvpArg2
@@ -181,7 +181,7 @@ public abstract class AbstractGeneralComparisonScalarEvaluatorFactory extends
 
             /**
              * Transform the values into values supported for general comparison.
-             * 
+             *
              * @param aOp
              * @param tvpArg1
              * @param tvpArg2
@@ -219,8 +219,16 @@ public abstract class AbstractGeneralComparisonScalarEvaluatorFactory extends
                     // Set up value comparison tagged value pointables.
                     if (tid1 == ValueTag.XS_UNTYPED_ATOMIC_TAG && tid2 == ValueTag.XS_UNTYPED_ATOMIC_TAG) {
                         // Only need to change tag since the storage is the same for untyped atomic and string.
+                        dOutInner1.write(tvpTransform1.getByteArray(), tvpTransform1.getStartOffset(),
+                                tvpTransform1.getLength());
+                        tvpCompare1.set(abvsInner1.getByteArray(), abvsInner1.getStartOffset(), abvsInner1.getLength());
                         tvpCompare1.getByteArray()[0] = ValueTag.XS_STRING_TAG;
+                        tagTransformed1 = true;
+                        dOutInner2.write(tvpTransform2.getByteArray(), tvpTransform2.getStartOffset(),
+                                tvpTransform2.getLength());
+                        tvpCompare2.set(abvsInner2.getByteArray(), abvsInner2.getStartOffset(), abvsInner2.getLength());
                         tvpCompare2.getByteArray()[0] = ValueTag.XS_STRING_TAG;
+                        tagTransformed2 = true;
                     } else if (tid1 == ValueTag.XS_UNTYPED_ATOMIC_TAG) {
                         tid1 = tid2;
                         getCastToOperator(tid2);

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/conditional/IfThenElseScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/conditional/IfThenElseScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/conditional/IfThenElseScalarEvaluatorFactory.java
index b0584f8..7cd97e3 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/conditional/IfThenElseScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/conditional/IfThenElseScalarEvaluatorFactory.java
@@ -20,7 +20,6 @@ import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
-import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
 import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
 
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -29,32 +28,42 @@ import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
 import edu.uci.ics.hyracks.data.std.api.IPointable;
 import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
 
 public class IfThenElseScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
+    private static final int CONDITION = 0;
+    private static final int TRUE_CONDITION = 1;
+    private static final int FALSE_CONDITION = 2;
 
     public IfThenElseScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
         super(args);
     }
 
     @Override
-    protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
+    protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, final IScalarEvaluator[] args)
             throws AlgebricksException {
-        return new AbstractTaggedValueArgumentScalarEvaluator(args) {
-            private final BooleanPointable bp = (BooleanPointable) BooleanPointable.FACTORY.createPointable();
+        final TaggedValuePointable conditionTvp = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
+        final BooleanPointable bp = (BooleanPointable) BooleanPointable.FACTORY.createPointable();
 
+        return new IScalarEvaluator() {
             @Override
-            protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
-                TaggedValuePointable tvp1 = args[0];
-                if (tvp1.getTag() != ValueTag.XS_BOOLEAN_TAG) {
-                    throw new SystemException(ErrorCode.FORG0006);
-                }
-                tvp1.getValue(bp);
+            public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+                args[CONDITION].evaluate(tuple, conditionTvp);
+
+                try {
+                    if (conditionTvp.getTag() != ValueTag.XS_BOOLEAN_TAG) {
+                        throw new SystemException(ErrorCode.FORG0006);
+                    }
+                    conditionTvp.getValue(bp);
 
-                if (bp.getBoolean()) {
-                    result.set(args[1]);
-                } else {
-                    result.set(args[2]);
+                    if (bp.getBoolean()) {
+                        args[TRUE_CONDITION].evaluate(tuple, result);
+                    } else {
+                        args[FALSE_CONDITION].evaluate(tuple, result);
+                    }
+                } catch (SystemException e) {
+                    throw new AlgebricksException(e);
                 }
             }
         };

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java b/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
index 189ae24..8a5845d 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
@@ -366,7 +366,7 @@ public class XMLSerializer implements IPrinter {
             enp.getAttributeSequence(ntp, seqp);
             if (seqp.getByteArray() != null && seqp.getEntryCount() > 0) {
                 ps.append(' ');
-                printSequence(ps, seqp);
+                printSequence(ps, seqp, " ");
             }
 
             enp.getChildrenSequence(ntp, seqp);
@@ -422,12 +422,19 @@ public class XMLSerializer implements IPrinter {
     }
 
     private void printSequence(PrintStream ps, SequencePointable seqp) {
+        printSequence(ps, seqp, null);
+    }
+
+    private void printSequence(PrintStream ps, SequencePointable seqp, String between) {
         VoidPointable vp = pp.takeOne(VoidPointable.class);
         try {
             int len = seqp.getEntryCount();
             for (int i = 0; i < len; ++i) {
                 seqp.getEntry(i, vp);
                 print(vp.getByteArray(), vp.getStartOffset(), vp.getLength(), ps);
+                if (i < len - 1 && between != null) {
+                    ps.append(between);
+                }
             }
         } finally {
             pp.giveBack(vp);

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
index 38272dd..d9c5d01 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
@@ -164,7 +164,13 @@ public class XMLQueryCompiler {
         builder.setNullableTypeComputer(new INullableTypeComputer() {
             @Override
             public Object makeNullableType(Object type) throws AlgebricksException {
-                throw new NotImplementedException("NullableTypeComputer is not implented (makeNullableType)");
+                SequenceType st = (SequenceType) type;
+                if (st.getQuantifier().allowsEmptySequence()) {
+                    return type;
+                } else if (st.getQuantifier() == Quantifier.QUANT_ONE) {
+                    return SequenceType.create(st.getItemType(), Quantifier.QUANT_QUESTION);
+                }
+                return type;
             }
 
             @Override
@@ -239,6 +245,8 @@ public class XMLQueryCompiler {
                 RewriteRuleset.buildNestedDataSourceRuleCollection()));
         defaultLogicalRewrites.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqOnceCtrl,
                 RewriteRuleset.buildTypeInferenceRuleCollection()));
+        defaultLogicalRewrites.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlNoDfs,
+                RewriteRuleset.buildUnnestingRuleCollection()));
         defaultLogicalRewrites.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlFullDfs,
                 RewriteRuleset.buildNormalizationRuleCollection()));
         defaultLogicalRewrites.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlNoDfs,

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java
index 2507d6c..9faefda 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java
@@ -160,7 +160,9 @@ import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
 import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
 import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
 import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
 import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
 import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
@@ -1501,26 +1503,40 @@ public class XMLQueryTranslator {
                     ctxExpr = vre(createAssignment(ctxExpr, tCtx));
                     ctxExpr = sfce(asc ? BuiltinOperators.SORT_DISTINCT_NODES_ASC_OR_ATOMICS
                             : BuiltinOperators.SORT_DISTINCT_NODES_DESC_OR_ATOMICS, ctxExpr);
+                    iterateOver(ctxExpr, tCtx);
+                    int i = 0;
+                    ILogicalExpression selectCondition = null;
                     for (ASTNode pn : predicates) {
-                        tCtx = tCtx.pushContext();
-                        tCtx.pushVariableScope();
-                        iterateOver(ctxExpr, tCtx);
+                        // Handles integer, boolean expression, path expression exists
+                        // TODO Support inner focus between predicates.
                         LogicalVariable pLVar = translateExpression(pn, tCtx);
                         ILogicalExpression tTest = instanceOf(vre(pLVar),
                                 SequenceType.create(BuiltinTypeRegistry.XSEXT_NUMERIC, Quantifier.QUANT_ONE));
                         ILogicalExpression posTest = sfce(BuiltinOperators.VALUE_EQ, vre(pLVar), vre(tCtx.varScope
                                 .lookupVariable(XMLQueryCompilerConstants.POS_VAR_NAME).getLogicalVariable()));
-                        ILogicalExpression boolTest = sfce(BuiltinFunctions.FN_BOOLEAN_1, vre(pLVar));
-
-                        SelectOperator select = new SelectOperator(mutable(sfce(BuiltinOperators.IF_THEN_ELSE, tTest,
-                                posTest, boolTest)), false, null);
-                        select.getInputs().add(mutable(tCtx.op));
-                        tCtx.op = select;
-                        ctxExpr = vre(tCtx.varScope.lookupVariable(XMLQueryCompilerConstants.DOT_VAR_NAME)
-                                .getLogicalVariable());
-                        tCtx.popVariableScope();
-                        tCtx = tCtx.popContext();
+                        ILogicalExpression boolTestTmp = vre(pLVar);
+                        if (tCtx.op.getOperatorTag() == LogicalOperatorTag.ASSIGN) {
+                            ILogicalExpression expression = ((AssignOperator) tCtx.op).getExpressions().get(0)
+                                    .getValue();
+                            if (expression.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL
+                                    && ((AbstractFunctionCallExpression) expression).getFunctionIdentifier().equals(
+                                            BuiltinOperators.CHILD.getFunctionIdentifier())) {
+                                boolTestTmp = sfce(BuiltinFunctions.FN_COUNT_1, boolTestTmp);
+                            }
+                        }
+                        ILogicalExpression boolTest = sfce(BuiltinFunctions.FN_BOOLEAN_1, boolTestTmp);
+                        ILogicalExpression condition = sfce(BuiltinOperators.IF_THEN_ELSE, tTest, posTest, boolTest);
+                        if (i++ == 0) {
+                            selectCondition = condition;
+                        } else {
+                            selectCondition = sfce(BuiltinOperators.AND, selectCondition, condition);
+                        }
                     }
+                    SelectOperator select = new SelectOperator(mutable(selectCondition), false, null);
+                    select.getInputs().add(mutable(tCtx.op));
+                    tCtx.op = select;
+                    ctxExpr = vre(tCtx.varScope.lookupVariable(XMLQueryCompilerConstants.DOT_VAR_NAME)
+                            .getLogicalVariable());
                 }
                 if (popScope) {
                     tCtx.popVariableScope();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/7fc0d93b/vxquery-xtest/pom.xml
----------------------------------------------------------------------
diff --git a/vxquery-xtest/pom.xml b/vxquery-xtest/pom.xml
index 6fb2798..9e83fd7 100644
--- a/vxquery-xtest/pom.xml
+++ b/vxquery-xtest/pom.xml
@@ -119,6 +119,7 @@
                      <!-- <argLine>-agentpath:"${yourkit.home}/bin/mac/libyjpagent.jnilib=sampling"</argLine> -->
                     <excludes>
                         <exclude>**/AbstractXQueryTest.java</exclude>
+                        <exclude>**/VXQueryXMarkTest.java</exclude>
                         <exclude>**/XMarkTest.java</exclude>
                         <exclude>**/XQTSTest.java</exclude>
                     </excludes>