À propos du projet

lib/pq est une implémentation pure Go d'un pilote PostgreSQL qui s'intègre au package standard database/sql de Go. Il prend en charge toutes les versions actuellement maintenues de PostgreSQL et fournit un format DSN familier compatible avec libpq, acceptant à la fois les chaînes de connexion de style clé=valeur et postgres://. Les fonctionnalités clés incluent : - **Authentification** : Prend en charge PASSWORD, MD5 et SCRAM-SHA256 par défaut. Une authentification facultative GSS/Kerberos est disponible via un module auth/kerberos séparé pour éviter les dépendances inutiles. La prise en charge du fichier pgpass est également incluse. - **Importations en masse** : COPY [..] FROM STDIN est pris en charge pour un chargement de données en masse efficace dans les transactions. - **LISTEN/NOTIFY** : Un type pq.Listener délivre les notifications PostgreSQL sur un canal Go, permettant des modèles événementiels en temps réel. - **Gestion des erreurs** : Les erreurs PostgreSQL sont renvoyées sous forme de pq.Error avec des champs structurés. L'assistant pq.As convertit les erreurs en valeurs pq.Error typées, et ErrorWithDetail() inclut les informations DETAIL et CONTEXT pour le débogage. - **Gestion des NOTICE** : Les messages informatifs NOTICE de PostgreSQL peuvent être capturés via un gestionnaire de rappel configurable. - **Paramètres d'exécution** : Contrairement à libpq, pq permet de définir des paramètres d'exécution comme search_path ou work_mem directement dans la chaîne de connexion. - **Struct Config** : Une struct pq.Config fournit une configuration de connexion programmatique, avec pq.NewConfig analysant les chaînes DSN et pq.NewConnectorConfig créant un connecteur. Les mises en garde documentées dans le README incluent : LastInsertId n'est pas pris en charge (utilisez INSERT ... RETURNING à la place), la gestion des horodatages utilise le fuseau horaire du serveur pour timestamptz et un fuseau à décalage nul fixe pour timestamp sans fuseau horaire, et l'encodage bytea pendant COPY peut poser des problèmes avec les colonnes jsonb. Le projet comprend une suite de tests complète exécutable via Docker Compose contre plusieurs versions de PostgreSQL, pgbouncer et pgpool. Une variable d'environnement PQGO_DEBUG=1 active la sortie de débogage au niveau du protocole pour le dépannage.