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());