MagicStack / MagicStack/asyncpg
Functions with record array paraments
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 8.1k
- Forks
- 469
- Merge medio
- 18 min
- PR fusionados (30 d)
- 4
Descripción
I'm trying to invoke a function with a signature like this:
CREATE OR REPLACE FUNCTION "ns"."test"(p1 "ns"."my_type"[])
It results in the following exception being raised:
Traceback (most recent call last):
File "asyncpg/protocol/prepared_stmt.pyx", line 168, in asyncpg.protocol.protocol.PreparedStatementState._encode_bind_msg
File "asyncpg/protocol/codecs/base.pyx", line 206, in asyncpg.protocol.protocol.Codec.encode
File "asyncpg/protocol/codecs/array.pyx", line 115, in asyncpg.protocol.protocol.array_encode
File "asyncpg/protocol/codecs/array.pyx", line 115, in asyncpg.protocol.protocol.array_encode
TypeError: a sized iterable container expected (got type 'dict')
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
buffer, _, self._exhausted = await protocol.bind_execute(
File "asyncpg/protocol/protocol.pyx", line 183, in bind_execute
File "asyncpg/protocol/prepared_stmt.pyx", line 197, in asyncpg.protocol.protocol.PreparedStatementState._encode_bind_msg
asyncpg.exceptions.DataError: invalid input for query argument $1: {'holiday_center': '123', 'observed_on':... (a sized iterable container expected (got type 'dict'))
How do I invoke such a function?
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con la firma de la función SQL y el codificador de arrays mostrado en asyncpg/protocol/codecs/array.pyx; después, sigue cómo llega el argumento a asyncpg/protocol/prepared_stmt.pyx. Reproduce la llamada con el parámetro record-array y compara la forma de entrada aceptada con el error de dict informado; se considera terminado cuando la función puede invocarse correctamente y el comportamiento está cubierto o claramente documentado.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- postgresql, python
- Área
- backend, databases
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 35/100