Queries fail to return if sub-relation table has real world amount of data
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- graphql, python, sqlalchemy
- Área
- api, database, performance
Línea de trabajo
Comienza con graphene/types/resolver.py, especialmente con attr_resolver, y reproduce la consulta anidada tableA/tableB mostrada en el issue contra una tabla relacionada grande. Sigue cómo la resolución de TableA hace que se acceda a la relación TableB y, a continuación, verifica que la consulta devuelve el resultado en un tiempo razonable sin cargar toda la tabla relacionada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
In a one to many if you have a table setup as follows (a very simple one to many relationship), the GraphQL query will timeout if tableB has any real world amount of data.
TableB has about 400k records in total. Graphene-sqlalchemy will query for TableA, and then SQLAlchemy itself will try resolve the relationship of the table when graphene calls for it. When this happens the query is sent to the DB but it won't return in enough time (its pulling back ~1GB of data as it tries to pull every single field on the sub table).
I've narrowed it down to graphene/types/resolver.py
def attr_resolver(attname, default_value, root, info, **args):
return getattr(root, attname, default_value)
Graphene captures the TableA information, and then when TableB get resolved, the root parameter is populated with the "TableA" model, which SQLAlchemy then tries to completely resolve 400k records, query times out and then fails.
query{
tableA(first: 10){
edges{
node{
tableB(first: 5){
edges{
node{
fieldA
}
}
}
}
}
}
}
- Lenguaje dominante
- Python
- Estrellas
- 985
- Forks
- 224
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
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.
Más de graphql-python/graphene-sqlalchemy
-
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
graphql-python/graphene-sqlalchemy#422 · 1 comentario ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
graphql-python/graphene-sqlalchemy#419 · 3 comentarios ·
Todos los issues de graphql-python/graphene-sqlalchemy
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
anthropics/skills#1811 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
speaches-ai/speaches#678 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
datalayer/mcp-compose#42 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
conda-forge/spacy-feedstock#177 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
UKGovernmentBEIS/inspect_evals#2523 ·