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

Giorgi / DuckDB.NET / 38724654104
93%

Build:
DEFAULT BRANCH: develop
Ran 15 Oct 2026 11:06AM UTC
Jobs 3
Files 87
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

15 Oct 2026 11:03AM UTC coverage: 92.552% (-0.4%) from 92.941%
38724654104

push

github

Giorgi
Write a nullable result of a typed function as the type under it

A typed scalar function wrote its result with WriteValue<TResult>. For
a nullable result that went through WriteNullable, which is not
inlined and takes the value by reference. And when the JIT inlines the
user's lambda, it builds the int? on the stack with two narrow stores
and reads it back as one 8-byte value to pass it on, a load the
processor cannot forward from those stores. Together about 4 ns per
row on .NET 10: a function returning int? took twice the time of one
returning int.

The loops now test the result type, which the JIT folds, and write a
nullable result through WriteResult: one line per type a function can
return, the value taken out with a cast through object? (folded, no
box) and written as the type under it, or a NULL. Unsafe.As would take
the address of the result and bring the 8-byte load back. Any other
result goes straight to WriteValue as before: the .NET 8 JIT does not
inline the helper into the loops, and an int function routed through
it was 1.2 times slower there.

A million rows, .NET 10: int -> int? 0.46 of the time, int? -> int? with
NULLs 0.63, the int and double controls 0.97 and 0.99. .NET 8: no
change. A new test runs an identity function over all 21 nullable
types and a varargs function, with NULLs; it passes before and after.

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

2052 of 2285 branches covered (89.8%)

Branch coverage included in aggregate %.

40 of 42 new or added lines in 1 file covered. (95.24%)

7 existing lines in 1 file now uncovered.

3776 of 4012 relevant lines covered (94.12%)

1004586.64 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
95.49
-3.78% DuckDB.NET.Data/DuckDBConnection.ScalarFunction.Extensions.cs

Coverage Regressions

Lines Coverage ∆ File
7
75.12
-10.14% DuckDB.NET.Data/DataChunk/Writer/VectorDataWriterBase.cs
Jobs
ID Job ID Ran Files Coverage
1 run-windows-latest - 38724654104.1 15 Oct 2026 11:10AM UTC 87
92.55
GitHub Action Run
2 run-macos-14 - 38724654104.2 15 Oct 2026 11:07AM UTC 87
92.55
GitHub Action Run
3 run-ubuntu-latest - 38724654104.3 15 Oct 2026 11:06AM UTC 87
92.55
GitHub Action Run
Source Files on build 38724654104
  • Tree
  • List 87
  • Changed 2
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #38724654104
  • 80216f98 on github
  • Prev Build on develop (#38554216686)
  • Next Build on develop (#38765362080)
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