[Bug 61116] New: Formula evaluation fails when using matrix addition within index function call with RuntimeException

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

[Bug 61116] New: Formula evaluation fails when using matrix addition within index function call with RuntimeException

Bugzilla from bugzilla@apache.org
https://bz.apache.org/bugzilla/show_bug.cgi?id=61116

            Bug ID: 61116
           Summary: Formula evaluation fails when using matrix addition
                    within index function call with RuntimeException
           Product: POI
           Version: 3.16-FINAL
          Hardware: PC
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XSSF
          Assignee: [hidden email]
          Reporter: [hidden email]
  Target Milestone: ---

Created attachment 35003
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=35003&action=edit
Example workbook showing the problematic formulas

The formula evaluation fails when using following formula:
  "=INDEX(A+B,1,1)"
where A and B are both matrices. I've attached an example workbook that shows
the problem (matrix-addition-within-index-function.xlsx). Simply use the
FormulaEvaluator to evaluate the cell 'sample2'!B2 and you will get the
following exception:

"java.lang.RuntimeException: Incomplete code - cannot handle first arg of type
(org.apache.poi.ss.formula.eval.NumberEval)
        at
org.apache.poi.ss.formula.functions.Index.convertFirstArg(Index.java:106)
        at org.apache.poi.ss.formula.functions.Index.evaluate(Index.java:75)
        at org.apache.poi.ss.formula.functions.Index.evaluate(Index.java:116)
        at
org.apache.poi.ss.formula.OperationEvaluatorFactory.evaluate(OperationEvaluatorFactory.java:132)
        at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateFormula(WorkbookEvaluator.java:550)
        at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:317)
        at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateReference(WorkbookEvaluator.java:750)
        at
org.apache.poi.ss.formula.SheetRefEvaluator.getEvalForCell(SheetRefEvaluator.java:48)"

The currently implementation assumes that the maxtrix addition always returns a
single double value which is fine for maxtrix formulas like "=A+B". In this
case it does the same and so "A+B" is evaluated to a sum of single values from
each matrix. As soon this resulting double value is passed to the index
function it will fail with the exception.

How to fix?
I guess the method TwoOperandNumericOperation.evaluate(int, int, ValueEval,
ValueEval) need to distiguish whether the expected output of the operation
(affects not only AddPtg) is a single value or still an area.

--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[Bug 61116] Formula evaluation fails when using matrix addition within index function call with RuntimeException

Bugzilla from bugzilla@apache.org
https://bz.apache.org/bugzilla/show_bug.cgi?id=61116

Dominik Stadler <[hidden email]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 OS|                            |All

--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[Bug 61116] Formula evaluation fails when using matrix addition within index function call with RuntimeException

Bugzilla from bugzilla@apache.org
In reply to this post by Bugzilla from bugzilla@apache.org
https://bz.apache.org/bugzilla/show_bug.cgi?id=61116

Dominik Stadler <[hidden email]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |NEEDINFO

--- Comment #1 from Dominik Stadler <[hidden email]> ---
Can you check if the changes done in bug 61469 solve this?

--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[Bug 61116] Formula evaluation fails when using matrix addition within index function call with RuntimeException

Bugzilla from bugzilla@apache.org
In reply to this post by Bugzilla from bugzilla@apache.org
https://bz.apache.org/bugzilla/show_bug.cgi?id=61116

PJ Fanning <[hidden email]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEEDINFO                    |RESOLVED
         Resolution|---                         |FIXED

--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[Bug 61116] Formula evaluation fails when using matrix addition within index function call with RuntimeException

Bugzilla from bugzilla@apache.org
In reply to this post by Bugzilla from bugzilla@apache.org
https://bz.apache.org/bugzilla/show_bug.cgi?id=61116

Mario <[hidden email]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|FIXED                       |---
             Status|RESOLVED                    |REOPENED

--- Comment #2 from Mario <[hidden email]> ---
I just checked with 3.16.final with applied patch of bug 61469 - the result is
still the same exception with same error message

java.lang.RuntimeException: Incomplete code - cannot handle first arg of type
(org.apache.poi.ss.formula.eval.NumberEval)
        at
org.apache.poi.ss.formula.functions.Index.convertFirstArg(Index.java:107)
        at org.apache.poi.ss.formula.functions.Index.evaluate(Index.java:75)
        at org.apache.poi.ss.formula.functions.Index.evaluate(Index.java:116)
        at
org.apache.poi.ss.formula.OperationEvaluatorFactory.evaluate(OperationEvaluatorFactory.java:139)
        at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateFormula(WorkbookEvaluator.java:524)
        at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:291)
        at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:233)
        at
org.apache.poi.xssf.usermodel.BaseXSSFFormulaEvaluator.evaluateFormulaCellValue(BaseXSSFFormulaEvaluator.java:65)
        at
org.apache.poi.ss.formula.BaseFormulaEvaluator.evaluate(BaseFormulaEvaluator.java:101)

--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[Bug 61116] Formula evaluation fails when using matrix addition within index function call with RuntimeException

Bugzilla from bugzilla@apache.org
In reply to this post by Bugzilla from bugzilla@apache.org
https://bz.apache.org/bugzilla/show_bug.cgi?id=61116

--- Comment #3 from Mario <[hidden email]> ---
Created attachment 35466
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=35466&action=edit
Patch with JUnit testcase for example workbook

--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[Bug 61116] Formula evaluation fails when using matrix addition within index function call with RuntimeException

Bugzilla from bugzilla@apache.org
In reply to this post by Bugzilla from bugzilla@apache.org
https://bz.apache.org/bugzilla/show_bug.cgi?id=61116

Yegor Kozlov <[hidden email]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #4 from Yegor Kozlov <[hidden email]> ---
Fixed in r1819596

I added your file in our collection of test cases.

The main difficulty was to identify when addition should operate on matrices vs
single operands. Normally, the array mode is used if the formula was saved as
an array, i.e. using Ctrl-Shift-Enter. The INDEX function seems to be special,
if evaluates the first arguments as a matrix even if the formula itself is
single-value.

--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]