Hi everyone, I want to start a discussion on a new Flink Improvement Proposal, FLIP-546: Introduce CREATE OR ALTER for Materialized Tables [1].
The introduction of Materialized Tables in FLIP-435 [2] was a significant step toward simplifying data pipelines. However, as we integrate them into production environments managed by automation, a key challenge arises. Modern data operations rely on declarative tools (like dbt, Terraform, CI/CD pipelines) that require idempotent commands to manage the lifecycle of data assets. The current CREATE MATERIALIZED TABLE syntax is not idempotent and fails if the table already exists. This forces developers and tool creators to implement complex and risky CREATE IF NOT EXISTS or DROP...IF EXISTS logic can lead to data loss and complicate the development of reliable data management tools. This FLIP proposes introducing a CREATE OR ALTER MATERIALIZED TABLE command to provide a native, idempotent way to manage materialized tables, aligning Flink with best practices for declarative, infrastructure-as-code deployments. [1] https://cwiki.apache.org/confluence/x/0wnXFg <https://cwiki.apache.org/confluence/display/FLINK/FLIP-546%3A+Introduce+CREATE+OR+ALTER+for+Materialized+Tables> [2] https://cwiki.apache.org/confluence/x/HYySEQ Best Regards, Ramin Gharib
