2008-01-12 00:47:51 PYST NOTICE: Actualizando persona 5862315 con fecha a 19860315 2008-01-12 00:47:52 PYST ERROR: se ha detectado un deadlock 2008-01-12 00:47:52 PYST DETALLE: El proceso 10575 espera AccessShareLock en relación 20852 de la base de datos 20014; bloqueado por proceso 10632. El proceso 10632 espera AccessExclusiveLock en relación 20890 de la base de datos 20014; bloqueado por proceso 10575. 2008-01-12 00:47:52 PYST CONTEXTO: sentencia SQL: «UPDATE persona SET per_fnac = '1986-03-15' WHERE idpersona = 5862315» PL/pgSQL function "arreglar_fechas_nacimiento" line 11 at execute statement 2008-01-12 00:47:52 PYST SENTENCIA: SELECT arreglar_fechas_nacimiento(); CREATE OR REPLACE FUNCTION arreglar_fechas_nacimiento() RETURNS integer AS $BODY$ DECLARE -- declarations holder RECORD; BEGIN FOR holder IN SELECT idpersona, per_fnac, temp_fnac FROM persona LOOP RAISE NOTICE 'Actualizando persona % con fecha % a %', holder.idpersona, holder.per_fnac, holder.temp_fnac; IF isdate(holder.temp_fnac) THEN EXECUTE 'UPDATE persona SET per_fnac = ' || quote_literal(holder.temp_fnac::date) || ' WHERE idpersona = ' || holder.idpersona; END IF; END LOOP; RETURN 1; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; ALTER FUNCTION arreglar_fechas_nacimiento() OWNER TO ebarreto; CREATE OR REPLACE FUNCTION isdate(mydate text) RETURNS boolean AS $BODY$ DECLARE a date; BEGIN if mydate is NULL then RETURN 'f'; end if; a := mydate::date; RETURN 't'; EXCEPTION WHEN others THEN RETURN 'f'; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; ALTER FUNCTION isdate(text) OWNER TO ebarreto;