List[str] parameter treated as text instead of text[] in certain requests
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Exécutez les deux reproductions de try_it() avec asyncpg 0.27.0 et PostgreSQL 15.1, en les comparant aux casts explicites ::text[]. Suivez la façon dont les paramètres List sont inférés et encodés pour les requêtes VALUES et unnest. La tâche est terminée lorsque les deux exemples traitent la liste comme text[] sans nécessiter de casts SQL, avec une couverture de régression pour les cas signalés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
- asyncpg version: 0.27.0
- PostgreSQL version: 15.1
- Do you use a PostgreSQL SaaS? If so, which? Can you reproduce
the issue with a local PostgreSQL install?: No - Python version: 3.8.10
- Platform: Ubuntu
- Do you use pgbouncer?: No
- Did you install asyncpg with pip?: Yes
- If you built asyncpg locally, which version of Cython did you use?:
- Can the issue be reproduced under both asyncio and
uvloop?: Yes
I'm working with a custom bulk operations API built on top of SQLAlchemy and asyncpg, and some scenarios the List parameters are not treated as postgres arrays.
Example 1:
import asyncio
import asyncpg
async def try_it(table: str, query: str, *params, **connargs):
conn = await asyncpg.connect(**connargs)
try:
await conn.execute(f'CREATE TABLE test_table({table});')
await conn.execute(query, *params)
finally:
await conn.execute('DROP TABLE test_table;')
await conn.close()
table = 'a text[], b text'
query = """
UPDATE test_table SET a = uvals.a
FROM (VALUES ($1, $2)) AS uvals (a, b)
WHERE test_table.b = uvals.b
"""
params = [ ['hello', 'world'], 'helloworld']
db_conn_params = {}
asyncio.get_event_loop().run_until_complete(try_it(table, query, *params, **db_conn_params))
Response:
asyncpg.exceptions.DatatypeMismatchError: column "a" is of type text[] but expression is of type text
Example 2:
# same imports and try_it() from above
table = 'a text, b int'
query = """
SELECT a, b
FROM test_table
UNION
SELECT
values as a,
5 as b
FROM unnest($1) as values
"""
params = [ ['hello', 'world'] ]
# execution as above
Response:
asyncpg.exceptions.AmbiguousFunctionError: function unnest(unknown) is not unique
Adding a $1 :: text[] solves the problem in each case, since it appears to be passing the list as text but there are scenarios where I don't have direct control of the SQL (it being auto-generated).
- Langage dominant
- Python
- Étoiles
- 8.1k
- Forks
- 474
- Merge moyen
- 3 j 14 h
- PR mergées (30 j)
- 17
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
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.
Autres issues de MagicStack/asyncpg
-
Connect call failed error doesn't distinguish port mismatch from "server not running"Peut-être pris @aryansk l’a pris il y a 50 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 72/100
MagicStack/asyncpg#1342 ·
Les mainteneurs répondent en général sous 1 jour
-
TypeError in asyncpg.connect() for specific parameters when values are not str enoughPeut-être pris @pranjalm37 l’a pris il y a 53 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 56/100
MagicStack/asyncpg#1340 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
setup.py relies on deprecated pkg_resourcesPeut-être pris @jasonwbarnett l’a pris il y a 81 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 28/100
MagicStack/asyncpg#1337 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
MagicStack/asyncpg#1330 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 38/100
MagicStack/asyncpg#1322 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de MagicStack/asyncpg
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 Une demi-journée Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Qiskit/qiskit-ibm-runtime#3431 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
[Lesson] A compatibility-gate rejection is a verdict, not something to overwrite with --accept-riskOuvertelesson-submission needs-ac pending-review
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Ikalus1988/MisakaNet#2870 ·
Les mainteneurs répondent en général sous 1 jour
-
feature:LinkChecker
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
digitalfabrik/integreat-cms#4594 ·
Les mainteneurs répondent en général sous 5 jours