#pragma once#include <Parsers/IAST.h>#include <Access/AccessRightsElement.h>namespaceDB{classASTRoleList;/** GRANT access_type[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*} TO user_name * REVOKE access_type[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*} TO user_name */classASTGrantQuery:publicIAST{public:enumclassKind{GRANT,REVOKE,};Kindkind=Kind::GRANT;AccessRightsElementsaccess_rights_elements;std::shared_ptr<ASTRoleList>to_roles;boolgrant_option=false;StringgetID(char)constoverride;ASTPtrclone()constoverride;voidformatImpl(constFormatSettings&settings,FormatState&,FormatStateStacked)constoverride;};}