-
Bug
-
Resolution: Done
-
Major
-
None
-
7.67.0.Final, 7.74.1.Final
-
None
-
2023 Week 33-35 (from Aug 14), 2023 Week 36-38 (from Sep 4)
-
4
-
NEW
-
NEW
-
---
-
---
Issue Description:
In non-exec-model,
Where Fact.value1 and value2 are both BigDecimal,
when $fact : Fact( $value1 : value1, $value2 : value2 ) then $value1 = 5; $total = $value1 + $value2;
this rule fails with
Exception executing consequence for rule "Rule 1" in com.example.reproducer: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.math.BigDecimal (java.lang.Integer and java.math.BigDecimal are in module java.base of loader 'bootstrap')
at org.drools.core.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)
at org.drools.core.common.DefaultAgenda.handleException(DefaultAgenda.java:1056)
at org.drools.core.phreak.RuleExecutor.innerFireActivation(RuleExecutor.java:462)
at org.drools.core.phreak.RuleExecutor.fireActivation(RuleExecutor.java:402)
at org.drools.core.phreak.RuleExecutor.fire(RuleExecutor.java:158)
at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:110)
at org.drools.core.concurrent.AbstractRuleEvaluator.internalEvaluateAndFire(AbstractRuleEvaluator.java:33)
at org.drools.core.concurrent.SequentialRuleEvaluator.evaluateAndFire(SequentialRuleEvaluator.java:43)
at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:869)
at org.drools.core.common.DefaultAgenda.internalFireAllRules(DefaultAgenda.java:816)
at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:808)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1341)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1332)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1316)
at com.example.reproducer.DroolsTest.main(DroolsTest.java:25)
Caused by: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.math.BigDecimal (java.lang.Integer and java.math.BigDecimal are in module java.base of loader 'bootstrap') <---------- (*2-4)
at org.mvel2.math.MathProcessor.doOperations(MathProcessor.java:65)
at org.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:146)
at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:38)
at org.mvel2.ast.AssignmentNode.getReducedValueAccelerated(AssignmentNode.java:116)
at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
at org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:115)
at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:111)
at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:105)
at org.mvel2.MVEL.executeExpression(MVEL.java:946)
at org.kie.soup.project.datamodel.commons.util.RawMVELEvaluator.executeExpression(RawMVELEvaluator.java:103)
at org.drools.mvel.expr.MvelEvaluator.internalEvaluate(MvelEvaluator.java:131)
at org.drools.mvel.expr.MvelEvaluator.evaluate(MvelEvaluator.java:115)
at org.drools.mvel.expr.MVELConsequence.evaluate(MVELConsequence.java:94)
at org.drools.core.phreak.RuleExecutor.innerFireActivation(RuleExecutor.java:455)
... 12 more
$value1 = 5; makes $value1 as Integer type.
exec-model has no issue because `5` is coerced to a BigDecimal.
Acceptance Criteria:
- Run without an Exception.
- Likely meet with the exec-model behaviour
- is incorporated by
-
RHDM-1991 Coercion from Interger literal to BigDecimal bind variable
-
- Closed
-