I don't like this part of the patch at all. Not only is the documentation only half baked, but the entire concept of the two commands is different. Especially since I believe the command should also create a generated column from a non-generated one.
But I have to agree with Vik Fearing, we can make this patch better, should we?
I totally understand your intentions to keep the code flow simple and reuse existing code as much
as possible. But in terms of semantics of these commands, they are quite different from each other.
And in terms of reading of the code, this makes it even harder to understand what is going on here.
So, in my view, consider split these commands.
Ok, probably, I would work in that direction. I did the same thing that SET/DROP DEFAULT does, despite semantic differences, and also, if I am not missing anything, the code complexity should be the same as that.