Files
fivenode_go/go.mod
Charles KWON OhJun 176f4e5cf5 feat(pgrtl): minimal PostgreSQL client RTL (pgxpool + 4 HB_FUNCs)
PG_OPEN(cDsn)                 -> integer handle, -1 on failure
  PG_CLOSE(nH)                  -> NIL
  PG_QUERY(nH, cSQL [, aArgs])  -> array of { col => val } hashes
  PG_EXEC (nH, cSQL [, aArgs])  -> rows affected, -1 on error
  PG_LAST_ERROR(nH)             -> last error string

Backed by github.com/jackc/pgx/v5/pgxpool, which is already in Five's
indirect dep tree (pgserver uses pgproto3 from the same repo). Pool
limits: MaxConns 8, MinConns 1, 5-min idle. Query timeout is capped at
30s so a runaway query can't pin a goroutine forever.

aArgs uses standard Postgres $1/$2/... placeholders — pgx parameter
binding prevents SQL injection. Never concatenate user input into cSQL.

Smoke-tested with app/pg_test.prg: bad DSN returns -1 cleanly (no
panic), the error path prints the expected fallback message, and the
real round-trip path is wired so setting LABDB_DSN to a live database
exercises SELECT + parameter binding + multi-row return without any
further code change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 11:09:49 +09:00

17 lines
396 B
Modula-2

module fivenode_go
go 1.25.0
require five v0.0.0
require (
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/jackc/pgx/v5 v5.9.2 // indirect
github.com/jackc/puddle/v2 v2.2.2 // indirect
golang.org/x/sync v0.17.0 // indirect
golang.org/x/text v0.29.0 // indirect
)
replace five => ../../fivedev/five