You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by vi...@apache.org on 2012/07/07 23:34:26 UTC

svn commit: r1358647 - in /incubator/vxquery/branches/vxquery_algebricks: vxquery-cli/src/main/java/org/apache/vxquery/cli/ vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/ vxquery-core/src/main/java/org/apache/vxquery/context/ vxquer...

Author: vinayakb
Date: Sat Jul  7 21:34:26 2012
New Revision: 1358647

URL: http://svn.apache.org/viewvc?rev=1358647&view=rev
Log:
Added context factories

Added:
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryGlobalDataFactory.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContextImplFactory.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/IDynamicContextFactory.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/IStaticContextFactory.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/RootStaticContextFactory.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImplFactory.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/ThinStaticContextImplFactory.java
Removed:
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DataspaceContext.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DataspaceContextFactory.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DataspaceContextImpl.java
Modified:
    incubator/vxquery/branches/vxquery_algebricks/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DelegatingStaticContextImpl.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContext.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContextImpl.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/RootStaticContextImpl.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContext.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/ThinStaticContextImpl.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java?rev=1358647&r1=1358646&r2=1358647&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java Sat Jul  7 21:34:26 2012
@@ -25,6 +25,9 @@ import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.vxquery.compiler.CompilerControlBlock;
+import org.apache.vxquery.compiler.algebricks.VXQueryGlobalDataFactory;
+import org.apache.vxquery.context.DynamicContext;
+import org.apache.vxquery.context.DynamicContextImpl;
 import org.apache.vxquery.context.RootStaticContextImpl;
 import org.apache.vxquery.context.StaticContextImpl;
 import org.apache.vxquery.xmlquery.ast.ModuleNode;
@@ -149,8 +152,14 @@ public class VXQuery {
                     continue;
                 }
 
+                Module module = compiler.getModule();
+                JobSpecification js = module.getHyracksJobSpecification();
+
+                DynamicContext dCtx = new DynamicContextImpl(module.getModuleContext());
+                js.setGlobalJobDataFactory(new VXQueryGlobalDataFactory(dCtx.createFactory()));
+
                 for (int i = 0; i < opts.repeatExec; ++i) {
-                    runInProcess(compiler.getModule().getHyracksJobSpecification(), result);
+                    runInProcess(js, result);
                 }
             }
         } finally {

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryGlobalDataFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryGlobalDataFactory.java?rev=1358647&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryGlobalDataFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryGlobalDataFactory.java Sat Jul  7 21:34:26 2012
@@ -0,0 +1,21 @@
+package org.apache.vxquery.compiler.algebricks;
+
+import org.apache.vxquery.context.IDynamicContextFactory;
+
+import edu.uci.ics.hyracks.api.context.IHyracksJobletContext;
+import edu.uci.ics.hyracks.api.job.IGlobalJobDataFactory;
+
+public class VXQueryGlobalDataFactory implements IGlobalJobDataFactory {
+    private static final long serialVersionUID = 1L;
+
+    private final IDynamicContextFactory dcf;
+
+    public VXQueryGlobalDataFactory(IDynamicContextFactory dcf) {
+        this.dcf = dcf;
+    }
+
+    @Override
+    public Object createGlobalJobData(IHyracksJobletContext ctx) {
+        return dcf.createDynamicContext(ctx);
+    }
+}
\ No newline at end of file

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DelegatingStaticContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DelegatingStaticContextImpl.java?rev=1358647&r1=1358646&r2=1358647&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DelegatingStaticContextImpl.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DelegatingStaticContextImpl.java Sat Jul  7 21:34:26 2012
@@ -57,11 +57,6 @@ public abstract class DelegatingStaticCo
     }
 
     @Override
-    public DataspaceContext getDataspaceContext() {
-        return parent.getDataspaceContext();
-    }
-
-    @Override
     public String getDefaultCollation() {
         return parent.getDefaultCollation();
     }
@@ -222,6 +217,11 @@ public abstract class DelegatingStaticCo
     }
 
     @Override
+    public SequenceType lookupSequenceType(int code) {
+        return parent.lookupSequenceType(code);
+    }
+
+    @Override
     public int lookupSequenceType(SequenceType type) {
         return parent.lookupSequenceType(type);
     }

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContext.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContext.java?rev=1358647&r1=1358646&r2=1358647&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContext.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContext.java Sat Jul  7 21:34:26 2012
@@ -16,17 +16,21 @@
 */
 package org.apache.vxquery.context;
 
+import javax.xml.namespace.QName;
+
 import edu.uci.ics.hyracks.data.std.api.IPointable;
 import edu.uci.ics.hyracks.data.std.api.IValueReference;
 
 public interface DynamicContext {
+    public IDynamicContextFactory createFactory();
+
     public StaticContext getStaticContext();
 
     public void getCurrentDateTime(IPointable value);
 
     public void setCurrentDateTime(IValueReference value);
 
-    public void bindVariable(XQueryVariable var, IValueReference vReference);
+    public void bindVariable(QName var, IValueReference vReference);
 
-    public void lookupVariable(XQueryVariable var, IPointable value);
+    public void lookupVariable(QName var, IPointable value);
 }
\ No newline at end of file

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContextImpl.java?rev=1358647&r1=1358646&r2=1358647&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContextImpl.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContextImpl.java Sat Jul  7 21:34:26 2012
@@ -16,14 +16,30 @@
 */
 package org.apache.vxquery.context;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
 import edu.uci.ics.hyracks.data.std.api.IPointable;
 import edu.uci.ics.hyracks.data.std.api.IValueReference;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.ArrayBackedValueStorage;
 
 public class DynamicContextImpl implements DynamicContext {
     private StaticContext sCtx;
 
+    private final Map<QName, ArrayBackedValueStorage> variables;
+
+    private final ArrayBackedValueStorage currentDateTime;
+
     public DynamicContextImpl(StaticContext sCtx) {
         this.sCtx = sCtx;
+        currentDateTime = new ArrayBackedValueStorage();
+        variables = new HashMap<QName, ArrayBackedValueStorage>();
+    }
+
+    public IDynamicContextFactory createFactory() {
+        return DynamicContextImplFactory.createInstance(this);
     }
 
     @Override
@@ -33,17 +49,35 @@ public class DynamicContextImpl implemen
 
     @Override
     public void setCurrentDateTime(IValueReference value) {
+        currentDateTime.assign(value);
     }
 
     @Override
     public void getCurrentDateTime(IPointable value) {
+        value.set(currentDateTime);
     }
 
     @Override
-    public void bindVariable(XQueryVariable var, IValueReference value) {
+    public void bindVariable(QName var, IValueReference value) {
+        ArrayBackedValueStorage abvs = variables.get(var);
+        if (abvs == null) {
+            abvs = new ArrayBackedValueStorage();
+            variables.put(var, abvs);
+        }
+        abvs.assign(value);
     }
 
     @Override
-    public void lookupVariable(XQueryVariable var, IPointable value) {
+    public void lookupVariable(QName var, IPointable value) {
+        ArrayBackedValueStorage abvs = variables.get(var);
+        if (abvs == null) {
+            value.set(null, -1, -1);
+        } else {
+            value.set(abvs);
+        }
+    }
+
+    Map<QName, ArrayBackedValueStorage> getVariableMap() {
+        return variables;
     }
 }
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContextImplFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContextImplFactory.java?rev=1358647&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContextImplFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DynamicContextImplFactory.java Sat Jul  7 21:34:26 2012
@@ -0,0 +1,73 @@
+package org.apache.vxquery.context;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import edu.uci.ics.hyracks.api.context.IHyracksJobletContext;
+import edu.uci.ics.hyracks.data.std.primitive.VoidPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.ArrayBackedValueStorage;
+
+class DynamicContextImplFactory implements IDynamicContextFactory {
+    private static final long serialVersionUID = 1L;
+
+    private final IStaticContextFactory scFactory;
+
+    private final byte[] currentDateTime;
+
+    private final QName[] variableNames;
+
+    private final int[] valueOffsets;
+
+    private final byte[] variableValues;
+
+    private DynamicContextImplFactory(IStaticContextFactory scFactory, byte[] currentDateTime, QName[] variableNames,
+            int[] valueOffsets, byte[] variableValues) {
+        this.scFactory = scFactory;
+        this.currentDateTime = currentDateTime;
+        this.variableNames = variableNames;
+        this.valueOffsets = valueOffsets;
+        this.variableValues = variableValues;
+    }
+
+    @Override
+    public DynamicContext createDynamicContext(IHyracksJobletContext ctx) {
+        StaticContext sCtx = scFactory.createStaticContext();
+        DynamicContextImpl dCtx = new DynamicContextImpl(sCtx);
+        VoidPointable vp = new VoidPointable();
+        vp.set(currentDateTime, 0, currentDateTime.length);
+        dCtx.setCurrentDateTime(vp);
+        for (int i = 0; i < variableNames.length; ++i) {
+            QName vName = variableNames[i];
+            int vStart = i == 0 ? 0 : valueOffsets[i - 1];
+            int vEnd = valueOffsets[i];
+            vp.set(variableValues, vStart, vEnd - vStart);
+            dCtx.bindVariable(vName, vp);
+        }
+        return dCtx;
+    }
+
+    static IDynamicContextFactory createInstance(DynamicContextImpl dCtx) {
+        IStaticContextFactory scFactory = dCtx.getStaticContext().createFactory();
+        VoidPointable vp = new VoidPointable();
+        dCtx.getCurrentDateTime(vp);
+        byte[] currentDateTime = Arrays.copyOfRange(vp.getByteArray(), vp.getStartOffset(), vp.getLength());
+
+        Map<QName, ArrayBackedValueStorage> vMap = dCtx.getVariableMap();
+        int nVars = vMap.size();
+        QName[] variableNames = new QName[nVars];
+        int[] valueOffsets = new int[nVars];
+        ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
+        int i = 0;
+        for (Map.Entry<QName, ArrayBackedValueStorage> e : vMap.entrySet()) {
+            variableNames[i] = e.getKey();
+            abvs.append(e.getValue());
+            valueOffsets[i] = abvs.getLength();
+            ++i;
+        }
+
+        return new DynamicContextImplFactory(scFactory, currentDateTime, variableNames, valueOffsets,
+                Arrays.copyOfRange(abvs.getByteArray(), abvs.getStartOffset(), abvs.getLength()));
+    }
+}
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/IDynamicContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/IDynamicContextFactory.java?rev=1358647&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/IDynamicContextFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/IDynamicContextFactory.java Sat Jul  7 21:34:26 2012
@@ -0,0 +1,9 @@
+package org.apache.vxquery.context;
+
+import java.io.Serializable;
+
+import edu.uci.ics.hyracks.api.context.IHyracksJobletContext;
+
+public interface IDynamicContextFactory extends Serializable {
+    public DynamicContext createDynamicContext(IHyracksJobletContext ctx);
+}
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/IStaticContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/IStaticContextFactory.java?rev=1358647&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/IStaticContextFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/IStaticContextFactory.java Sat Jul  7 21:34:26 2012
@@ -0,0 +1,7 @@
+package org.apache.vxquery.context;
+
+import java.io.Serializable;
+
+public interface IStaticContextFactory extends Serializable {
+    public StaticContext createStaticContext();
+}
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/RootStaticContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/RootStaticContextFactory.java?rev=1358647&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/RootStaticContextFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/RootStaticContextFactory.java Sat Jul  7 21:34:26 2012
@@ -0,0 +1,15 @@
+package org.apache.vxquery.context;
+
+public class RootStaticContextFactory implements IStaticContextFactory {
+    private static final long serialVersionUID = 1L;
+
+    public static final IStaticContextFactory INSTANCE = new RootStaticContextFactory();
+
+    private RootStaticContextFactory() {
+    }
+
+    @Override
+    public StaticContext createStaticContext() {
+        return RootStaticContextImpl.INSTANCE;
+    }
+}
\ No newline at end of file

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/RootStaticContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/RootStaticContextImpl.java?rev=1358647&r1=1358646&r2=1358647&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/RootStaticContextImpl.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/RootStaticContextImpl.java Sat Jul  7 21:34:26 2012
@@ -213,4 +213,9 @@ public final class RootStaticContextImpl
         checkSealed();
         super.setOrderingModeProperty(orderingMode);
     }
+
+    @Override
+    public IStaticContextFactory createFactory() {
+        return RootStaticContextFactory.INSTANCE;
+    }
 }
\ No newline at end of file

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContext.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContext.java?rev=1358647&r1=1358646&r2=1358647&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContext.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContext.java Sat Jul  7 21:34:26 2012
@@ -30,8 +30,6 @@ import org.apache.vxquery.types.SchemaTy
 import org.apache.vxquery.types.SequenceType;
 
 public interface StaticContext {
-    public DataspaceContext getDataspaceContext();
-
     public StaticContext getParent();
 
     public String lookupNamespaceUri(String prefix);
@@ -76,6 +74,8 @@ public interface StaticContext {
 
     public void registerSchemaType(QName name, SchemaType type);
 
+    public SequenceType lookupSequenceType(int code);
+
     public int lookupSequenceType(SequenceType type);
 
     public int encodeSequenceType(SequenceType type);
@@ -160,4 +160,6 @@ public interface StaticContext {
         NOPRESERVE_INHERIT,
         NOPRESERVE_NOINHERIT
     }
+
+    public IStaticContextFactory createFactory();
 }
\ No newline at end of file

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java?rev=1358647&r1=1358646&r2=1358647&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java Sat Jul  7 21:34:26 2012
@@ -58,6 +58,8 @@ public class StaticContextImpl implement
 
     protected final Map<SequenceType, Integer> sequenceTypeMap;
 
+    protected final List<SequenceType> sequenceTypeList;
+
     protected final Map<QName, AttributeType> attributeDeclarationMap;
 
     protected final Map<QName, ElementType> elementDeclarationMap;
@@ -98,6 +100,7 @@ public class StaticContextImpl implement
         schemaImports = new ArrayList<Pair<String, List<String>>>();
         schemaTypeMap = new LinkedHashMap<QName, SchemaType>();
         sequenceTypeMap = new HashMap<SequenceType, Integer>();
+        sequenceTypeList = new ArrayList<SequenceType>();
         attributeDeclarationMap = new LinkedHashMap<QName, AttributeType>();
         elementDeclarationMap = new LinkedHashMap<QName, ElementType>();
         options = new LinkedHashMap<QName, String>();
@@ -110,11 +113,6 @@ public class StaticContextImpl implement
     }
 
     @Override
-    public DataspaceContext getDataspaceContext() {
-        return parent.getDataspaceContext();
-    }
-
-    @Override
     public String lookupNamespaceUri(String prefix) {
         if (namespaceMap.containsKey(prefix)) {
             return namespaceMap.get(prefix);
@@ -364,11 +362,21 @@ public class StaticContextImpl implement
     }
 
     @Override
+    public SequenceType lookupSequenceType(int code) {
+        int maxParentTypeCode = parent == null ? 0 : parent.getMaxSequenceTypeCode();
+        if (code >= maxParentTypeCode) {
+            return sequenceTypeList.get(code - maxParentTypeCode);
+        }
+        return parent.lookupSequenceType(code);
+    }
+
+    @Override
     public int encodeSequenceType(SequenceType type) {
         int code = lookupSequenceType(type);
         if (code == -1) {
             code = typeCounter++;
             sequenceTypeMap.put(type, code);
+            sequenceTypeList.add(type);
             return code;
         }
         if (sequenceTypeMap.containsKey(type)) {
@@ -593,6 +601,10 @@ public class StaticContextImpl implement
         return null;
     }
 
+    public IStaticContextFactory createFactory() {
+        return StaticContextImplFactory.createInstance(this);
+    }
+
     private abstract class ConcatenatingIterator<T> implements Iterator<T> {
         Iterator<T> currListIter = getCurrentIterator();
         Iterator<T> parentIter = null;

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImplFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImplFactory.java?rev=1358647&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImplFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImplFactory.java Sat Jul  7 21:34:26 2012
@@ -0,0 +1,21 @@
+package org.apache.vxquery.context;
+
+class StaticContextImplFactory implements IStaticContextFactory {
+    private static final long serialVersionUID = 1L;
+
+    private final IStaticContextFactory parentSCFactory;
+
+    private StaticContextImplFactory(IStaticContextFactory parentSCFactory) {
+        this.parentSCFactory = parentSCFactory;
+    }
+
+    @Override
+    public StaticContext createStaticContext() {
+        return new StaticContextImpl(parentSCFactory.createStaticContext());
+    }
+
+    static IStaticContextFactory createInstance(StaticContextImpl staticContextImpl) {
+        IStaticContextFactory parentSCFactory = staticContextImpl.getParent().createFactory();
+        return new StaticContextImplFactory(parentSCFactory);
+    }
+}
\ No newline at end of file

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/ThinStaticContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/ThinStaticContextImpl.java?rev=1358647&r1=1358646&r2=1358647&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/ThinStaticContextImpl.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/ThinStaticContextImpl.java Sat Jul  7 21:34:26 2012
@@ -42,4 +42,9 @@ public class ThinStaticContextImpl exten
     public void registerNamespaceUri(String prefix, String uri) {
         namespaceMap.put(prefix, uri);
     }
+
+    @Override
+    public IStaticContextFactory createFactory() {
+        return ThinStaticContextImplFactory.createInstance(this);
+    }
 }
\ No newline at end of file

Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/ThinStaticContextImplFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/ThinStaticContextImplFactory.java?rev=1358647&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/ThinStaticContextImplFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/ThinStaticContextImplFactory.java Sat Jul  7 21:34:26 2012
@@ -0,0 +1,21 @@
+package org.apache.vxquery.context;
+
+class ThinStaticContextImplFactory implements IStaticContextFactory {
+    private static final long serialVersionUID = 1L;
+
+    private final IStaticContextFactory delegateSCFactory;
+
+    private ThinStaticContextImplFactory(IStaticContextFactory delegateSCFactory) {
+        this.delegateSCFactory = delegateSCFactory;
+    }
+
+    @Override
+    public StaticContext createStaticContext() {
+        return new ThinStaticContextImpl(delegateSCFactory.createStaticContext());
+    }
+
+    static IStaticContextFactory createInstance(ThinStaticContextImpl staticContextImpl) {
+        IStaticContextFactory delegateSCFactory = staticContextImpl.getParent().createFactory();
+        return new ThinStaticContextImplFactory(delegateSCFactory);
+    }
+}
\ No newline at end of file

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java?rev=1358647&r1=1358646&r2=1358647&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java Sat Jul  7 21:34:26 2012
@@ -52,8 +52,11 @@ import edu.uci.ics.hyracks.algebricks.co
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController;
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 import edu.uci.ics.hyracks.algebricks.data.ISerializerDeserializerProvider;
+import edu.uci.ics.hyracks.algebricks.data.ITypeTraitProvider;
 import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
+import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
 import edu.uci.ics.hyracks.api.job.JobSpecification;
+import edu.uci.ics.hyracks.data.std.primitive.VoidPointable;
 
 public class XMLQueryCompiler {
     private final XQueryCompilationListener listener;
@@ -80,6 +83,12 @@ public class XMLQueryCompiler {
                 return null;
             }
         });
+        builder.setTypeTraitProvider(new ITypeTraitProvider() {
+            @Override
+            public ITypeTraits getTypeTrait(Object type) {
+                return VoidPointable.TYPE_TRAITS;
+            }
+        });
         builder.setPrinterProvider(VXQueryPrinterFactoryProvider.INSTANCE);
         builder.setExpressionRuntimeProvider(new VXQueryExpressionRuntimeProvider());
         builder.setComparatorFactoryProvider(new VXQueryComparatorFactoryProvider());