Sobre el proyecto

lib/pq es una implementación en Go puro de un controlador de PostgreSQL que se integra con el paquete estándar database/sql de Go. Admite todas las versiones de PostgreSQL actualmente mantenidas y ofrece un formato DSN familiar compatible con libpq, aceptando tanto cadenas de conexión key=value como cadenas estilo URL postgres://. Las características principales incluyen: - **Autenticación**: Admite PASSWORD, MD5 y SCRAM-SHA256 de forma predeterminada. La autenticación opcional GSS/Kerberos está disponible mediante un módulo auth/kerberos independiente para evitar dependencias innecesarias. También incluye soporte para archivos pgpass. - **Importaciones masivas**: COPY [..] FROM STDIN es compatible para cargas eficientes de datos en bloque dentro de transacciones. - **LISTEN/NOTIFY**: Un tipo pq.Listener entrega notificaciones de PostgreSQL en un canal de Go, permitiendo patrones en tiempo real orientados a eventos. - **Manejo de errores**: Los errores de PostgreSQL se devuelven como pq.Error con campos estructurados. El auxiliar pq.As convierte errores en valores pq.Error tipados, y ErrorWithDetail() incluye información DETAIL y CONTEXT para depuración. - **Manejo de NOTICE**: Los mensajes informativos NOTICE de PostgreSQL pueden capturarse mediante un manejador de devolución de llamada configurable. - **Parámetros de tiempo de ejecución**: A diferencia de libpq, pq permite establecer parámetros de tiempo de ejecución como search_path o work_mem directamente en la cadena de conexión. - **Struct Config**: Un struct pq.Config proporciona configuración programática de la conexión, con pq.NewConfig analizando cadenas DSN y pq.NewConnectorConfig creando un conector. Las advertencias documentadas en el README incluyen: LastInsertId no es compatible (use INSERT ... RETURNING en su lugar), el manejo de marcas de tiempo usa la zona horaria del servidor para timestamptz y una zona fija con desplazamiento cero para timestamp sin zona horaria, y la codificación bytea durante COPY puede causar problemas con columnas jsonb. El proyecto incluye un conjunto de pruebas completo ejecutable mediante Docker Compose contra múltiples versiones de PostgreSQL, pgbouncer y pgpool. La variable de entorno PQGO_DEBUG=1 habilita la salida de depuración a nivel de protocolo para la resolución de problemas.