Sobre o projeto

lib/pq é uma implementação pura em Go de um driver PostgreSQL que se integra ao pacote padrão database/sql do Go. Ele suporta todas as versões atualmente mantidas do PostgreSQL e fornece um formato de DSN familiar compatível com libpq, aceitando tanto strings de conexão no estilo chave=valor quanto URLs postgres://. Principais recursos incluem: - **Autenticação**: Suporta PASSWORD, MD5 e SCRAM-SHA256 nativamente. Autenticação opcional GSS/Kerberos está disponível via um módulo separado auth/kerberos para evitar dependências desnecessárias. O suporte a arquivos pgpass também está incluído. - **Importação em massa**: COPY [..] FROM STDIN é suportado para carregamento eficiente de dados em massa dentro de transações. - **LISTEN/NOTIFY**: Um tipo pq.Listener entrega notificações do PostgreSQL em um canal Go, permitindo padrões orientados a eventos em tempo real. - **Tratamento de erros**: Erros do PostgreSQL são retornados como pq.Error com campos estruturados. O auxiliar pq.As converte erros em valores tipados pq.Error, e ErrorWithDetail() inclui informações de DETAIL e CONTEXT para depuração. - **Tratamento de NOTICE**: Mensagens informativas NOTICE do PostgreSQL podem ser capturadas via um callback configurável. - **Parâmetros de runtime**: Ao contrário do libpq, o pq permite definir parâmetros de runtime como search_path ou work_mem diretamente na string de conexão. - **Struct Config**: Uma struct pq.Config fornece configuração programática de conexão, com pq.NewConfig analisando strings DSN e pq.NewConnectorConfig criando um conector. As ressalvas documentadas no README incluem: LastInsertId não é suportado (use INSERT ... RETURNING), o tratamento de timestamp usa o fuso horário do servidor para timestamptz e uma zona de deslocamento zero fixo para timestamp sem fuso horário, e a codificação bytea durante COPY pode causar problemas com colunas jsonb. O projeto inclui uma suíte de testes abrangente executável via Docker Compose contra múltiplas versões do PostgreSQL, pgbouncer e pgpool. Uma variável de ambiente PQGO_DEBUG=1 habilita saída de depuração em nível de protocolo para solução de problemas.