• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Giorgi / DuckDB.NET / 35997125514
88%

Build:
DEFAULT BRANCH: develop
Ran 24 Sep 2026 12:11PM UTC
Jobs 3
Files 82
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Sep 2026 12:07PM UTC coverage: 88.352%. First build
35997125514

push

github

Giorgi
Release the previous result when moving to the next result set

DuckDBDataReader.InitNextReader replaced currentResult without closing
it, so every query result before the last one in a multi-statement
command was never passed to duckdb_destroy_result. DuckDBResult is a
plain struct with no finalizer, so a materialized result leaked all of
its rows. Thirty runs of "SELECT * FROM range(2000000); SELECT 1" that
call NextResult() grew private memory from 79 MB to 594 MB.

Before taking the next query result, the reader now disposes the old
vector readers, then the current chunk, then closes the old result. The
chunk goes first because in materialized mode it points into the
result's memory. With the fix the same runs stay at 79-80 MB. When
NextResult() returns false the last result stays current and Close()
releases it, as before.

A blob Stream from GetStream points directly into DuckDB memory. One
kept from an earlier result set now points at freed memory after
NextResult(). Before, the leak kept blobs longer than 12 bytes alive
by accident.

DuckDBDataReaderMemoryTests.NextResultReleasesPreviousResult measures
process memory over 20 runs and fails above 100 MB of growth; without
the fix it grew by 343 MB. It uses private memory on Windows and the
working set elsewhere, and runs in its own collection with
parallelization disabled so other tests do not skew the measurement.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CzLKjBGAwccxYB6ny5bpmY

1591 of 1889 branches covered (84.22%)

Branch coverage included in aggregate %.

3 of 3 new or added lines in 1 file covered. (100.0%)

3203 of 3537 relevant lines covered (90.56%)

405343.96 hits per line

Jobs
ID Job ID Ran Files Coverage
1 run-windows-latest - 35997125514.1 24 Sep 2026 12:15PM UTC 82
88.35
GitHub Action Run
2 run-ubuntu-latest - 35997125514.2 24 Sep 2026 12:11PM UTC 82
88.35
GitHub Action Run
3 run-macos-14 - 35997125514.3 24 Sep 2026 12:11PM UTC 82
88.35
GitHub Action Run
Source Files on build 35997125514
  • Tree
  • List 82
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #35997125514
  • 1c774a89 on github
  • Prev Build on develop (#35994854641)
  • Next Build on develop (#36116707181)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc