1#pragma once
2
3#include <Interpreters/IInterpreter.h>
4#include <Parsers/IAST_fwd.h>
5
6
7namespace DB
8{
9class Context;
10class ASTShowCreateAccessEntityQuery;
11
12
13/** Returns a single item containing a statement which could be used to create a specified role.
14 */
15class InterpreterShowCreateAccessEntityQuery : public IInterpreter
16{
17public:
18 InterpreterShowCreateAccessEntityQuery(const ASTPtr & query_ptr_, const Context & context_)
19 : query_ptr(query_ptr_), context(context_) {}
20
21 BlockIO execute() override;
22
23 bool ignoreQuota() const override { return true; }
24 bool ignoreLimits() const override { return true; }
25
26private:
27 ASTPtr query_ptr;
28 const Context & context;
29
30 BlockInputStreamPtr executeImpl();
31 ASTPtr getCreateQuery(const ASTShowCreateAccessEntityQuery & show_query) const;
32 ASTPtr getCreateQuotaQuery(const ASTShowCreateAccessEntityQuery & show_query) const;
33 ASTPtr getCreateRowPolicyQuery(const ASTShowCreateAccessEntityQuery & show_query) const;
34};
35
36
37}
38