20MB messages to the list aren't that friendly. Please don't do that again, unless asked to.
Apologies, I didn't realize it was so large until after it was sent. At any rate, it won't happen again.
FWIW, the above syntax is a nonstarter, at least unless we're willing to make POLICY a reserved word (hint: we're not). The reason is that the ADD/DROP COLUMN forms consider COLUMN to be optional, meaning that the column name could directly follow ADD; and the column type name, which could also be just a plain identifier, would directly follow that. So there's no way to resolve the ambiguity with one token of lookahead. This actually isn't just bison being stupid: in fact, you simply cannot tell whether
ALTER TABLE tab ADD POLICY varchar(42);
is an attempt to add a column named "policy" of type varchar(42), or an attempt to add a policy named "varchar" with quals "42".
Ok. Make sense and I was afraid that was the case.