Gustavo Vaccaro escribió:
Alvaro,<br>
ok, pero si quisiera obtener las instrucciones de una fecha que
todavia no fue eliminada por la rotacion del WAL ¿podria hacerlo?<br>
El WAL registra cambios a nivel físico. Si quieres, puedes intentar
descomponer los bytes que fueron registrados en el WAL para que sean una
tupla de algún catálogo de sistema que te interese (e.g. pg_class),
saber que es un UPDATE o un INSERT o un DELETE, luego identificar la
tupla original (en caso de UPDATE), luego tratar de "decodificar" qué
tipo de sentencia DDL representa ese cambio. Honestamente, este trabajo
es tan complicado, tedioso y propenso a errores que yo ni siquiera lo
intentaría (sin mencionar que habría que hacer un esfuerzo adicional en
cada migración de versión). Ah, y no sé qué harás cuando te encuentres
con 9.5 y su molesta (je) habilidad de comprimir los registros WAL
eliminando secuencias de bytes de la tupla modificada que aparecían en
la tupla original.
https://www.flickr.com/photos/nauright/11341288174/
Ejemplo: detecte un error en una funcion y quiero ver las
instrucciones que impactaron en un tabla ¿puedo verlas?<br>
Te estoy hablando, poder ver lo que paso en mi base de datos de
testing (no en produccion) en la ultima ejecucion.<br>
Tengo el probelma que todas las instrucciones que genero desde mi
aplicacion quedan grabadas en pg_log, pero no quedan las generadas
por el trigger o funcion.
Además de lo que ya mencioné antes, que no volveré a mencionar, y que
resuelve tus requerimientos sin necesidad de decodificar WAL, también te
puede servir audit_trigger.
</eot>