Yes @Ian Alton. But I'm using a ReplicatedReplacingMergeTree as I need replication also
I have been able to make a theory that the data types for the columns on clickhouse needs to be exactly how airbyte reads and must have a Nullable() wrap around it even when the source OLTP has a NOT NULL constraint
So far, I only use data types that airbyte uses and include Nullable() on all columns except the PK and Cursor Id (e.g I cant use LowCardinalityString because airbyte always use Nullable(String)) and my table engine remains the same.
Please confirm this behaviour @Ian Alton. Thanks