Re: Problemas de tamaño/recodificacion

From: kernel <jucabapa(at)gmail(dot)com>
To: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Problemas de tamaño/recodificacion
Date: 2019-08-08 11:47:41
Message-ID: de54b626-f3ab-4dd6-2519-02ae1da005eb@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


El 08/08/2019 a las 12:59, Horacio Miranda escribió:
>
>
> On 8/08/2019 9:49 PM, kernel wrote:
>>
>> El 08/08/2019 a las 10:35, Horacio Miranda escribió:
>>> Debes indicar un poco mas de informacion, parametros, version de la
>>> base, si estas usando XML parsers...  la consulta que estas haciendo
>>> cuando se cae, etc...
>>>
>>> Lee el correo y revisa que estes entregando toda la informacion que
>>> alguien de soporte te pueda preguntar.
>>>
>>> On 8/08/2019 8:21 PM, kernel wrote:
>>>>
>>>> Hola,
>>>>
>>>> Tengo una funcion plpgsql que me devuelve un valor xml de 0,5 GB,
>>>> La codificacion que tiene la DB es UTF-8, como el cliente que
>>>> utilizo es latin9, creo que a la hora del intercambio al hacer el
>>>> cambio de encoding me da el problema
>>>>
>>>> ¿alguna idea?
>>>>
>>>> Gracias
>>>>
>>>>
>>>> ERROR:  memoria agotada
>>>>
>>>> La cadena de 516574025 bytes es demasiado larga para la recodificación
>>>>
>>>>
>>>>
>>
>> Gracias Horacio,
>>
>> Tengo un postgresql version 10.5 sobre opensuse
>>
>> La consulta es bastante larga, es una SELECT  a base de XMLELEMENT , 
>> XMLAGG y XMLATTRIBUTES                 , nada mas
>>
>> El problema se produce cuando la funcion  retorna el valor xml ;
>> cuando sacamos muchos datos y el encoding del cliente es distinto del
>> que tiene la base de datos.
>>
>> Si la cantidad de datos es grande y no tiene que cambiar el encoding,
>> no hay problema, tampoco lo hay  si reducimos el volumen de datos y
>> tenemos distinto encoding
>>
>> Supongo que tengo que tocar algo de memoria de postgres pero no se
>> que parametro tocar y si es asi , ¿se puede hacer dinamicamente ?
>>
>> Un Saludo
>>
> Revisando  los codigos veo que el postgresql tiene un limite en el mbutils
> https://doxygen.postgresql.org/mbutils_8c.html
>
> if ((Size
> <https://doxygen.postgresql.org/c_8h.html#af9ecec2d692138fab9167164a457cbd4>)
> len >= (MaxAllocSize
> <https://doxygen.postgresql.org/memutils_8h.html#a74a92b981e9b6aa591c5fbb24efd1dac>
> / (Size
> <https://doxygen.postgresql.org/c_8h.html#af9ecec2d692138fab9167164a457cbd4>)
> MAX_CONVERSION_GROWTH
> <https://doxygen.postgresql.org/pg__wchar_8h.html#a1a226786d77d0e2baecaafd3d5aafd10>))
>
> https://doxygen.postgresql.org/mbutils_8c.html
> #define MaxAllocSize   ((Size
> <https://doxygen.postgresql.org/c_8h.html#af9ecec2d692138fab9167164a457cbd4>)
> 0x3fffffff) /* 1 gigabyte - 1 */
> #define MAX_CONVERSION_GROWTH   4
>
> Es decir que el tamaño maximo del objeto puede ser basicamante 256M
> menos 1/4 de byte.
>
> El mensaje de error dice que tu objeto es de 492.64M que es mayor al
> limite.
> Lo que se me ocurre es que vas a tener que usar un split para no tener
> un XML más grande de 256M.
>
> Ignoro lo que guardas como XML, pero si son fotos tal ves sea mejor
> guardar esos caracteres grandes como un CLOB ?
>
>>
>>
>>
>>
Si, eso debe de ser.

El error esta en el server, si ejecutas con pgadmin y le pones antes de
la llamada un set client_encoding = 'latin9' antes de la llamada a la
funcion da el error, vas a los log del servidor y ahi esta.

Lo que guardo es texto, es un xml , tiene unas 2400 facturas, con todos
los campos posibles de impresión.

Gracias, voy haber que se me ocurre

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Horacio Miranda 2019-08-08 11:56:59 Re: Problemas de tamaño/recodificacion
Previous Message Horacio Miranda 2019-08-08 10:59:02 Re: Problemas de tamaño/recodificacion