Skip to content

docs(compute): attach the NewDatumWithoutOwning doc comment and say what Release does to it - #1320

Open
singhpratech wants to merge 1 commit into
apache:mainfrom
singhpratech:docs-compute-datum-without-owning
Open

singhpratech wants to merge 1 commit into
apache:mainfrom
singhpratech:docs-compute-datum-without-owning

Conversation

@singhpratech

Copy link
Copy Markdown
Contributor

Rationale for this change

The comment above NewDatumWithoutOwning is separated from the declaration by a blank line, so
go doc and pkg.go.dev show the function with no documentation at all. The text itself has a
sentence with no main clause and ends in stray characters (convenience function.+-). The
function's one hazard, a Release call that releases the caller's reference (#1298), is the thing
a reader most needs to see and currently cannot.

What changes are included in this PR?

The comment now sits on the declaration and states the contract: the returned Datum owns nothing,
the caller keeps the value alive for as long as the Datum is in use and must not call Release on
it, and since the Datum is an ordinary ArrayDatum/ChunkedDatum/RecordDatum/TableDatum/
ScalarDatum, a Release call compiles and releases the caller's reference, which with a C-backed
allocator or cdata-imported buffers frees memory under a live value. It ends by pointing at
NewDatum for the owning case.

Are these changes tested?

Documentation only. go doc ./arrow/compute NewDatumWithoutOwning renders the two paragraphs;
gofmt and go vet ./arrow/compute/ are clean.

Are there any user-facing changes?

Documentation only. Whether a non-owning Datum should refuse Release (a no-op, a distinct
type, or a panic) is a separate decision and stays with #1298; this change does not close it.

…hat Release does to it

The comment above NewDatumWithoutOwning was separated from the declaration
by a blank line, so go doc and pkg.go.dev show the function with no
documentation at all. The text itself had a broken sentence and ended in
stray characters ("convenience function.+-").

The comment now sits on the declaration and states the contract: the
Datum owns nothing, the caller keeps the value alive and must not call
Release on the Datum, and a Release call releases the caller's reference,
which with a C-backed allocator or cdata-imported buffers frees memory
under a live value.

Documentation only. Whether a non-owning Datum should refuse Release is
left to apache#1298.
singhpratech added a commit to singhpratech/ArrowMetal that referenced this pull request Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant