CodeSampleX

Beispiel

github.com/jackc/pgx/v5 v5.10.0: pgx.AppendRows, pgx.RowToAddrOfStructByPos, pgx.RowToStructByPos

Verifiziertes Beispiel für golang github.com/jackc/pgx/v5 v5.10.0: pgx.AppendRows, pgx.RowToAddrOfStructByPos, pgx.RowToStructByPos. Der Vertrag lief auf go…

sha256:773ced191e4a3a9eedb1f839a9951cfa01b72aa1ab0900b2e23710cd719a5b74

Dieses Netzwerk bietet eine Sache: ein Sample, das baut. Es hat es in einer Sandbox ausgeführt und die signierte Quittung behalten. Es bewertet nichts und garantiert nichts — ob derselbe Code bei Ihnen baut, hat es nicht gemessen. Wie viele verschiedene Signaturschlüssel eine bestandene Vertragsquittung eingereicht haben. Einer ist der Autor allein; mehr als einer heißt, jemand anderes hat es auch gebaut. Ein Schlüssel wird selbst erzeugt und hat keine registrierte Identität dahinter — gezählt werden Schlüssel, nicht Personen. MIT-0

Ausführungsbelege

Die deklarierte Umgebung und die signierten Läufe stehen getrennt, damit Sie genau sehen, was dieses Sample ausgeführt hat und wo.

Beleggrundlage
Signierter Vertrag bestanden
Verifizierungsbelege
1
Signaturschlüssel, die es gebaut haben
1
Deklarierte Umgebung go 1.26 linux 24 · ubuntu · glibc 2.39 x64 go 1.26 go go 1 wsl

Umgebungen der Verifizierungsläufe

Umgebung Contract Stufen Lauf
go 1.26 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · golang@1
2026-08-19

Fall

HOW
Ziel
verify pgx.RowToStructByPos and pgx.AppendRows in pkg:golang/github.com/jackc/pgx/v5@v5.10.0
Pakete
Symbole
  • pgx.AppendRows
  • pgx.RowToAddrOfStructByPos
  • pgx.RowToStructByPos
Umgebung
go 1.26.6
Erstellt
2026-08-19T11:33:03Z

Contract

  1. pgx.RowToStructByPos maps positional row columns to public struct fields in sequential order
  2. pgx.RowToAddrOfStructByPos scans and returns pointers to allocated structs
  3. pgx.RowToStructByPos ignores struct fields tagged with db:"-"
  4. pgx.RowToStructByPos ignores unexported struct fields when matching column positions
  5. pgx.AppendRows appends scanned rows into an existing pre-allocated slice
  6. pgx.AppendRows automatically closes rows upon completion
  7. pgx.RowToStructByPos returns an error when column count does not match exported struct field count
  8. pgx.AppendRows returns an error when row iteration encounters an error

Dateien

  • PROMPT.md
  • csx.json
  • go.mod
  • go.sum
  • main.go
  • spec.json
  • test/contract.go

Quellartefakt herunterladen (tar.gz)

Quelltext

PROMPT.md
Clean-room public code sample — generation instructions

Write a brand-new, minimal, self-contained code sample in this clean-room directory.
Do not copy, paraphrase, or reference any existing project source. Work only from this spec.

A csx.json manifest scaffold already exists. Do not recreate it from memory. Preserve its case.goal, packages and symbols; fill its empty case.contract with exact assertions and correct its environment, commands and verifierAdapter for the files you generate.

Goal: verify pgx.RowToStructByPos and pgx.AppendRows in pkg:golang/github.com/jackc/pgx/v5@v5.10.0
Kind: HOW

Use EXACTLY these public packages and versions:
  - pkg:golang/github.com/jackc/pgx/v5@v5.10.0
Demonstrate these symbols/APIs:
  - pgx.AppendRows
  - pgx.RowToAddrOfStructByPos
  - pgx.RowToStructByPos
Constraints:
  - executionContext: node
Required runtime conditions:
  - ecosystem: npm
  - language: javascript
  - moduleSystem: cjs
  - packageManager: npm@11.8.0
  - runtime: node@22.22.2

Rules:
  - One focused purpose; the smallest project that proves the goal.
  - Include a contract test (test/contract.*) that runs OFFLINE and exits 0 exactly when the goal behavior works.
  - Pin every dependency with a lockfile so resolution is reproducible.
  - No secrets, credentials, or tokens. No real URLs (only example.com or localhost). No absolute paths.
  - No personal names, emails, company names, or project identifiers of any kind.
  - No binaries and no generated output (node_modules, dist, target, venv, .git, .env).
  - Keep it under 200 files and 256KB packed.
csx.json
{"case":{"caseId":"case:sha256:0cd9bdfb745f54c427aa0bfd3e16bd96a8de5fd2870cde4b90a511620cd6ed26","contract":["pgx.RowToStructByPos maps positional row columns to public struct fields in sequential order","pgx.RowToAddrOfStructByPos scans and returns pointers to allocated structs","pgx.RowToStructByPos ignores struct fields tagged with db:\"-\"","pgx.RowToStructByPos ignores unexported struct fields when matching column positions","pgx.AppendRows appends scanned rows into an existing pre-allocated slice","pgx.AppendRows automatically closes rows upon completion","pgx.RowToStructByPos returns an error when column count does not match exported struct field count","pgx.AppendRows returns an error when row iteration encounters an error"],"goal":"verify pgx.RowToStructByPos and pgx.AppendRows in pkg:golang/github.com/jackc/pgx/v5@v5.10.0","kind":"HOW","packages":["pkg:golang/github.com/jackc/pgx/v5@v5.10.0"],"schemaVersion":1,"symbols":["pgx.AppendRows","pgx.RowToAddrOfStructByPos","pgx.RowToStructByPos"]},"contractCommand":["go","run","./test"],"environment":{"arch":"x64","distro":"ubuntu","ecosystem":"golang","language":"go","libc":"glibc","libcVersion":"2.39","os":"linux","osVersionBucket":"24","packageManager":"go","packageManagerVersion":"1.26.6","runtime":"go","runtimeVersion":"1.26.6","schemaVersion":1,"virtualization":"wsl"},"license":"MIT-0","packages":["pkg:golang/github.com/jackc/pgx/v5@v5.10.0"],"schemaVersion":1,"symbols":["pgx.AppendRows","pgx.RowToAddrOfStructByPos","pgx.RowToStructByPos"],"verifierAdapter":"golang@1"}
go.mod
module sample

go 1.26.6

require github.com/jackc/pgx/v5 v5.10.0

require (
	github.com/jackc/pgpassfile v1.0.0 // indirect
	github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
	golang.org/x/text v0.29.0 // indirect
)
go.sum
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.10.0 h1:VhSvgU2jSli8o3AqIEOTJr7rZwAEUVo4E4XhR94Zfr0=
github.com/jackc/pgx/v5 v5.10.0/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4=
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
main.go
package main

import (
	"context"
	"fmt"

	"github.com/jackc/pgx/v5"
)

type InventoryItem struct {
	ID    int64
	SKU   string
	Qty   int
	Price float64
}

func main() {
	ctx := context.Background()
	_ = ctx

	fmt.Println("pgx v5 positional row scanning and appending demonstrated:")
	fmt.Println(" - pgx.RowToStructByPos[InventoryItem]")
	fmt.Println(" - pgx.RowToAddrOfStructByPos[InventoryItem]")
	fmt.Println(" - pgx.AppendRows")

	// Ensure symbols are referenced
	var _ pgx.RowToFunc[InventoryItem] = pgx.RowToStructByPos[InventoryItem]
	var _ pgx.RowToFunc[*InventoryItem] = pgx.RowToAddrOfStructByPos[InventoryItem]
}
spec.json
{
  "schemaVersion": 1,
  "goal": "verify pgx.RowToStructByPos and pgx.AppendRows in pkg:golang/github.com/jackc/pgx/v5@v5.10.0",
  "kind": "HOW",
  "packages": [
    "pkg:golang/github.com/jackc/pgx/v5@v5.10.0"
  ],
  "symbols": [
    "pgx.AppendRows",
    "pgx.RowToAddrOfStructByPos",
    "pgx.RowToStructByPos"
  ],
  "constraints": {
    "executionContext": "node"
  },
  "runtimeConditions": {
    "ecosystem": "npm",
    "language": "javascript",
    "moduleSystem": "cjs",
    "packageManager": "npm@11.8.0",
    "runtime": "node@22.22.2"
  }
}
test/contract.go
package main

import (
	"errors"
	"fmt"
	"os"
	"reflect"

	"github.com/jackc/pgx/v5"
	"github.com/jackc/pgx/v5/pgconn"
)

type mockRows struct {
	fields []pgconn.FieldDescription
	rows   [][]any
	idx    int
	closed bool
	err    error
}

func newMockRows(fieldNames []string, rows [][]any) *mockRows {
	fields := make([]pgconn.FieldDescription, len(fieldNames))
	for i, name := range fieldNames {
		fields[i] = pgconn.FieldDescription{Name: name}
	}
	return &mockRows{
		fields: fields,
		rows:   rows,
		idx:    -1,
	}
}

func (m *mockRows) Close() {
	m.closed = true
}

func (m *mockRows) Err() error {
	return m.err
}

func (m *mockRows) CommandTag() pgconn.CommandTag {
	return pgconn.NewCommandTag(fmt.Sprintf("SELECT %d", len(m.rows)))
}

func (m *mockRows) FieldDescriptions() []pgconn.FieldDescription {
	return m.fields
}

func (m *mockRows) Next() bool {
	if m.closed || m.err != nil {
		return false
	}
	m.idx++
	if m.idx < len(m.rows) {
		return true
	}
	m.Close()
	return false
}

func (m *mockRows) Scan(dest ...any) error {
	if m.idx < 0 || m.idx >= len(m.rows) {
		return errors.New("scan called outside row iteration")
	}
	if len(dest) == 1 {
		if rs, ok := dest[0].(pgx.RowScanner); ok {
			return rs.ScanRow(m)
		}
	}
	row := m.rows[m.idx]
	if len(dest) != len(row) {
		return fmt.Errorf("expected %d destination arguments, got %d", len(row), len(dest))
	}
	for i, val := range row {
		if dest[i] == nil {
			continue
		}
		target := reflect.ValueOf(dest[i])
		if target.Kind() != reflect.Ptr || target.IsNil() {
			return fmt.Errorf("destination argument %d is not a non-nil pointer", i)
		}
		elem := target.Elem()
		if val == nil {
			elem.Set(reflect.Zero(elem.Type()))
			continue
		}
		v := reflect.ValueOf(val)
		if v.Type().AssignableTo(elem.Type()) {
			elem.Set(v)
		} else if v.Type().ConvertibleTo(elem.Type()) {
			elem.Set(v.Convert(elem.Type()))
		} else {
			return fmt.Errorf("cannot assign %v (%T) to %s", val, val, elem.Type())
		}
	}
	return nil
}

func (m *mockRows) Values() ([]any, error) {
	if m.idx < 0 || m.idx >= len(m.rows) {
		return nil, errors.New("values called outside row iteration")
	}
	row := m.rows[m.idx]
	res := make([]any, len(row))
	copy(res, row)
	return res, nil
}

func (m *mockRows) RawValues() [][]byte {
	return nil
}

func (m *mockRows) Conn() *pgx.Conn {
	return nil
}

type Product struct {
	ID     int64
	Name   string
	Price  float64
	Active bool
}

type ProductWithIgnored struct {
	ID      int64
	Name    string
	Ignored string `db:"-"`
	Price   float64
}

type ProductWithPrivate struct {
	ID         int64
	Name       string
	unexported string
	Price      float64
}

func main() {
	// 1. assert pgx.RowToStructByPos maps positional row columns to public struct fields in sequential order
	r1 := newMockRows([]string{"c1", "c2", "c3", "c4"}, [][]any{
		{int64(101), "Alpha", 12.50, true},
		{int64(102), "Beta", 45.00, false},
	})
	products, err1 := pgx.CollectRows(r1, pgx.RowToStructByPos[Product])
	if err1 != nil {
		fmt.Fprintf(os.Stderr, "FAIL: RowToStructByPos failed: %v\n", err1)
		os.Exit(1)
	}
	if len(products) != 2 || products[0].ID != 101 || products[0].Name != "Alpha" || products[0].Price != 12.50 || !products[0].Active ||
		products[1].ID != 102 || products[1].Name != "Beta" || products[1].Price != 45.00 || products[1].Active {
		fmt.Fprintf(os.Stderr, "FAIL: RowToStructByPos output mismatch: %+v\n", products)
		os.Exit(1)
	}

	// 2. assert pgx.RowToAddrOfStructByPos scans and returns pointers to allocated structs
	r2 := newMockRows([]string{"c1", "c2", "c3", "c4"}, [][]any{
		{int64(201), "Gamma", 99.99, true},
	})
	productPtrs, err2 := pgx.CollectRows(r2, pgx.RowToAddrOfStructByPos[Product])
	if err2 != nil {
		fmt.Fprintf(os.Stderr, "FAIL: RowToAddrOfStructByPos failed: %v\n", err2)
		os.Exit(1)
	}
	if len(productPtrs) != 1 || productPtrs[0] == nil || productPtrs[0].ID != 201 || productPtrs[0].Name != "Gamma" || productPtrs[0].Price != 99.99 || !productPtrs[0].Active {
		fmt.Fprintf(os.Stderr, "FAIL: RowToAddrOfStructByPos output mismatch: %+v\n", productPtrs)
		os.Exit(1)
	}

	// 3. assert pgx.RowToStructByPos ignores struct fields tagged with db:"-"
	r3 := newMockRows([]string{"c1", "c2", "c3"}, [][]any{
		{int64(301), "Delta", 7.25},
	})
	ignoredItems, err3 := pgx.CollectRows(r3, pgx.RowToStructByPos[ProductWithIgnored])
	if err3 != nil {
		fmt.Fprintf(os.Stderr, "FAIL: RowToStructByPos with db:\"-\" failed: %v\n", err3)
		os.Exit(1)
	}
	if len(ignoredItems) != 1 || ignoredItems[0].ID != 301 || ignoredItems[0].Name != "Delta" || ignoredItems[0].Ignored != "" || ignoredItems[0].Price != 7.25 {
		fmt.Fprintf(os.Stderr, "FAIL: RowToStructByPos with db:\"-\" mismatch: %+v\n", ignoredItems)
		os.Exit(1)
	}

	// 4. assert pgx.RowToStructByPos ignores unexported struct fields when matching column positions
	r4 := newMockRows([]string{"c1", "c2", "c3"}, [][]any{
		{int64(401), "Epsilon", 18.00},
	})
	privateItems, err4 := pgx.CollectRows(r4, pgx.RowToStructByPos[ProductWithPrivate])
	if err4 != nil {
		fmt.Fprintf(os.Stderr, "FAIL: RowToStructByPos with unexported field failed: %v\n", err4)
		os.Exit(1)
	}
	if len(privateItems) != 1 || privateItems[0].ID != 401 || privateItems[0].Name != "Epsilon" || privateItems[0].Price != 18.00 || privateItems[0].unexported != "" {
		fmt.Fprintf(os.Stderr, "FAIL: RowToStructByPos with unexported field mismatch: %+v\n", privateItems)
		os.Exit(1)
	}

	// 5. assert pgx.AppendRows appends scanned rows into an existing pre-allocated slice
	initialList := []Product{
		{ID: 1, Name: "Base", Price: 5.00, Active: true},
	}
	r5 := newMockRows([]string{"c1", "c2", "c3", "c4"}, [][]any{
		{int64(2), "Appended1", 15.00, true},
		{int64(3), "Appended2", 25.00, false},
	})
	appendedList, err5 := pgx.AppendRows(initialList, r5, pgx.RowToStructByPos[Product])
	if err5 != nil {
		fmt.Fprintf(os.Stderr, "FAIL: AppendRows failed: %v\n", err5)
		os.Exit(1)
	}
	if len(appendedList) != 3 || appendedList[0].ID != 1 || appendedList[1].ID != 2 || appendedList[2].ID != 3 {
		fmt.Fprintf(os.Stderr, "FAIL: AppendRows output mismatch: %+v\n", appendedList)
		os.Exit(1)
	}

	// 6. assert pgx.AppendRows automatically closes rows upon completion
	if !r5.closed {
		fmt.Fprintf(os.Stderr, "FAIL: AppendRows did not close rows on completion\n")
		os.Exit(1)
	}

	// 7. assert pgx.RowToStructByPos returns an error when column count does not match exported struct field count
	r7 := newMockRows([]string{"c1", "c2"}, [][]any{
		{int64(501), "TooFewCols"},
	})
	_, err7 := pgx.CollectRows(r7, pgx.RowToStructByPos[Product])
	if err7 == nil {
		fmt.Fprintf(os.Stderr, "FAIL: expected error for column count mismatch, got nil\n")
		os.Exit(1)
	}

	// 8. assert pgx.AppendRows returns an error when row iteration encounters an error
	simulatedErr := errors.New("simulated database read failure")
	r8 := &mockRows{
		fields: []pgconn.FieldDescription{{Name: "c1"}, {Name: "c2"}, {Name: "c3"}, {Name: "c4"}},
		rows:   [][]any{{int64(601), "FailRow", 50.00, true}},
		idx:    -1,
		err:    simulatedErr,
	}
	_, err8 := pgx.AppendRows([]Product{}, r8, pgx.RowToStructByPos[Product])
	if !errors.Is(err8, simulatedErr) {
		fmt.Fprintf(os.Stderr, "FAIL: expected AppendRows to return simulated error, got: %v\n", err8)
		os.Exit(1)
	}

	// Type assertion check for interface compliance
	var _ pgx.RowToFunc[Product] = pgx.RowToStructByPos[Product]
	var _ pgx.RowToFunc[*Product] = pgx.RowToAddrOfStructByPos[Product]

	fmt.Println("PASS: all pgx.RowToStructByPos and pgx.AppendRows contract assertions satisfied")
}

Ursprungs-Seeder

anonym