Instalación del modulo pgcrypto para Windows

From: Mª José Sempere <mjose(at)pixelart(dot)es>
To: "'Alvaro Herrera'" <alvherre(at)dcc(dot)uchile(dot)cl>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Instalación del modulo pgcrypto para Windows
Date: 2004-12-10 09:00:51
Message-ID: 000001c4de96$c2903d70$0900a8c0@mj
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola,

Estamos intentando instalar el módulo pgcrypto de PostgreSQl para WINDOWS,
Con el fin de poder utilizar la función digest para crear índices sobre
campos binarios de tipo bytea:

create unique index indice_unico on mi_tabla (digest(mi_campo_bytea,
'md5'));

HAY SIMPLMENTE QUE INSTALAR, O HAY QUE RECOMPILAR FUENTES?
En el primer caso, que hay que instalar y desde donde descargarlo?
(En el disco duro vemos que tenemos la dll pgcryto.dll, y también el fichero
pgcrypto.sql y pgcrypto.readme. Hemos leido el Readme, pero no nos
aclaramos)

En el segundo caso, que hay que recompilar y como?

Salu2 y gracias por la ayuda.

-----Mensaje original-----
De: Alvaro Herrera [mailto:alvherre(at)dcc(dot)uchile(dot)cl]
Enviado el: martes, 07 de diciembre de 2004 19:58
Para: Mª José Sempere
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] indices sobre datos binarios

On Tue, Dec 07, 2004 at 04:48:57PM +0100, Mª José Sempere wrote:

Hola,

Por favor incluye siempre una copia a la lista al momento de responder.

> Hemos intentado crear un índice sobre la función md5() del campo de tipo
> bytea, con la instrucción:
>
> create unique index indice_unico on probabytea3 (md5(binarios));
>
> donde probabytea3 es el nombre de la tabla y binarios del nombre del campo
> de tipo bytea, pero obtenemos el siguiente error:
>
> ERROR: function md5(bytea) does not exist

Ok, no existe la funcion md5(bytea). Una idea mas concreta puede ser
instalar el modulo pgcrypto de contrib, y luego usar la funcion
digest().

create unique index indice_unico on prueba (digest(binarios, 'md5'));

(Para instalar un modulo contrib, una posibilidad, si estas en un Linux
con RPMs o Debian, es instalar el paquete postgresql-contrib; otra es
tomar el codigo fuente de Postgres, cd contrib/pgcrypto y leer
README.pgcrypto)

> Por otro lado,aparte de la función md5(), hace usted referencia a la
función
> sha1(), pero dicha función no nos aparece documentada en la ayuda.

En este caso, el indice seria sobre
create unique index indice_unico on prueba (digest(binarios, 'sha1'));

Observa que en caso de usar esta idea para asegurar unicidad, lo
interesante es que la combinacion de ambos digest sea unica, no que cada
uno por si solo sea unico. Es decir, el indice util seria

create unique index indice_unico on prueba
(digest(binarios, 'md5'), digest(binarios, 'sha1'));

(Es un asunto de jugar a las probabilidades, si usar uno solo de los
digest o ambos. En IRC alguien me dijo que usaban la combinacion
md5-sha1-tamaño.

> Tambien estamos interesados en saber porqué dice usted que si los datos
> pueden ser arbitrariamente grandes, probablemente no funcionará el índice
> único sobre el campo de tipo bytea.

Porque en un indice solo pueden almacenarse llaves de hasta 1/3 del
tamaño de pagina (8kB en un Postgres comun y corriente), es decir, algo
mas de 2kB.

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"La principal característica humana es la tontería"
(Augusto Monterroso)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message emilio alvarez 2004-12-10 09:18:26 Re: PHP+POSTGRESQL+XML DESDE CERO
Previous Message Carlos Jordán 2004-12-09 11:28:26 Acentos en postgres