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

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

commit 6c920c1e05a0f6330fa98b931f7080be6ce5d877
Author: Jim Jagielski <[email protected]>
AuthorDate: Fri Nov 13 10:06:09 2026 -0500

    odf_docs: mark the DCOUNT without a field gap as fixed
---
 odf_docs/openformula-milestone-g-sequence.md       | 2 +-
 odf_docs/openformula-small-group-semantic-audit.md | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/odf_docs/openformula-milestone-g-sequence.md 
b/odf_docs/openformula-milestone-g-sequence.md
index e792c00458..8a5afa2fec 100644
--- a/odf_docs/openformula-milestone-g-sequence.md
+++ b/odf_docs/openformula-milestone-g-sequence.md
@@ -41,7 +41,7 @@ These items require no production source modification and can 
be completed immed
 
 ## Phase G.2 — Investigation Complete: Criteria Syntax Empty-Cell Fix 
(ScDBCount)
 
-**STATUS: INVESTIGATED — implementation requires build/test environment**
+**STATUS: DONE — DCOUNT and DCOUNTA without a field count every matching 
record; calcval `DB.*` cases**
 
 This is a targeted fix with a clear TODO in source and contained blast radius. 
The root cause is confirmed: `ScQueryCellIterator` ("run through all not empty 
cells") skips empty cells, and `ScDBQueryDataIterator` skips `CELLTYPE_NONE` 
via `default` case at `dociter.cxx:655-657`. Per ODF 1.4 §6.9.3, DCOUNT without 
a field should count ALL matching rows including those with empty result cells.
 
diff --git a/odf_docs/openformula-small-group-semantic-audit.md 
b/odf_docs/openformula-small-group-semantic-audit.md
index 017ee5fc7b..d76b4534ef 100644
--- a/odf_docs/openformula-small-group-semantic-audit.md
+++ b/odf_docs/openformula-small-group-semantic-audit.md
@@ -214,7 +214,7 @@ Name mapping: 
`main/formula/source/core/resource/core_resource.src:227-228` (`DC
 | Wildcards / RegExp | Required | `bRegExp` via `MayBeRegExp` | Yes |
 | Empty criteria field | Field may be omitted (count all matching) | 
`bMissingField` path in ScDBCount | Yes |
 | Criteria range with multiple rows | AND across rows | ScQueryParamBase 
entries | Yes |
-| DCOUNT without field counts all matching records | Required | ScDBCount: 
bMissingField + INTERNAL type → counts all matching | Yes, with TODO limitation 
|
+| DCOUNT without field counts all matching records | Required | ScDBCount: 
bMissingField + INTERNAL type → counts all matching | Yes; the empty-cell 
undercount is fixed, see calcval `DB.DCOUNT.*` |
 | DCOUNT with field counts values in field | Required | ScDBQueryDataIterator 
over field column | Yes |
 
 ### Known Limitations
@@ -227,6 +227,8 @@ Name mapping: 
`main/formula/source/core/resource/core_resource.src:227-228` (`DC
 ```
 This means DCOUNT without a field may undercount when matching records have 
empty cells in the result column.
 
+**Update:** fixed. DCOUNT and DCOUNTA without a field now test every record of 
the range against the criteria (`ScDBQueryDataIterator::CountRecords`). Records 
with an empty cell in a criteria column are counted. With an empty criteria 
cell the count is now all records (`DB.DCOUNT.nf.nocrit` gives 3, was 0). 
Covered by the `DB.*` cases in `calcval-cases14.tsv`.
+
 ### Conformance Classification
 
 **Required by ODF 1.4** — Criteria syntax parsing and database function 
evaluation are implemented. The empty-cell matching limitation in ScDBCount is 
a known gap.

Reply via email to