Skip site navigation (1) Skip section navigation (2)

Re: Desencriptar Registros y pasar a otra

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Desencriptar Registros y pasar a otra
Date: 2007-02-20 14:45:59
Message-ID: 20070220144559.GE4217@alvh.no-ip.org (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Gabriel Ferro escribió:

Algunos comentarios

> $gsm$
> BEGIN
> EXECUTE 'SELECT 1 FROM '||quote_ident($1) ||' WHERE '
>     ||quote_ident($2)||' LIKE \''||$3||'\' FOR UPDATE NOWAIT';  
> RETURN FALSE;
> EXCEPTION WHEN lock_not_available THEN
>     RETURN true;
> END;
> $gsm$;

Lo que estas haciendo aqui es muy mala idea: estas haciendo un SELECT
FOR UPDATE de *cada uno* de los registros de la tabla.  Si la tabla es
grande, se demorara bastante, ademas de generar un registro WAL para
cada tupla en la tabla, y *ademas* tendra que escribir en cada registro.

Si quieres bloquear una tabla completa, usa LOCK TABLE, el cual tambien
tiene una variante NOWAIT.  *NO USES* select for update en este caso
porque el rendimiento necesariamente es muy malo.


>   execute 'DELETE FROM "RecibidasDes" where "Sumario" IN (SELECT "Sumario" FROM "Recibidas" WHERE "Sumario" LIKE \''||Depta||'%\');';

Esto se puede hacer sin el EXECUTE, y sin el IN.

>   execute 'INSERT INTO "RecibidasDes" SELECT "Sumario", "TipoInfo",ByteaText(decrypt("Info",\''||a||'\',\'bf\')) FROM "Recibidas" WHERE "Sumario" LIKE \''||Depta||'%\';';

Esto tambien se puede hacer sin execute, y creo que con menos cochinada
de comillas.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2007-02-20 14:47:07
Subject: Re: OT a quien se deb pedir que se agregue pgsql-es-ayuda a news.postgresql.org
Previous:From: MarioDate: 2007-02-20 14:41:24
Subject: Fwd: Desencriptar Registros y pasar a otra

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group