MagicStack / MagicStack/asyncpg
Unable to set Codec to Custom Type (pguint)
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 8.1k
- Forks
- 468
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
- asyncpg version: 0.20.0
- PostgreSQL version: 12.2
- Do you use a PostgreSQL SaaS? If so, which? Can you reproduce
the issue with a local PostgreSQL install?: No, N/A, N/A - Python version: 3.8.0
- Platform: Linux 64bit (Ubuntu 18.04)
- Do you use pgbouncer?: No
- Did you install asyncpg with pip?: Yes
- If you built asyncpg locally, which version of Cython did you use?: N/A
- Can the issue be reproduced under both asyncio and
uvloop?: That's actually what I'm using.
I am using the user extension pguint (there's a pg11&12 branch) and it's installed fine. I'm trying to load ~100GB of article data onto my database, so I'm using the binary copy functions.
I created a binary encoder and decoder:
await con.set_type_codec( 'uint1', encoder=lambda x: struct.pack('!B',x), decoder=lambda x: struct.unpack('!B',x), format='binary')
But when I try to use it, I get:
Caught Insert Error. UID:2419 EX: no binary input function available for type uint1
as my error. I tried delving into the source of this project but wasn't able to glean much. Does this error mean that the postgres extension itself is missing the required function on its end?
As a side note: I wrote a correct encoder/decoder (both text and binary) for the tsvector type, I want to submit a pull request but have no idea where I should put the new code, want to point me in the right direction?
also, should I be including the postgres varlena header in my binary encoding function outputs? or does your code do that?
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par set_type_codec et les fonctions COPY binaires décrites dans le rapport, en reproduisant l’échec de uint1 avec PostgreSQL 12.2, asyncpg 0.20.0, Python 3.8 et uvloop. Vérifiez le comportement de l’entrée binaire de pguint ainsi que la question concernant les en-têtes varlena. La tâche est terminée lorsque la cause et les indications prises en charge sont établies, notamment l’endroit où devrait se trouver une contribution de codec tsvector.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- postgresql, python
- Domaine
- databases
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100