MagicStack / MagicStack/asyncpg
text encoding of composite types error with schema and table name.
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.23.0
* **PostgreSQL version**: 10.13
* **Do you use a PostgreSQL SaaS? If so, which? Can you reproduce
the issue with a local PostgreSQL install?**: No. I ran PG on local machine.
* **Python version**: 3.8.2
* **Platform**: MacOs catalina 10.15.7
* **Do you use pgbouncer?**: No
* **Did you install asyncpg with pip?**: Yes
* **If you built asyncpg locally, which version of Cython did you use?**: No
* **Can the issue be reproduced under both asyncio and
[uvloop](https://github.com/magicstack/uvloop)?**: Not tried
Hello!
I have table with [ltree](https://postgrespro.com/docs/enterprise/10/ltree) column:
```
create table product
(
product_id varchar(18) not null
constraint product_pkey
primary key,
category_path ltree
);
```
And trying execute this SQL query:
```
insert into product
(product_id, category_path)
(select r.product_id, r.category_path from unnest($1::product[]) as r)
```
Args:
```
[[{'category_path': 'A.B', 'product_id': '3912331'}]]
```
And i get this error:
```
File "/venv/lib/python3.8/site-packages/asyncpg/pool.py", line 530, in execute
return await con.execute(query, *args, timeout=timeout)
File "/venv/lib/python3.8/site-packages/asyncpg/connection.py", line 299, in execute
_, status, _ = await self._execute(
File "/venv/lib/python3.8/site-packages/asyncpg/connection.py", line 1623, in _execute
result, _ = await self.__execute(
File "/venv/lib/python3.8/site-packages/asyncpg/connection.py", line 1648, in __execute
return await self._do_execute(
File "/venv/lib/python3.8/site-packages/asyncpg/connection.py", line 1675, in _do_execute
stmt = await self._get_statement(
File "/venv/lib/python3.8/site-packages/asyncpg/connection.py", line 392, in _get_statement
settings.register_data_types(types)
File "asyncpg/protocol/settings.pyx", line 35, in asyncpg.protocol.protocol.ConnectionSettings.register_data_types
File "asyncpg/protocol/settings.pyx", line 36, in asyncpg.protocol.protocol.ConnectionSettings.register_data_types
File "asyncpg/protocol/codecs/base.pyx", line 506, in asyncpg.protocol.protocol.DataCodecConfig.add_types
File "asyncpg/protocol/codecs/base.pyx", line 371, in asyncpg.protocol.protocol.Codec.new_composite_codec
File "asyncpg/protocol/codecs/base.pyx", line 76, in asyncpg.protocol.protocol.Codec.init
asyncpg.exceptions._base.UnsupportedClientFeatureError: cannot decode type "public"."product": text encoding of composite types is not supported
```
But "public"."product" -- it's schema and table name.
If i create new table with `category_path` = `text` instead `ltree`, all ok.
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 reproduire la requête à l’aide de la colonne ltree et du type de produit composite, puis examinez asyncpg/protocol/settings.pyx et asyncpg/protocol/codecs/base.pyx, qui apparaissent dans la traceback. Suivez l’enregistrement du type composite et vérifiez que le comportement est corrigé pour ce cas sans casser la gestion existante des types composites.
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
- 38/100