Will all the public static methods in KeyValue still work (like all the compare functions)?
Will Put's/Mutatin's get(), get/setFamilyMap, etc, still work?
Clients that use these will see a different behavior if they use Puts/Deletes to create KeyValues for them. Not a likely use case, but possible.
Lastly, this does not strictly need to be part of HBase as such, right? A client could build up an object that serializes like a Put similar to how we have an object that serializes like a KeyValue here.
I'm all for having ClientKeyValue in HBase (so that memory conscious clients can use it), but the changes to Put and Delete have to be thought through carefully.