gvSIG bugs #5002
Campo calculado que tiene como campo requerido a él mismo
Status: | Closed | % Done: | 0% | |
---|---|---|---|---|
Priority: | Normal | Spent time: | - | |
Assignee: | - | |||
Category: | - | |||
Target version: | 2.5.0-2913 (rev. org.gvsig.desktop-2.0.241) | |||
Severity: | Minor | Add-on version: | ||
gvSIG version: | 2.5.0 | Add-on build: | ||
gvSIG build: | Add-on resolve version: | |||
Operative System: | Add-on resolve build: | |||
Keywords: | Proyecto: | |||
Has patch: | Hito: | |||
Add-on name: | Unknown |
Description
Un campo calculado llamado CAMPO1 entraría en bucle si tiene un campo calculado donde hasRequiredFields el mismo "CAMPO1*1"
En la preview no pasa.
Associated revisions
refs #5002. Añadidas comprovaciones para evitar expresiones recursivas en el interprete de expresiones y en el field manager para detectar que hayan campos calculados que se referencien directamente a si mismos.
History
#1 Updated by Joaquín del Cerro Murciano over 5 years ago
- Status changed from New to Fixed
Uff, es mas complicado de lo que parece.
De momento si la expresion del campo calculado se referencia directamente a si misma, desde el adminitrador de campos, lo detecta y no deja hacerlo.
Ademas, el propio interprete detecta la recursion y por defecto solo deja 20 niveles de recursion, con lo que ya no deja frito a gvSIG cuando pasa esto. Va lento durante un poco pero se recupera.
Lo de que no pase en la preview, tiene mas tela. a ver:
- Entro en el administrador de campos
- Doy de alta un campo nuevo COSA1 y le digo que es un campo calculado cuya expression es COSA1, osea el mismo.
- Pido la preview.
Asi sin mas no falla, por que aun no forma parte el campo calculado de la feature.
Si en lugar de eso hago:
- Entro en el administrador de campos
- Doy de alta un campo nuevo COSA1 y le digo que es un campo calculado cuya expression es cualquier otro campos de la feature.
- Acepto los cambios.
- Vuelvo a entrar, y edito el campo COSA1.
- Le pongo como expresion COSA1.
Casca la preview.
Bueno, de momento la recursion simple, que un campo calculado se referencia a el mismo en la formula, se detecta.
Lo que no hace es detectar si un campo calculado referencia a otro y ese a su vez al anterior.Y en cualquier caso ya no deja tiesa a la aplicacion.
#2 Updated by Álvaro Anguix over 5 years ago
- Status changed from Fixed to Closed