Skip to content

Fix INET/CIDR column scan through pgtxdb buffer#31

Open
miyataka wants to merge 1 commit into
masterfrom
fix/inet-cidr-scan-conversion
Open

Fix INET/CIDR column scan through pgtxdb buffer#31
miyataka wants to merge 1 commit into
masterfrom
fix/inet-cidr-scan-conversion

Conversation

@miyataka

@miyataka miyataka commented Mar 9, 2026

Copy link
Copy Markdown
Member

Summary

  • pgx returns string for INET/CIDR columns when scanning into interface{}, losing type info in pgtxdb's intermediate row buffer
  • Preserve DatabaseTypeName() from ColumnTypes() in the rows struct, and convert stringnetip.Prefix for INET/CIDR columns in Next()
  • INET: tries ParsePrefix first, falls back to ParseAddr + PrefixFrom(addr, addr.BitLen()) for bare addresses
  • CIDR: parses with ParsePrefix

Background

When pgtxdb buffers rows via rows.read(), all values are scanned into interface{}. pgx returns INET/CIDR as string in this case, unlike when scanning directly into *netip.Prefix. The downstream database/sql.Scan then fails because it cannot convert string to *netip.Prefix.

Test plan

  • TestInetScan covers IPv4 INET, CIDR, and IPv6 INET round-trip through pgtxdb

🤖 Generated with Claude Code

pgx returns inet/cidr values as string when scanning into interface{},
losing the type information needed for database/sql to convert to
netip.Prefix. Preserve column type names from ColumnTypes() and convert
string values back to netip.Prefix for INET/CIDR columns in rows.Next().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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