Skip to content

feat(nimble): Add per-chunk null count (#992) - #992

Closed
prashantgolash wants to merge 1 commit into
mainfrom
export-D111913795
Closed

feat(nimble): Add per-chunk null count (#992)#992
prashantgolash wants to merge 1 commit into
mainfrom
export-D111913795

Conversation

@prashantgolash

@prashantgolash prashantgolash commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Summary:

The first real per-chunk statistic. Chunk stats are still purely positional;
this records how many nulls each chunk holds, so a later reader can skip chunks
on null-related predicates and we can eventually retire the read-time
byte-peeking row estimates in ChunkedDecoder.

  • The writer counts nulls per chunk during encode, only when chunk stats are
    enabled. The fleet default is off, so no writer pays for this yet.
  • Stored as a new field appended to the existing chunk-stats flatbuffer. Files
    written before this simply lack it, and the reader reports "unknown" rather
    than a wrong value.
  • Reader accessor StreamIndex::chunkNullCount returns the count, or nullopt for
    pre-stats files.

Rationale: https://docs.google.com/document/d/1cTCXje3RkPdhwFGK-FTY5muy4Cky2qnfnP-e_VFkjQA/edit?tab=t.0#heading=h.rpljwjiiglku

Reviewed By: xiaoxmeng

Differential Revision: D111913795

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Meta Open Source bot. label Jul 20, 2026
@meta-codesync

meta-codesync Bot commented Jul 20, 2026

Copy link
Copy Markdown

@prashantgolash has exported this pull request. If you are a Meta employee, you can view the originating Diff in D111913795.

prashantgolash added a commit that referenced this pull request Jul 20, 2026
Summary:
Pull Request resolved: #992

The first real per-chunk statistic. Chunk stats are still purely positional;
this records how many nulls each chunk holds, so a later reader can skip chunks
on null-related predicates and we can eventually retire the read-time
byte-peeking row estimates in ChunkedDecoder.

- The writer counts nulls per chunk during encode, only when chunk stats are
  enabled. The fleet default is off, so no writer pays for this yet.
- Stored as a new field appended to the existing chunk-stats flatbuffer. Files
  written before this simply lack it, and the reader reports "unknown" rather
  than a wrong value.
- Reader accessor StreamIndex::chunkNullCount returns the count, or nullopt for
  pre-stats files.

Differential Revision: D111913795
@meta-codesync meta-codesync Bot changed the title feat(nimble): add per-chunk null count feat(nimble): Add per-chunk null count (#992) Jul 20, 2026
prashantgolash added a commit that referenced this pull request Jul 20, 2026
Summary:
Pull Request resolved: #992

The first real per-chunk statistic. Chunk stats are still purely positional;
this records how many nulls each chunk holds, so a later reader can skip chunks
on null-related predicates and we can eventually retire the read-time
byte-peeking row estimates in ChunkedDecoder.

- The writer counts nulls per chunk during encode, only when chunk stats are
  enabled. The fleet default is off, so no writer pays for this yet.
- Stored as a new field appended to the existing chunk-stats flatbuffer. Files
  written before this simply lack it, and the reader reports "unknown" rather
  than a wrong value.
- Reader accessor StreamIndex::chunkNullCount returns the count, or nullopt for
  pre-stats files.

Differential Revision: D111913795
prashantgolash added a commit that referenced this pull request Jul 20, 2026
Summary:
Pull Request resolved: #992

The first real per-chunk statistic. Chunk stats are still purely positional;
this records how many nulls each chunk holds, so a later reader can skip chunks
on null-related predicates and we can eventually retire the read-time
byte-peeking row estimates in ChunkedDecoder.

- The writer counts nulls per chunk during encode, only when chunk stats are
  enabled. The fleet default is off, so no writer pays for this yet.
- Stored as a new field appended to the existing chunk-stats flatbuffer. Files
  written before this simply lack it, and the reader reports "unknown" rather
  than a wrong value.
- Reader accessor StreamIndex::chunkNullCount returns the count, or nullopt for
  pre-stats files.

Rationale: https://docs.google.com/document/d/1cTCXje3RkPdhwFGK-FTY5muy4Cky2qnfnP-e_VFkjQA/edit?tab=t.0#heading=h.rpljwjiiglku

Differential Revision: D111913795
prashantgolash added a commit that referenced this pull request Jul 26, 2026
Summary:
Pull Request resolved: #992

The first real per-chunk statistic. Chunk stats are still purely positional;
this records how many nulls each chunk holds, so a later reader can skip chunks
on null-related predicates and we can eventually retire the read-time
byte-peeking row estimates in ChunkedDecoder.

- The writer counts nulls per chunk during encode, only when chunk stats are
  enabled. The fleet default is off, so no writer pays for this yet.
- Stored as a new field appended to the existing chunk-stats flatbuffer. Files
  written before this simply lack it, and the reader reports "unknown" rather
  than a wrong value.
- Reader accessor StreamIndex::chunkNullCount returns the count, or nullopt for
  pre-stats files.

Rationale: https://docs.google.com/document/d/1cTCXje3RkPdhwFGK-FTY5muy4Cky2qnfnP-e_VFkjQA/edit?tab=t.0#heading=h.rpljwjiiglku

Reviewed By: xiaoxmeng

Differential Revision: D111913795
prashantgolash added a commit that referenced this pull request Jul 26, 2026
Summary:
Pull Request resolved: #992

The first real per-chunk statistic. Chunk stats are still purely positional;
this records how many nulls each chunk holds, so a later reader can skip chunks
on null-related predicates and we can eventually retire the read-time
byte-peeking row estimates in ChunkedDecoder.

- The writer counts nulls per chunk during encode, only when chunk stats are
  enabled. The fleet default is off, so no writer pays for this yet.
- Stored as a new field appended to the existing chunk-stats flatbuffer. Files
  written before this simply lack it, and the reader reports "unknown" rather
  than a wrong value.
- Reader accessor StreamIndex::chunkNullCount returns the count, or nullopt for
  pre-stats files.

Rationale: https://docs.google.com/document/d/1cTCXje3RkPdhwFGK-FTY5muy4Cky2qnfnP-e_VFkjQA/edit?tab=t.0#heading=h.rpljwjiiglku

Reviewed By: xiaoxmeng

Differential Revision: D111913795
meta-codesync Bot pushed a commit that referenced this pull request Jul 27, 2026
Summary:

The first real per-chunk statistic. Chunk stats are still purely positional;
this records how many nulls each chunk holds, so a later reader can skip chunks
on null-related predicates and we can eventually retire the read-time
byte-peeking row estimates in ChunkedDecoder.

- The writer counts nulls per chunk during encode, only when chunk stats are
  enabled. The fleet default is off, so no writer pays for this yet.
- Stored as a new field appended to the existing chunk-stats flatbuffer. Files
  written before this simply lack it, and the reader reports "unknown" rather
  than a wrong value.
- Reader accessor StreamIndex::chunkNullCount returns the count, or nullopt for
  pre-stats files.


Rationale: https://docs.google.com/document/d/1cTCXje3RkPdhwFGK-FTY5muy4Cky2qnfnP-e_VFkjQA/edit?tab=t.0#heading=h.rpljwjiiglku

Reviewed By: xiaoxmeng

Differential Revision: D111913795
@meta-codesync
meta-codesync Bot force-pushed the export-D111913795 branch from 0dfa251 to 651c7a3 Compare July 27, 2026 05:47
Summary:

The first real per-chunk statistic. Chunk stats are still purely positional;
this records how many nulls each chunk holds, so a later reader can skip chunks
on null-related predicates and we can eventually retire the read-time
byte-peeking row estimates in ChunkedDecoder.

- The writer counts nulls per chunk during encode, only when chunk stats are
  enabled. The fleet default is off, so no writer pays for this yet.
- Stored as a new field appended to the existing chunk-stats flatbuffer. Files
  written before this simply lack it, and the reader reports "unknown" rather
  than a wrong value.
- Reader accessor StreamIndex::chunkNullCount returns the count, or nullopt for
  pre-stats files.


Rationale: https://docs.google.com/document/d/1cTCXje3RkPdhwFGK-FTY5muy4Cky2qnfnP-e_VFkjQA/edit?tab=t.0#heading=h.rpljwjiiglku

Reviewed By: xiaoxmeng

Differential Revision: D111913795
@meta-codesync
meta-codesync Bot force-pushed the export-D111913795 branch from 651c7a3 to a67beb2 Compare July 27, 2026 05:51
@meta-codesync meta-codesync Bot closed this in c0c6b7d Jul 27, 2026
@meta-codesync meta-codesync Bot added the Merged label Jul 27, 2026
@meta-codesync

meta-codesync Bot commented Jul 27, 2026

Copy link
Copy Markdown

This pull request has been merged in c0c6b7d.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot. Merged meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants