From: | Felipe de Jesús Molina Bravo <fjmolinabravo(at)gmail(dot)com> |
---|---|
To: | "Silvio Quadri" <silvioq(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: funcion plpgsql .... corrupcion de indice |
Date: | 2008-12-12 20:43:24 |
Message-ID: | c31298e50812121243r57e264a3g2320bafa7d0c2cfd@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 12 de diciembre de 2008 13:31, Felipe de Jesús Molina Bravo <
fjmolinabravo(at)gmail(dot)com> escribió:
>
>
> El 12 de diciembre de 2008 12:50, Silvio Quadri <silvioq(at)gmail(dot)com>escribió:
>
>> El día 12 de diciembre de 2008 16:47, Alvaro Herrera
>> <alvherre(at)alvh(dot)no-ip(dot)org> escribió:
>> > Felipe de Jesús Molina Bravo escribió:
>> >
>> >> entonces mi problema es el indice.... esta corrupto ... pero estoy ante
>> una
>> >> limitante de postgres o ante un error de programacion?
>> >
>> > No es una limitante, creo yo; más parece un bug. Estuve mirando tu
>> > código y la verdad es que me quedé algo clavado mirando la función
>> > recursiva que obtiene el MCD. ¿Estás seguro que funciona correctamente?
>>
>>
>
>> >
>> > Lo otro es que no me queda totalmente claro si las funciones de
>> > comparación para el btree están correctas. Parecen estarlo pero algún
>> > detalle puede estarse escapando ... por ej. no tengo totalmente claro si
>> > la función cmp() debería devolver un valor distinto de 0 cuando se pasan
>> > dos racionales que son iguales en valor absoluto pero se escriben de
>> > maneras distintas (1/2 versus 2/4 por ej.) Quizás tu problema vaya por
>> > ese lado.
>>
>> Podrías ver si funciona quitándo el calculador de MCD.
>> Si bien un medio te daría distinto a dos cuartos, podrías ver si el
>> inconveniente se genera al reducir las fracciones.
>> Silvio
>
>
> Muchas gracias por las ideas ... ya probe quitando el MCD y continua el
> problema ... voy a revisar a detalle las funciones de comparación ... antes
> de comparar se me ocurre reducir a su minima expresion cada racional ....
> gracias ....yo les comento...(escribiendo se me ocurrio esto ultimo)
>
ya probe lo que acorde y sigue igual ... en cuanta a las dudas de la macro
de cmp, segun yo esta correcta ...
#define Comparar(x,y) ((x)->num*(y)->den - (x)->den*(y)->num)
si x= 3/4 y= 6/8 entonces
Comparar(x,y)= (3*8) - (4*6) = 0
si x= 3/4 y= 6/8 entonces
segun yo es un comportamiento general.... pero ahora que pasa cuando
x=(57133/ 73908) y= (363669/470447)
Comparar = (57133*470447) - (73908*363669) = 26878048451 - 26878048452= -1
mi duda es .... alguna multiplicacion de este tipo podria causar algun
desbordamiento en el tipo de datos ... no creen? ....lo dudo pero que
piensan ....
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2008-12-12 20:59:12 | Re: funcion plpgsql .... corrupcion de indice |
Previous Message | Alvaro Herrera | 2008-12-12 19:54:21 | Re: funcion plpgsql .... corrupcion de indice |