[jboss-svn-commits] JBL Code SVN: r32913 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon May 17 13:29:06 EDT 2010


Author: mark.proctor at jboss.com
Date: 2010-05-17 13:29:06 -0400 (Mon, 17 May 2010)
New Revision: 32913

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
Log:
JBRULES-2240 True modify
-Self Joins had bad index lookup, when seeing if the bucket had changed, if the index value had changed. Use lookup by reference, rather than value.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java	2010-05-17 17:20:53 UTC (rev 32912)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java	2010-05-17 17:29:06 UTC (rev 32913)
@@ -189,7 +189,7 @@
                                                rightTuple.getFactHandle() );
 
         // first check our index (for indexed nodes only) hasn't changed and we are returning the same bucket
-        if ( childLeftTuple != null && leftMemory.isIndexed() && leftTuple != leftMemory.getFirst( childLeftTuple.getLeftParent() ) ) {
+            if ( childLeftTuple != null && leftMemory.isIndexed() && ( leftTuple == null || ( leftTuple.getMemory() != childLeftTuple.getLeftParent().getMemory() ) ) ) {            
             // our index has changed, so delete all the previous propagations
             this.sink.propagateRetractRightTuple( rightTuple,
                                                   context,
@@ -273,7 +273,7 @@
         RightTuple rightTuple = rightMemory.getFirst( leftTuple );
 
         // first check our index (for indexed nodes only) hasn't changed and we are returning the same bucket
-        if ( childLeftTuple != null && rightMemory.isIndexed() && rightTuple != rightMemory.getFirst( childLeftTuple.getRightParent() ) ) {
+        if ( childLeftTuple != null && rightMemory.isIndexed() && ( rightTuple == null || ( rightTuple.getMemory() != childLeftTuple.getRightParent().getMemory() ) ) ) {
             // our index has changed, so delete all the previous propagations
             this.sink.propagateRetractLeftTuple( leftTuple,
                                                  context,



More information about the jboss-svn-commits mailing list