Skip to content

Commit

Permalink
[DROOLS-1386] fix delete of a subnetwork tuple from a query node (apa…
Browse files Browse the repository at this point in the history
  • Loading branch information
mariofusco committed Jul 24, 2017
1 parent 0638b44 commit 2a6dbb3
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 23 deletions.
Expand Up @@ -14,6 +14,21 @@
*/
package org.drools.compiler.integrationtests;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import javax.xml.bind.JAXBContext;

import org.drools.compiler.Address;
import org.drools.compiler.Cheese;
import org.drools.compiler.CommonTestMethodBase;
Expand Down Expand Up @@ -55,21 +70,6 @@
import org.kie.api.runtime.rule.ViewChangedEventListener;
import org.kie.internal.utils.KieHelper;

import javax.xml.bind.JAXBContext;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

public class QueryTest extends CommonTestMethodBase {

@org.junit.Rule
Expand Down Expand Up @@ -1263,4 +1263,33 @@ public void testNotExistingDeclarationInQuery() {
Results results = ks.newKieBuilder( kfs ).buildAll().getResults();
assertFalse( results.getMessages().isEmpty() );
}

@Test
public void testQueryInSubnetwork() {
// DROOLS-1386
String str = "query myquery(Integer $i)\n" +
" $i := Integer()\n" +
"end\n" +
"\n" +
"rule R when\n" +
" String()\n" +
" accumulate (myquery($i;);\n" +
" $result_count : count(1)\n" +
" )\n" +
" eval($result_count > 0)\n" +
"then\n" +
"end\n\n";

KieSession ksession = new KieHelper().addContent( str, ResourceType.DRL ).build().newKieSession();

FactHandle iFH = ksession.insert( 1 );
FactHandle sFH = ksession.insert( "" );

ksession.fireAllRules();

ksession.update( iFH, 1 );
ksession.delete( sFH );

ksession.fireAllRules();
}
}
Expand Up @@ -427,14 +427,18 @@ public void rowRemoved(final RuleImpl rule,
TupleSets<LeftTuple> leftTuples = query.getResultLeftTupleSets();
LeftTuple childLeftTuple = rightTuple.getFirstChild();

switch (childLeftTuple.getStagedTypeForQueries()) {
// handle clash with already staged entries
case LeftTuple.INSERT:
leftTuples.removeInsert(childLeftTuple);
return;
case LeftTuple.UPDATE:
leftTuples.removeUpdate(childLeftTuple);
break;
if (childLeftTuple.isStagedOnRight()) {
( (SubnetworkTuple) childLeftTuple ).moveStagingFromRightToLeft();
} else {
switch ( childLeftTuple.getStagedTypeForQueries() ) {
// handle clash with already staged entries
case LeftTuple.INSERT:
leftTuples.removeInsert( childLeftTuple );
return;
case LeftTuple.UPDATE:
leftTuples.removeUpdate( childLeftTuple );
break;
}
}

leftTuples.addDelete(childLeftTuple);
Expand Down

0 comments on commit 2a6dbb3

Please sign in to comment.