summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/ide/completion/analysis/global/evaluate.h
blob: eaf4c4ff182384205a1823131c59ebb48f6fdf23 (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
#pragma once

#include "named_node_resolution.h"
#include "parse_tree.h"

#include <yql/essentials/sql/v1/ide/completion/core/environment.h>

namespace NSQLComplete {

using TIdentifier = TString;

using TPartialValue = std::variant<
    NYT::TNode,
    TIdentifier,
    std::monostate>;

bool IsDefined(const TPartialValue& value);

TMaybe<TString> ToObjectRef(const TPartialValue& value);

NYT::TNode Evaluate(SQLv1::Bind_parameterContext* ctx, const INamedNodes& nodes);

TPartialValue PartiallyEvaluate(antlr4::ParserRuleContext* ctx, const INamedNodes& nodes);

} // namespace NSQLComplete