The various DESCRIBE commands are currently implemented by cqlsh, and nearly identical implementations exist in many drivers. There are several motivations for making DESCRIBE part of the CQL language:
- Eliminate the (fairly complex) duplicate implementations across drivers and cqlsh
- Get closer to allowing drivers to not have to fetch the schema tables. (Minor changes to prepared statements are also needed.)
- Have instantaneous support for new schema features in cqlsh. (You currently have to update the bundled python driver.)
- Support writing out schemas where it makes sense. One good example of this is backups. You need to restore the schema before restoring data in the case of total loss, so it makes sense to write out the schema alongside snapshots.