gvSIG feature requests #5094

[PG] Implementar la funcion FOREING_VALUE para que sea optima usando BBDD (H2/Pg)

Added by Joaquín del Cerro Murciano over 4 years ago. Updated over 4 years ago.

Status:Closed% Done:

0%

Priority:NormalSpent time:-
Assignee:Joaquín del Cerro Murciano
Category:-
Target version:2.5.0-2920
gvSIG version:2.5.0 Add-on resolve version:
Keywords: Add-on resolve build:
Has patch: Proyecto:
Add-on name:Unknown Hito:
Add-on version:

Associated revisions

Revision 44376
Added by Joaquín del Cerro Murciano over 4 years ago

refs #5094, modificaciones para que la funcion FOREING_VALUE se traslade a LEFT JOINs en tablas de BBDD.

History

#1 Updated by Joaquín del Cerro Murciano over 4 years ago

  • Status changed from New to Fixed

He modificado la implementacion para hacer que las llamadas a la funcion FOREING_VALUE cuando se realicen contra tablas de una BBDD se traduzcan en añadir al SELECT el LEFT JOIN que toque.

Por ejemplo, cuando tenga sentencias como esta:

SELECT "ID", "NAME", "DESCRIPTION", "TYPE" 
FROM "dbo"."test1" 
WHERE (( (FOREING_VALUE('TYPE.DESCRIPTION')) LIKE ('A%') ) AND ( (FOREING_VALUE('PHONE_TYPE.DESCRIPTION')) = ('mobile') ))

Que la transforme en:

SELECT "ID", "NAME", "dbo"."test1"."DESCRIPTION", "TYPE", "dbo"."TYPES"."DESCRIPTION", "dbo"."PHONE_TYPES"."DESCRIPTION" 
FROM "dbo"."test1" 
LEFT JOIN "dbo"."TYPES" ON ( ("dbo"."test1"."TYPE") = ("dbo"."TYPES"."ID") ) 
LEFT JOIN "dbo"."PHONE_TYPES" ON ( ("dbo"."test1"."PHONE_TYPE") = ("dbo"."PHONE_TYPES"."ID") ) 
WHERE (( ("dbo"."TYPES"."DESCRIPTION") LIKE ('A%') ) AND ( ("dbo"."PHONE_TYPES"."DESCRIPTION") = ('mobile') ))

Ademas los valores de los parametros de la funcion FOREING_VALUE se almacenan en la Feature para ser usados en caso de que sea necesario.

Solo funciona cuando hay una union entre dos tablas, para mas de dos tablas no funcionaria. En ese caso se ejecutaria la funcion FOREING_VALUE sin ninguna optimizacion. Esto es casos como:

FOREING_VALUE('TYPE.SUBTYPE.DESCRIPTION')

En los que se enlazan tres tablas, no se tratarian de forma especial y no se generarian los LEFT JOINs.

#2 Updated by Álvaro Anguix over 4 years ago

  • Status changed from Fixed to Closed

Also available in: Atom PDF