You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by ti...@apache.org on 2014/03/20 23:56:35 UTC

[3/3] git commit: pretty-print path steps

pretty-print path steps


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

Branch: refs/heads/master
Commit: a09d1f5ddccbf2f031424a79e764d220128863b6
Parents: 8cc2837
Author: Till Westmann <we...@gmail.com>
Authored: Wed Mar 19 16:45:32 2014 -0700
Committer: Till Westmann <we...@gmail.com>
Committed: Wed Mar 19 16:45:32 2014 -0700

----------------------------------------------------------------------
 .../java/org/apache/vxquery/cli/VXQuery.java    |  3 +-
 ...ueryLogicalExpressionPrettyPrintVisitor.java | 45 ++++++++++++--------
 .../org/apache/vxquery/types/AnyItemType.java   | 10 ++---
 .../org/apache/vxquery/types/AnyNodeType.java   |  5 +++
 .../org/apache/vxquery/types/AnySimpleType.java |  5 +++
 .../java/org/apache/vxquery/types/AnyType.java  |  5 +++
 .../org/apache/vxquery/types/AttributeType.java | 10 +++++
 .../org/apache/vxquery/types/CommentType.java   |  5 +++
 .../org/apache/vxquery/types/DocumentType.java  |  7 +++
 .../org/apache/vxquery/types/ElementType.java   | 18 +++++---
 .../types/ProcessingInstructionType.java        | 11 +++++
 .../java/org/apache/vxquery/types/TextType.java |  5 +++
 .../xmlquery/query/XMLQueryCompiler.java        |  2 +-
 13 files changed, 101 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/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 7e3abfc..de1f52f 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
@@ -236,9 +236,8 @@ public class VXQuery {
 
                 private StringBuilder appendPrettyPlan(StringBuilder sb, Module module) {
                     try {
-                        StaticContext ctx = module.getCompilerControlBlock().getStaticContext();
                         ILogicalExpressionVisitor<String, Integer> ev = new VXQueryLogicalExpressionPrettyPrintVisitor(
-                                ctx);
+                                module.getModuleContext());
                         LogicalOperatorPrettyPrintVisitor v = new LogicalOperatorPrettyPrintVisitor(ev);
                         PlanPrettyPrinter.printPlan(module.getBody(), sb, v, 0);
                     } catch (AlgebricksException e) {

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/prettyprint/VXQueryLogicalExpressionPrettyPrintVisitor.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/prettyprint/VXQueryLogicalExpressionPrettyPrintVisitor.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/prettyprint/VXQueryLogicalExpressionPrettyPrintVisitor.java
index ccdfb6b..c630837 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/prettyprint/VXQueryLogicalExpressionPrettyPrintVisitor.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/prettyprint/VXQueryLogicalExpressionPrettyPrintVisitor.java
@@ -96,21 +96,7 @@ public class VXQueryLogicalExpressionPrettyPrintVisitor implements ILogicalExpre
     @Override
     public String visitScalarFunctionCallExpression(ScalarFunctionCallExpression expr, Integer indent)
             throws AlgebricksException {
-        assert expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL;
-
-        StringBuilder sb = new StringBuilder();
-
-        FunctionIdentifier fi = expr.getFunctionIdentifier();
-        if (identifiesTypeOperator(fi)) {
-            final ILogicalExpression typeEx = expr.getArguments().get(1).getValue();
-            assert typeEx.getExpressionTag() == LogicalExpressionTag.CONSTANT;
-            SequenceType type = getSequenceType((ConstantExpression) typeEx);
-            sb.append(fi + " <" + type + ">, Args:");
-            appendArgument(sb, expr.getArguments().get(0), indent + 2);
-        } else {
-            appendFunction(sb, expr, indent);
-        }
-        return sb.toString();
+        return appendFunction(new StringBuilder(), expr, indent).toString();
     }
 
     @Override
@@ -133,10 +119,35 @@ public class VXQueryLogicalExpressionPrettyPrintVisitor implements ILogicalExpre
                 || BuiltinOperators.INSTANCE_OF.getFunctionIdentifier().equals(fi);
     }
 
+    protected boolean identifiesPathStep(FunctionIdentifier fi) {
+        return BuiltinOperators.CHILD.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.ATTRIBUTE.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.ANCESTOR.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.ANCESTOR_OR_SELF.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.DESCENDANT.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.DESCENDANT_OR_SELF.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.PARENT.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.FOLLOWING.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.FOLLOWING_SIBLING.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.PRECEDING.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.PRECEDING_SIBLING.getFunctionIdentifier().equals(fi)
+                || BuiltinOperators.SELF.getFunctionIdentifier().equals(fi);
+    }
+
     protected StringBuilder appendFunction(StringBuilder sb, AbstractFunctionCallExpression expr, Integer indent)
             throws AlgebricksException {
-        sb.append("function-call: " + expr.getFunctionIdentifier() + ", Args:");
-        appendArguments(sb, expr.getArguments(), indent + 2);
+        assert expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL;
+        FunctionIdentifier fi = expr.getFunctionIdentifier();
+        if (identifiesTypeOperator(fi) || identifiesPathStep(fi)) {
+            final ILogicalExpression typeEx = expr.getArguments().get(1).getValue();
+            assert typeEx.getExpressionTag() == LogicalExpressionTag.CONSTANT;
+            SequenceType type = getSequenceType((ConstantExpression) typeEx);
+            sb.append(fi + " <" + type + ">, Args:");
+            appendArgument(sb, expr.getArguments().get(0), indent + 2);
+        } else {
+            sb.append("function-call: " + fi + ", Args:");
+            appendArguments(sb, expr.getArguments(), indent + 2);            
+        }
         return sb;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/types/AnyItemType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/AnyItemType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/AnyItemType.java
index 32cd3b0..c6db3ad 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/AnyItemType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/AnyItemType.java
@@ -28,6 +28,11 @@ public final class AnyItemType implements ItemType {
     }
 
     @Override
+    public String toString() {
+        return "item";
+    }
+
+    @Override
     public int hashCode() {
         return AnyItemType.class.hashCode();
     }
@@ -36,9 +41,4 @@ public final class AnyItemType implements ItemType {
     public boolean equals(Object other) {
         return other instanceof AnyItemType;
     }
-
-    @Override
-    public String toString() {
-        return String.valueOf(BuiltinTypeRegistry.INSTANCE.getTypeName(BuiltinTypeConstants.XS_ANY_TYPE_ID));
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/types/AnyNodeType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/AnyNodeType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/AnyNodeType.java
index a40e703..2f8ffce 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/AnyNodeType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/AnyNodeType.java
@@ -28,6 +28,11 @@ public final class AnyNodeType extends AbstractNodeType {
     }
 
     @Override
+    public String toString() {
+        return "node";
+    }
+
+    @Override
     public int hashCode() {
         return AnyNodeType.class.hashCode();
     }

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/types/AnySimpleType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/AnySimpleType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/AnySimpleType.java
index 7781656..bc5044c 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/AnySimpleType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/AnySimpleType.java
@@ -53,6 +53,11 @@ public final class AnySimpleType implements SimpleType {
     }
 
     @Override
+    public String toString() {
+        return String.valueOf(BuiltinTypeRegistry.INSTANCE.getTypeName(getTypeId()));
+    }
+
+    @Override
     public int hashCode() {
         return AnySimpleType.class.hashCode();
     }

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/types/AnyType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/AnyType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/AnyType.java
index b8911fa..19519c2 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/AnyType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/AnyType.java
@@ -53,6 +53,11 @@ public final class AnyType implements ComplexType {
     }
 
     @Override
+    public String toString() {
+        return String.valueOf(BuiltinTypeRegistry.INSTANCE.getTypeName(getTypeId()));
+    }
+
+    @Override
     public int hashCode() {
         return AnyType.class.hashCode();
     }

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/types/AttributeType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/AttributeType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/AttributeType.java
index 69f5e28..0cacd59 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/AttributeType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/AttributeType.java
@@ -42,6 +42,16 @@ public final class AttributeType extends AbstractNodeType {
     }
 
     @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder("attribute(");
+        sb.append(nameTest != null ? nameTest : "*");
+        if (contentType != null) {
+            sb.append(", ").append(contentType);
+        }
+        return sb.append(")").toString();
+    }
+
+    @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/types/CommentType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/CommentType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/CommentType.java
index 8300e0a..4ca4a7c 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/CommentType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/CommentType.java
@@ -28,6 +28,11 @@ public final class CommentType extends AbstractNodeType {
     }
 
     @Override
+    public String toString() {
+        return "comment";
+    }
+
+    @Override
     public int hashCode() {
         return CommentType.class.hashCode();
     }

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/types/DocumentType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/DocumentType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/DocumentType.java
index f06fb71..bc02842 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/DocumentType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/DocumentType.java
@@ -35,6 +35,13 @@ public final class DocumentType extends AbstractNodeType {
     }
 
     @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder("document(");
+        sb.append(elementType != null ? elementType : "*");
+        return sb.append(")").toString();
+    }
+
+    @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/types/ElementType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/ElementType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/ElementType.java
index 343f18b..26dffe9 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/ElementType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/ElementType.java
@@ -47,6 +47,19 @@ public final class ElementType extends AbstractNodeType {
     }
 
     @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder("element(");
+        sb.append(nameTest != null ? nameTest : "*");
+        if (contentType != null) {
+            sb.append(", ").append(contentType);
+        }
+        if (nilled) {
+            sb.append(", nilled");
+        }
+        return sb.append(")").toString();
+    }
+
+    @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
@@ -79,9 +92,4 @@ public final class ElementType extends AbstractNodeType {
             return false;
         return true;
     }
-
-    @Override
-    public String toString() {
-        return "NodeTest(" + nameTest + ", " + contentType + ", nilled = " + nilled + ")";
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/types/ProcessingInstructionType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/ProcessingInstructionType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/ProcessingInstructionType.java
index ce2ebcf..d1f294a 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/ProcessingInstructionType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/ProcessingInstructionType.java
@@ -18,6 +18,8 @@ package org.apache.vxquery.types;
 
 import java.util.Arrays;
 
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
 public final class ProcessingInstructionType extends AbstractNodeType {
     public static final ProcessingInstructionType ANYPI = new ProcessingInstructionType(null);
 
@@ -37,6 +39,15 @@ public final class ProcessingInstructionType extends AbstractNodeType {
     }
 
     @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder("processing-instruction(");
+        if (target != null) {
+            UTF8StringPointable.toString(sb, target, 0);
+        }
+        return sb.append(")").toString();
+    }
+
+    @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/vxquery-core/src/main/java/org/apache/vxquery/types/TextType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/TextType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/TextType.java
index 1e55bda..0709245 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/TextType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/TextType.java
@@ -28,6 +28,11 @@ public final class TextType extends AbstractNodeType {
     }
 
     @Override
+    public String toString() {
+        return "text";
+    }
+
+    @Override
     public int hashCode() {
         return TextType.class.hashCode();
     }

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/a09d1f5d/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 8b10efc..e6a9007 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
@@ -155,7 +155,7 @@ public class XMLQueryCompiler {
         listener.notifyParseResult(moduleNode);
         module = new XMLQueryTranslator(ccb).translateModule(moduleNode);
         pprinter = new LogicalOperatorPrettyPrintVisitor(new VXQueryLogicalExpressionPrettyPrintVisitor(module
-                .getCompilerControlBlock().getStaticContext()));
+                .getModuleContext()));
         compiler = cFactory.createCompiler(module.getBody(), mdProvider, 0);
         listener.notifyTranslationResult(module);
         XMLQueryTypeChecker.typeCheckModule(module);