This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch openformula
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit 41da3628f9e49de34afa10b0cae93bbdde1389bc
Author: Pedro Giffuni <[email protected]>
AuthorDate: Wed Nov 11 17:30:05 2026 -0500

    docs: G.1 gap-status cleanup — STRING_MAXLEN and ScDBCount empty-cell 
investigation
    
    Updated F-GAP-008: STRING_MAXLEN defined in main/tools/inc/tools/string.hxx 
(0x7FFFFFFF with STRING32, 0xFFFF without; default 65,535 exceeds ODF 1.4 
32,767 minimum). Updated F-GAP-004: ScDBCount empty-cell TODO traced — 
ScQueryCellIterator and ScDBQueryDataIterator both skip empty cells; DCOUNT 
without field undercounts per ODF 1.4 §6.9.3. No production source modified; 
documentation/gap-status only.
---
 openformula-small-group-semantic-gaps.tsv | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/openformula-small-group-semantic-gaps.tsv 
b/openformula-small-group-semantic-gaps.tsv
index acbb1a35af..8ab89c47ef 100644
--- a/openformula-small-group-semantic-gaps.tsv
+++ b/openformula-small-group-semantic-gaps.tsv
@@ -2,11 +2,11 @@ GapID ODF Clause      Requirement     AOO Implementation 
Location     Current Behavior        Classi
 F-GAP-001      §6.13.7 COUNTA counts non-empty cells; empty string "" is not 
blank     main/sc/source/core/tool/interpr1.cxx:3834 (ScCount2 via 
IterateParameters(ifCOUNT2) at :3487)  COUNTA counts scalar string args 
including ""; counts cells where eCellType != CELLTYPE_NONE && != 
CELLTYPE_NOTE; matrix case counts ALL elements including strings; formula cells 
returning "" counted as non-blank based on CELLTYPE_FORMULA (result not 
checked)     Required by ODF 1.4; implementation-defined for formula cel [...]
 F-GAP-002      §6.13.8 COUNTBLANK counts empty cells; cell returning "" 
blankness is implementation-defined    
main/sc/source/core/tool/interpr1.cxx:4714 (ScCountEmptyCells)  COUNTBLANK uses 
cell-type-only check: eCellType != CELLTYPE_NONE && != CELLTYPE_NOTE → not 
blank; truly empty CELLTYPE_NONE cells are blank; formula cells returning "" 
treated as not blank (CELLTYPE_FORMULA != CELLTYPE_NONE); scalar "" argument 
not supported (only references)    Implementation-defined (§6.13.8); differs 
from po [...]
 F-GAP-003      §6.14.6 INDEX single-argument row vector returns error (no 
row-vector shortcut) main/sc/source/core/tool/interpr1.cxx:7419 (ScIndex); 
Milestone A commit bb58e28fc2 removed bRowArray shortcut  INDEX(H1:L1;3) 
returns error (nRow > 1 on single row → PushIllegalArgument); INDEX(H1:L1;;3) 
works (column-only); INDEX on matrix/vector handled per ODF 1.4    Required by 
ODF 1.4; fixed in Milestone A; regression risk for legacy ODF 1.3 documents 
High    Regression-test against existing document [...]
-F-GAP-004      §4.11.11        Criteria syntax supported in database functions 
main/sc/source/core/tool/interpr1.cxx:6621 (GetDBParams), :6760 (DBIterator); 
queryparam.cxx:106-144 (operator prefix parsing)  Criteria operators parsed: 
<>, <=, <, >=, >, =; bQueryByString via IsNumberFormat; bRegExp via 
MayBeRegExp; DBCount has TODO about empty-cell matching 
(interpr1.cxx:6838-6845) Required by ODF 1.4; parser and evaluation present; 
empty-cell matching limitation documented   Medium  Verify criteria match [...]
+F-GAP-004      §4.11.11        Criteria syntax supported in database functions 
main/sc/source/core/tool/interpr1.cxx:6621 (GetDBParams), :6760 (DBIterator); 
queryparam.cxx:106-144 (operator prefix parsing)  Criteria operators parsed: 
<>, <=, <, >=, >, =; bQueryByString via IsNumberFormat; bRegExp via 
MayBeRegExp; DBCount empty-cell TODO at :6838-6845 — ScQueryCellIterator ("run 
through all not empty cells") skips empty cells; ScDBQueryDataIterator also 
skips CELLTYPE_NONE via default case at dociter. [...]
 F-GAP-005      §4.11.11        Database criteria: text criteria, wildcards, 
empty criteria     main/sc/source/core/tool/queryparam.cxx:106-144 (operator 
parsing); interpr1.cxx:6745-6748 (bQueryByString/bRegExp)     Text criteria 
supported via bQueryByString; wildcard/RegExp via MayBeRegExp; empty criteria 
cell (svMissing) handled as missing field   Required by ODF 1.4; partially 
verified Medium  Verify wildcard and text criteria matching      calcval: no 
dedicated wildcard/empty-criteria cases — not covered
 F-GAP-006      §3.7    Formula length at least 1024 characters No explicit 
formula length limit found in main/sc or main/formula source        No 
MAXFORMULA or formula-size enforcement found; FormulaCompiler parses token 
arrays dynamically        Unverifiable (static); absence of hard limit doesn't 
prove conformance  Low     Runtime test with 1024+ char formula    calcval: 
BL-001-1024chars (1026-char expression) — UNVERIFIED
 F-GAP-007      §3.7    At least 30 parameters per function where prototype 
permits     main/sc/source/core/inc/interpre.hxx:897-927 (MustHaveParamCount 
family)        Per-function parameter count enforced via 
MustHaveParamCount/MustHaveParamCountMin; no global 30-param cap found        
Unverifiable (static); no 30-param cap found    Low     Runtime test with 
30-parameter function call    calcval: BL-002-30params (MAX with 30 params) — 
UNVERIFIED
-F-GAP-008      §3.7    Strings up to 32767 ASCII characters    
main/sc/source/core/inc/interpre.hxx:930-936 (CheckStringResultLen vs 
STRING_MAXLEN); STRING_MAXLEN definition not located in sc headers        
String overflow checked via CheckStringResultLen against STRING_MAXLEN; exact 
STRING_MAXLEN value not confirmed in sc module    Unverifiable (static); 
STRING_MAXLEN definition not located     Low     Locate STRING_MAXLEN 
definition; runtime test with 32767-char string    calcval: BL-003-32767chars — 
UNVERIFIED
+F-GAP-008      §3.7    Strings up to 32767 ASCII characters    
main/tools/inc/tools/string.hxx:110-120 (STRING_MAXLEN definition); 
interpr1.cxx:930-936 (CheckStringResultLen) STRING_MAXLEN = 0x7FFFFFFF (2^31-1) 
with STRING32, 0xFFFF (65,535) without; STRING32 not enabled by default → 
default STRING_MAXLEN = 65,535 > 32,767 ODF 1.4 minimum; CheckStringResultLen 
enforces limit at string concatenation      Meets ODF 1.4 minimum (65,535 >= 
32,767) statically; runtime-unverified Low     Runtime test with 32767-c [...]
 F-GAP-009      §3.7    At least 7 nesting levels of functions  No nesting 
depth limit found in FormulaCompiler or ScInterpreter source No MAXNEST or 
recursion depth enforcement found Unverifiable (static); absence of limit 
doesn't prove conformance       Low     Runtime test with 7+ nested functions   
calcval: BL-004-7nesting (7 nested IFs) — UNVERIFIED
 F-GAP-010      §5.5    Operator precedence per Table 1 
main/formula/source/core/api/FormulaCompiler.cxx (parser grammar: UnionLine → 
IntersectionLine → RangeLine → UnaryLine → binary ops)    Parser structure 
exists (RangeLine/IntersectionLine/UnionLine); precedence not verified at 
runtime      Unverifiable (static); parser infrastructure present    Medium  
Runtime precedence test (2+3*4=14, 2^3^2=512)   calcval: SYN-005-precedence, 
SYN-005-power — UNVERIFIED
 F-GAP-011      §5.8    Reference syntax supported      
main/sc/source/core/tool/compiler.cxx (PopDoubleRef/PopSingleRef)       Cell 
and range reference handling present in compiler   Unverifiable (static); 
implementation present   Low     Runtime reference test  calcval: SYN-008-ref, 
SYN-008-range — UNVERIFIED

Reply via email to