pgxpool.NewWithConfig does not connect eagerly, so NewCluster succeeds
even without a running database. Added a Ping check after cluster
creation to reliably skip tests when the database cannot be reached.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- slog.go: SlogLogger adapts *slog.Logger to dbx.Logger interface
- scan.go: Collect[T] and CollectOne[T] generic helpers using pgx.RowToStructByName
- cluster.go: slow query logging via Config.SlowQueryThreshold (Warn level in queryEnd)
- stats.go: PoolStats with Cluster.Stats() aggregating pool stats across all nodes
- config.go/node.go: NodeConfig.Tracer passthrough for pgx.QueryTracer (OpenTelemetry)
- options.go: WithSlowQueryThreshold and WithTracer functional options
- dbxtest/tx.go: RunInTx runs callback in always-rolled-back transaction for test isolation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>