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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.