In the current dataset framework (pre-3.5.0), there is a bit of confusion about dataset update and upgrade. Update is the change required after dataset properties were updated. Upgrade is change required after the code for a dataset type has changed. Currently, both is implemented by the same DatasetAdmin.upgrade(). This method, however, has no information about the previous state of the dataset. Also, there is no way to validate whether an update is compatible before starting the actual update in storage media.
We need to introduce new APIs to implement dataset update properly.