Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Bit objects not supported with Psycopg 2 and pg8000

Aberta Para iniciantes
#169 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
72/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
postgresql, python
Domínio
database

Direção de pesquisa

Comece lendo os padrões existentes de HalfvecAdapter e register_out_adapter e, em seguida, confira como os adaptadores de Vector, HalfVector e SparseVector são testados para Psycopg 2 e pg8000. Adicione uma adaptação de texto equivalente para Bit nos dois drivers; o trabalho estará concluído quando os dois exemplos de consulta aceitarem Bit('101') e o valor do pg8000 for tratado como a string de bits pretendida.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Hi, pgvector.Bit works as a query parameter with Psycopg 3 (it registers a dumper), but not with Psycopg 2 or pg8000:

cur.execute('SELECT %s::bit(3)', (Bit('101'),))       # psycopg2: ProgrammingError: can't adapt type 'Bit'
conn.run('SELECT CAST(:b AS bit(3))', b=Bit('101'))   # pg8000: "i" is not a valid binary digit

Passing to_text() works, but it's inconsistent with Vector/HalfVector/SparseVector, which both drivers adapt. The pg8000 case is a bit worse since it sends the wrong value rather than raising a clear error.

For both drivers this is a small text adapter (same pattern as HalfvecAdapter / register_out_adapter); happy to open a PR if you'd like. (asyncpg left out on purpose, per #110.)

Tested with main (b5d9b70), Postgres 17, pgvector master.

Linguagem predominante
Python
Estrelas
1.5k
Forks
100
Merge médio
13min
PRs com merge (30d)
1

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de pgvector/pgvector-python

Todas as issues de pgvector/pgvector-python

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.