MagicStack / MagicStack/asyncpg
text encoding of composite types error with schema and table name.
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 8.1k
- Forks
- 468
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
- 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?: Not tried
Hello!
I have table with 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.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, die Abfrage mit der ltree-Spalte und dem zusammengesetzten Produkttyp zu reproduzieren. Untersuche anschließend asyncpg/protocol/settings.pyx und asyncpg/protocol/codecs/base.pyx, die im Traceback erscheinen. Verfolge die Registrierung des zusammengesetzten Typs und überprüfe, dass das Verhalten für diesen Fall korrigiert ist, ohne die bestehende Behandlung zusammengesetzter Typen zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- postgresql, python
- Bereich
- databases
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 38/100