Consider Removing New Line Characters when Comparing Computed Constructs

Abierto Apto para principiantes
#1,121 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
74/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
postgresql, python
Área
database

Línea de trabajo

Empieza en alembic/autogenerate/compare.py, alrededor de las líneas 1047-1055, donde se sanea el contenido de las cláusulas calculadas de la base de datos y de la configuración local antes de compararlas. Reproduce el problema con una Computed Column multilínea en PostgreSQL y verifica después que las cláusulas equivalentes con saltos de línea colocados de forma diferente ya no produzcan la computed-default warning.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

autogenerate - detection bug

I'm working with a Computed Column construct, which is really long and therefore contains line breaks for readability.

When this construct gets imported into the underlying database (Postgres in my case), the construct gets reformatted with line breaks inserted in different places.

This creates a small side-effect, where alembic now thinks that the original computed clause provided by the migration file is different to the one in the database, and therefore emits a warning.

/usr/local/lib/python3.10/site-packages/alembic/autogenerate/compare.py:1090: 
UserWarning: Computed default on ***  cannot be modified
util.warn("Computed default on %s.%s cannot be modified" % (tname, cname))

After inspecting the code, I found this method, which appears to sanitize the database computed clause as well as the local one:

https://github.com/sqlalchemy/alembic/blob/fc451e60731ad5b8d73255f0a1996e1d4e0f20de/alembic/autogenerate/compare.py#L1047-L1055

I feel that we should include line breaks in the list of tokens that should be removed before a comparison takes place, but happy to hear what thoughts you have on this.

Thanks!

Lenguaje dominante
Python
Estrellas
4.5k
Forks
391
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de sqlalchemy/alembic

Todos los issues de sqlalchemy/alembic

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.