You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2014/03/15 18:23:36 UTC

svn commit: r1577904 - /jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java

Author: andy
Date: Sat Mar 15 17:23:35 2014
New Revision: 1577904

URL: http://svn.apache.org/r1577904
Log:
Better temporary fix for JENA-652.
If the filter expressions are completely handled by both (union) branches, 
then optimization is safe.


Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java?rev=1577904&r1=1577903&r2=1577904&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java Sat Mar 15 17:23:35 2014
@@ -441,13 +441,21 @@ public class TransformFilterPlacement ex
     }
     
     private Placement placeUnion(ExprList exprs, OpUnion input) {
-        // JENA-653, temporary fix.
-        if ( true ) return null ;
-        
         // Push into both sides.
         Op left = input.getLeft() ;
-        left = transformOp(exprs, left) ;
+        Placement pLeft = transform(exprs, left) ;
+        
         Op right = input.getRight() ;
+        Placement pRight = transform(exprs, right) ;
+        
+        // JENA-652 Temporary fix
+        if ( pLeft != null && ! pLeft.unplaced.isEmpty() )
+            return null ;
+        if ( pRight != null && ! pRight.unplaced.isEmpty() )
+            return null ;
+
+        // Old code.
+        left = transformOp(exprs, left) ;
         right = transformOp(exprs, right) ;
         
         Op op2 = OpUnion.create(left, right) ;