[Mulgara-svn] r1748 - trunk/src/jar/tuples/java/org/mulgara/store/tuples

pag at mulgara.org pag at mulgara.org
Fri Jul 3 17:31:09 UTC 2009


Author: pag
Date: 2009-07-03 10:31:08 -0700 (Fri, 03 Jul 2009)
New Revision: 1748

Modified:
   trunk/src/jar/tuples/java/org/mulgara/store/tuples/UnboundJoin.java
Log:
More reasonably assumption about the expected value for the size of a join. This needs a major overhaul

Modified: trunk/src/jar/tuples/java/org/mulgara/store/tuples/UnboundJoin.java
===================================================================
--- trunk/src/jar/tuples/java/org/mulgara/store/tuples/UnboundJoin.java	2009-07-03 17:26:51 UTC (rev 1747)
+++ trunk/src/jar/tuples/java/org/mulgara/store/tuples/UnboundJoin.java	2009-07-03 17:31:08 UTC (rev 1748)
@@ -31,7 +31,6 @@
 
 // Java 2 standard packages
 import java.util.*;
-import java.math.BigInteger;
 
 // Third party packages
 import org.apache.log4j.Logger;
@@ -357,15 +356,22 @@
       return operands[0].getRowUpperBound();
     }
 
-    BigInteger rowCount = BigInteger.valueOf(operands[0].getRowUpperBound());
-
+    /*
+      BigInteger rowCount = BigInteger.valueOf(operands[0].getRowUpperBound());
+  
+      for (int i = 1; i < operands.length; i++) {
+        rowCount = rowCount.multiply(BigInteger.valueOf(operands[i].getRowUpperBound()));
+        if (rowCount.bitLength() > 63)
+          return Long.MAX_VALUE;
+      }
+  
+      return rowCount.longValue();
+      */
+    long result = operands[0].getRowUpperBound();
     for (int i = 1; i < operands.length; i++) {
-      rowCount = rowCount.multiply(BigInteger.valueOf(operands[i].getRowUpperBound()));
-      if (rowCount.bitLength() > 63)
-        return Long.MAX_VALUE;
+      result = Math.min(result, operands[i].getRowUpperBound());
     }
-
-    return rowCount.longValue();
+    return result;
   }
 
   public boolean isColumnEverUnbound(int column) throws TuplesException {




More information about the Mulgara-svn mailing list