gvSIG bugs #5670

Falla al trabajar con la capa CALLES en el control de versiones.

Added by Joaquín del Cerro Murciano over 2 years ago. Updated over 1 year ago.

Status:Closed% Done:

0%

Priority:NormalSpent time:-
Assignee:Joaquín del Cerro Murciano
Category:VCSGis
Target version:2.6.0-3231
Severity:Blocker Add-on version:
gvSIG version:2.6.0 Add-on build:
gvSIG build:3228 Add-on resolve version:
Operative System: Add-on resolve build:
Keywords: Proyecto:AYTOA 1
Has patch: Hito:Fase 01
Add-on name:Unknown

Description

Si subimos al control de versiones la capa CALLES, al hacer un checkout en otra copia de trabajo falla y deja la capa vacia en la copia de trabajo.

History

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

  • gvSIG build set to 3228
  • Severity changed from Minor to Blocker
  • Target version set to 2.6.0-3231
  • Assignee set to Joaquín del Cerro Murciano
  • Category set to VCSGis

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

Hemos probado tanto con clientes en windows como en linux y en nuestros equipos de desarrollo no hemos logrado reproducirlo.

Parece que puede tener que ver con el encoding que se le asigna a la BBDD de Oracle en el momento de su creacion. Nuestra BBDD tiene un enconding de UTF8, mientras que la del cliente uno de ISO8859-15.

#3 Updated by Joaquín del Cerro Murciano over 2 years ago

Por lo que hemos investigado parece ser que tiene que ver como gestiona los campos CLOB el driver de JDBC de Oracle.

A partir de una version del servidor de Oracle (11.X) los datos de los CLOB no se enviaban al cliente cuando se hacia una peticion a este. Para recuperarlos el cliente hacia una peticion al servidor. En un momento dado, para optimizar el acceso a los campos CLOB el servidor envia los datos de los CLOB junto con los datos del registo siempre que midan menos de 4Kb; pero al hacerlo lo hace en el encoding de la BBDD. Luego el driver de JDBC cuando le pides los datos no gestiona correctamente el encoding y cuando accedes al CLOB te lo da incorrectamente decodificado.

Existe la posibilidad de indicarle en el momento de establecer la conexion que no haga un "prefetch" de los CLOB, y entonces estos no se incluyen junto con el registro, obligando siempre a hacer una peticion extra para recuperarlos. Si hacemos esto parece que funciona correctamente; pero se enlentece la recuperacion de los datos de los CLOB. A pesar de ello se ha incluido entre los parametros del proveedor de Oracle de gvSIG desktop la posibilidad de configurar el "lobprefetchsize".

Otra alternativa que se ha estudiado es usar un NCLOB en lugar de CLOB. Al hacer esto Oracle usa una codificacion alternativa para esos campos basada, al parecer por defecto un UTF16. Con esto los datos ocupan algo mas en la BBDD pero no nos da problemas al acceder a ellos desde el driver de JDBC. Se ha modificado el proveedor de Oracle para que use NCLOB y NVARCHAR2 cuando mapee string a campos de una tabla.

Con esta ultima modificacion se carga y recupera correctamente la tabla de CALLES del servidor VCSGis.

Se puede consultar el encodig de la BBDD con:

select * from database_properties

En los equipos de desarrollo los valores del encoding que tenemos son:

NLS_NCHAR_CHARACTERSET    AL16UTF16    NCHAR Character set
NLS_CHARACTERSET    AL32UTF8    Character set

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

  • Status changed from New to Fixed

#5 Updated by Joaquín del Cerro Murciano over 2 years ago

  • Hito set to Fase 01
  • Proyecto set to AYTOA 1

#6 Updated by Álvaro Anguix over 1 year ago

  • Status changed from Fixed to Closed

Also available in: Atom PDF