blob: 3ab11e78bd40b199de01f54484a9da44c31aa5f5 (
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#pragma once
#include <yql/essentials/core/yql_type_annotation.h>
#include <yql/essentials/core/yql_execution.h>
namespace Nkikimr::NMiniKQL {
class IFunctionRegistry;
}
namespace NYql {
class IResultWriter : public TThrRefBase {
public:
virtual void Init(bool discard, const TString& label, TMaybe<TPosition> pos, bool unordered) = 0;
virtual void Write(const TStringBuf& resultData) = 0;
virtual void Commit(bool overflow) = 0;
virtual bool IsDiscard() const = 0;
virtual TStringBuf Str() = 0;
virtual ui64 Size() = 0;
};
TIntrusivePtr<IResultWriter> CreateYsonResultWriter(NYson::EYsonFormat format);
struct TResultProviderConfig : TThrRefBase {
using TResultWriterFactory = std::function<TIntrusivePtr<IResultWriter>()>;
TResultProviderConfig(TTypeAnnotationContext& types,
const NKikimr::NMiniKQL::IFunctionRegistry& functionRegistry,
IDataProvider::EResultFormat format, const TString& formatDetails, TResultWriterFactory writerFactory)
: Types(types)
, FunctionRegistry(functionRegistry)
, WriterFactory(writerFactory)
{
FillSettings.Format = format;
FillSettings.FormatDetails = formatDetails;
}
TTypeAnnotationContext& Types;
const NKikimr::NMiniKQL::IFunctionRegistry& FunctionRegistry;
IDataProvider::TFillSettings FillSettings;
TResultWriterFactory WriterFactory;
TVector<TString> CommittedResults;
bool SupportsResultPosition = false;
};
TIntrusivePtr<IDataProvider> CreateResultProvider(const TIntrusivePtr<TResultProviderConfig>& config);
const THashSet<TStringBuf>& ResultProviderFunctions();
}
|