What would you like?
DDL events could be useful for the consumers but not everyone wants to have in the same topic/channel as the normal data. Sometimes users would rather ignore them even. DF needs to provide the configuration interface for that.
Why? (please explain the use case if possible)
-
Same topic as data events : consumers now have to filter out DDL noise on every message. Debezium routes schema changes to a separate .schema-changes topic precisely to avoid this. Downstream consumers that assume all messages in the topic are DML breaks here.
-
op:"r" is wrong : "r" means snapshot read. A DDL change needs its own op type ("ddl" or "schema" or similar). Any consumer doing if op == "r" for snapshot handling will misclassify these.
-
"table":"_ddl" is a virtual table hack, it will trip consumers that route by table name (e.g., dispatching to per-table processors). Most table-routing logic won't have a handler for _ddl.
-
"before":null,"after":null, the event carries the SQL but no row data, which is inconsistent with the rest of the envelope.
What would you like?
DDL events could be useful for the consumers but not everyone wants to have in the same topic/channel as the normal data. Sometimes users would rather ignore them even. DF needs to provide the configuration interface for that.
Why? (please explain the use case if possible)
Same topic as data events : consumers now have to filter out DDL noise on every message. Debezium routes schema changes to a separate .schema-changes topic precisely to avoid this. Downstream consumers that assume all messages in the topic are DML breaks here.
op:"r" is wrong : "r" means snapshot read. A DDL change needs its own op type ("ddl" or "schema" or similar). Any consumer doing if op == "r" for snapshot handling will misclassify these.
"table":"_ddl" is a virtual table hack, it will trip consumers that route by table name (e.g., dispatching to per-table processors). Most table-routing logic won't have a handler for _ddl.
"before":null,"after":null, the event carries the SQL but no row data, which is inconsistent with the rest of the envelope.