MagicStack / MagicStack/asyncpg

text encoding of composite types error with schema and table name.

Aberta
#779 1 comentário 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Linguagem predominante
Python
Estrelas
8.1k
Forks
468
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

* **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.

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

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.

Direção de pesquisa

Comece reproduzindo a consulta usando a coluna ltree e o tipo de produto composto; em seguida, inspecione asyncpg/protocol/settings.pyx e asyncpg/protocol/codecs/base.pyx, que aparecem no traceback. Rastreie o registro do tipo composto e verifique se o comportamento foi corrigido para este caso sem quebrar o tratamento existente de tipos compostos.

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

Avaliação

Stack de tecnologia
postgresql, python
Domínio
databases
Tipo de issue
Bug
Dificuldade
4/5
Tempo estimado
3-5 dias
Status de atividade
Estagnada
Clareza
Precisa de esclarecimento
Facilidade para iniciantes
38/100

Receba novas issues na sua caixa de entrada

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