aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/core/services/yql_plan.h
blob: 1f6a2cf33de1bea85e4bb5a10883a212ef394311 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#pragma once

#include <yql/essentials/core/type_ann/type_ann_core.h>

#include <library/cpp/yson/writer.h>

#include <optional>

namespace NYql {

struct TPlanSettings {

    TPlanSettings& SetWithLimits(bool limits) {
        WithLimits = limits;
        return *this;
    }

    bool WithLimits = true;
};

class IPlanBuilder {
public:
    virtual ~IPlanBuilder() {};
    virtual void Clear() = 0;
    virtual void WritePlan(NYson::TYsonWriter& writer, const TExprNode::TPtr& root, const TPlanSettings& settings = {}) = 0;
};

TAutoPtr<IPlanBuilder> CreatePlanBuilder(TTypeAnnotationContext& types);

}