Let's do the following:
- Remove a few members from LEX:
- uint grant, grant_to_col, which_columns
- List<LEX_COLUMN> columns
- bool all_privileges
- Rewrite the GRANT/REVOKE grammar to use more bison stack instead of directly accessing these LEX members.
- Add Sql_cmd_grant* and Sql_cmd_revoke* classes.
- Simplifying LEX
- Making the grammar more maintainable (less hidden side effects)
- We should eventually turn all statements to use Sql_cmd. So this is a step forward.
Note, this change will need to introduce some helper classes. At least:
- A class representing the ON clause in GRANT/REVOKE
- A class representing the entire GRANT/REVOKE statement