Logical decoding truncate

Started by Friedrich, Steffenover 8 years ago2 messages
#1Friedrich, Steffen
Steffen.Friedrich@dieboldnixdorf.com

Hi,

I am writing a logical decoding output plugin decoding WAL to SQL which is finally applied to target database.

Is it possible to decode a TRUNCATE statement and the tables involved?
Assuming the SQL statement "TRUNCATE x, y;", I am interested in decoding the operation TRUNCATE and the corresponding tables x and y so that I can reconstruct the SQL statement/transaction.
Is that possible?
If so, can you please provide an example or point me into the right direction?

I am currently looking at the structures provided to the commit callback e.g. ReorderBufferTXN but so far I have not been able to find the information I am looking for. What I found out is that the output plugin's begin and commit callbacks are called with has_catalog_changes=1. The change callback is not called for a TRUNCATE.

Thank you,
Steffen

WINCOR NIXDORF International GmbH
Sitz der Gesellschaft: Paderborn
Registergericht Paderborn HRB 3507
Geschäftsführer: Dr. Jürgen Wunram (Vorsitzender), Christopher A. Chapman, Olaf Heyden, Dr. Ulrich Näher, Rainer Pfeil
Vorsitzender des Aufsichtsrats: Dr. Alexander Dibelius
Steuernummer: 339/5884/0020 - Ust-ID Nr.: DE812927716 - WEEE-Reg.-Nr. DE44477193

Diese E-Mail enthält vertrauliche Informationen.
Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben,
informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail.
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht gestattet.

This e-mail may contain confidential information.
If you are not the intended recipient (or have received this e-mail in error)
please notify the sender immediately and destroy this e-mail.
Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.

#2Euler Taveira
euler@timbira.com.br
In reply to: Friedrich, Steffen (#1)
Re: Logical decoding truncate

2017-05-11 4:23 GMT-03:00 Friedrich, Steffen <
Steffen.Friedrich@dieboldnixdorf.com>:

I am writing a logical decoding output plugin decoding WAL to SQL which is
finally applied to target database.

Is it possible to decode a TRUNCATE statement and the tables involved?

Yes, use event triggers. You can decode whatever DDL command you want.

Assuming the SQL statement "TRUNCATE x, y;", I am interested in decoding
the operation TRUNCATE and the corresponding tables x and y so that I can
reconstruct the SQL statement/transaction.

Is that possible?

If so, can you please provide an example or point me into the right
direction?

Take a look at BDR code (bdr_queue_ddl_commands and
bdr_queue_dropped_objects) [1]https://github.com/2ndQuadrant/bdr. It implements DDL replication too.

[1]: https://github.com/2ndQuadrant/bdr

--
Euler Taveira Timbira -
http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
<http://www.timbira.com.br&gt;