45 using ConstASTExprVisitor::operator();
46#define DECLARE(CLASS) void operator()(Const<CLASS>&) override;
#define M_AST_EXPR_LIST(X)
ThreadSafeStringPool::proxy_optional_type ThreadSafePooledOptionalString
A data type representing a pooled (or internalized) object.
Translates a query graph in SQL.
QueryGraph2SQL(std::ostream &out, const QueryGraph *graph, bool after_grouping)
bool references_group_by(ast::Designator::target_type)
Checks whether the given target references an expression contained in the group_by clause.
void insert_projection(const ast::Expr *)
Inserts a projection for the given Expr which is computed by a grouping operator.
void translate_projection(std::pair< std::reference_wrapper< const ast::Expr >, ThreadSafePooledOptionalString >)
Translates a projection for the given pair of Expr and alias.
void translate(const QueryGraph &)
Translates the given QueryGraph into SQL.
void operator()(const QueryGraph &graph)
static ThreadSafePooledString make_unique_alias()
QueryGraph2SQL(std::ostream &out, const QueryGraph *graph)
QueryGraph2SQL(std::ostream &out)
bool after_grouping_
the graph to translate
std::ostream & out_
the output stream to write to
const QueryGraph * graph_
The query graph represents all data sources and joins in a graph structure.
std::variant< std::monostate, const Expr *, const Attribute * > target_type