Wrt upgrading/downgrading hoodie.properties, here is what we can go.
Add a new table version, 2.
Add an upgrade step:
before every write operation.
Check if existing hoodie.props is in an older version. If yes, perform upgrade step to version2 (either from 0 to 2 or from 1 to 2). This essentially means that we need to add new properties pertaining to sql dml to hoodie.properties.
Things to watch out for:
for some operations, not all props might be set by the user. So, we might need to throw an exception. (record key field, partition path field, key gen prop, precombine field).
We need to fetch latest table schema since the incoming df could have partial cols.
hoodie.properties will have some additional properties. Should not cause any harm. All we need to do is to downgrade the table version to target version and not touch any of the props.