- Se descapó
- 25 de agosto de 2026 a las 18:14 UTC
- Autor
- Kamo
- Compromit
- 8ed40d7
Hibernate escribe CHECK (col= 0 AND col .= N) sobre un "Enumerado" (ORDINAL) columna en CREATE TABLE, donde N es el más alto ordinal que existía que día, y ddl-auto: update nunca lo revisita. El día que alguien añade un valor enum, cada inserto que lleva el nuevo ordinal es rechazado y porque la declaración fallida es generalmente dentro de un método de transición, el El retroceso elimina la evidencia y la característica simplemente no hace nada. Dos de ellos ya estaban llenos y ya rompiendo cosas, encontrados mientras comprobar si la EHR podría reutilizar el gestor de documentos en lugar de construir una segunda: - Los cinco controles de ImageAssocType permiten 0-13. El enum alcanzó el ordinal 15 Hace algún tiempo. PICTURE-FRAME y SYSTEM-BUG-SCREENSHOT, por lo tanto, no pueden tener una carpeta, un tipo doc, un orden de apilamiento, una configuración de assoc o un aglutinante HOY. Nada lo informa; la fila nunca aparece. - img.dats.server.mime.check permite 0-35 y ImageMimeType tenía exactamente 36 valores de un nuevo tipo de mimo de rechazo de cada subida de ese tipo. Una segunda restricción más amplia (check-server-mime, 0-99) ya se sentó en el la misma columna, por lo que la estrecha era pura responsabilidad: el control más apretado siempre ganas. img-dats.age-req-typeid-check fue igualmente exactamente completo en nueve valores contra 0-8. Derroste en lugar de ampliar, según la regla de pie. Ampliar compra exactamente un valor enum más y luego reproduce el mismo fracaso, con una migración en medio de eso todo el mundo creerá que lo arreglará. El rango no aplica nada vale la pena tener cualquiera de los dos: la aplicación mapea estas columnas a través del enum en ambas sentidos, por lo que un valor fuera de alcance no puede proceder de la aplicación, y uno escrito fuera es un error el cheque convierte en un silencio fracaso en lugar de un error que alguien ve.