[Mulgara-svn] r961 - trunk/src/jar/resolver/java/org/mulgara/resolver

pag at mulgara.org pag at mulgara.org
Fri May 30 23:50:40 UTC 2008


Author: pag
Date: 2008-05-30 16:50:39 -0700 (Fri, 30 May 2008)
New Revision: 961

Modified:
   trunk/src/jar/resolver/java/org/mulgara/resolver/AppendAggregateTuples.java
Log:
now handling fewer variables occuring due to duplicate variables in a constraint

Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/AppendAggregateTuples.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/AppendAggregateTuples.java	2008-05-30 23:49:01 UTC (rev 960)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/AppendAggregateTuples.java	2008-05-30 23:50:39 UTC (rev 961)
@@ -135,9 +135,12 @@
 
     // Prep variable list
     Variable[] tupleVars = this.tuples.getVariables();
+    // the size of variableList may be larger due to repeated variables,
+    // while the size of the tuples may be larger due to aggregates
+    int uniqueTupleVarLen = Math.min(variableList.size(), tupleVars.length);
 
     Set newVariableList = new LinkedHashSet();
-    for (int i = 0; i < tupleVars.length; i++) {
+    for (int i = 0; i < uniqueTupleVarLen; i++) {
       assert variableList.contains(tupleVars[i]);
 
       newVariableList.add(tupleVars[i]);
@@ -148,7 +151,7 @@
       columnIsAggregate[i] = false;
     }
     if (logger.isDebugEnabled()) {
-      logger.debug("" + hashCode() + " tupleVars.length = " + tupleVars.length);
+      logger.debug("" + hashCode() + " tupleVars.length = " + tupleVars.length + " unique vars = " + uniqueTupleVarLen);
     }
 
     // Calculate the rest of the variable list
@@ -157,14 +160,13 @@
     for (int i = 0; i < variableList.size(); i++) {
       Object element = variableList.get(i);
       if (element instanceof Count) {
-        columnAggregateIndex[tupleVars.length +
-            aggregateIndex] = aggregateIndex;
+        columnAggregateIndex[uniqueTupleVarLen + aggregateIndex] = aggregateIndex;
         if (logger.isDebugEnabled()) {
           logger.debug("" + hashCode() + " columnAggregateIndex[" +
-              tupleVars.length + aggregateIndex + "] = " + aggregateIndex);
+              uniqueTupleVarLen + aggregateIndex + "] = " + aggregateIndex);
         }
-        newVariableList.add(((Count) element).getVariable());
-        columnIsAggregate[tupleVars.length + aggregateIndex] = true;
+        newVariableList.add(((Count)element).getVariable());
+        columnIsAggregate[uniqueTupleVarLen + aggregateIndex] = true;
         aggregateIndex++;
 
         Query query = ((Count)element).getQuery();




More information about the Mulgara-svn mailing list