Skip to content

consider removing usage of go:linkname #34

@majewsky

Description

@majewsky

This package currently uses go:linkname to access database/sql.convertAssign and has earned itself an entry into the "hall of shame" from upstream for that: https://cs.opensource.google/go/go/+/refs/tags/go1.23.4:src/database/sql/convert.go;l=215

However, since Go 1.22.0, there exists a public API that could be used to fix this broken isolation boundary. The behavior of convertAssign is available in sql.Null.Scan() pretty much one-to-one: https://pkg.go.dev/database/sql#Null - The only difference is that it treats nil values differently, but it might be feasible to catch and handle this case explicitly before calling into sql.Null.Scan().

For reference, this is how I replaced another usage of go:linkname convertAssign in a different project: moznion/go-optional#44 - I have not created a PR for this repo since I'm not 100% sure of the semantics involved, but maybe it's similarly straightforward.

Note that using this API requires bumping go.mod to go 1.22, but since any older versions are EOL anyway, that ought to be acceptable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions