Hi Hongshun,

Good point! Both approaches serve similar purposes exposing the changelog
as append-only with operation type metadata.

The key differences with virtual tables:

   1. *No duplicate table definitions*: Users can query orders and
   orders$changelog simultaneously without creating two tables with
   different configs
   2. *Additional metadata*: Virtual tables expose _log_offset and
   _commit_timestamp alongside _change_type, useful for incremental
   processing and debugging
   3. *$binlog nested structure*: Provides before/after ROW columns -
   combining UPDATE_BEFORE and UPDATE_AFTER into a single row
   (Debezium-style), which a config flag cannot achieve
   4. *Consistency*: Follows existing $lake virtual table pattern in Fluss


Best Regards,
Mehul Batra

Reply via email to