blob: 220ab3f27fb3a682535eac1f7bc2a48cb2677ea2 (
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
#include "helpers.h"
#include <yt/cpp/mapreduce/interface/config.h>
#include <yt/cpp/mapreduce/interface/serialize.h>
#include <yt/cpp/mapreduce/interface/fluent.h>
#include <library/cpp/yson/node/node_builder.h>
#include <library/cpp/yson/node/node_visitor.h>
#include <library/cpp/yson/parser.h>
#include <library/cpp/yson/writer.h>
#include <library/cpp/json/json_reader.h>
#include <library/cpp/json/json_value.h>
#include <util/stream/input.h>
#include <util/stream/output.h>
#include <util/stream/str.h>
namespace NYT {
////////////////////////////////////////////////////////////////////////////////
TString NodeListToYsonString(const TNode::TListType& nodes)
{
TStringStream stream;
::NYson::TYsonWriter writer(&stream, NYson::EYsonFormat::Binary, ::NYson::EYsonType::ListFragment);
auto list = BuildYsonListFluently(&writer);
for (const auto& node : nodes) {
list.Item().Value(node);
}
return stream.Str();
}
TNode PathToNode(const TRichYPath& path)
{
TNode result;
TNodeBuilder builder(&result);
Serialize(path, &builder);
return result;
}
TNode PathToParamNode(const TRichYPath& path)
{
return TNode()("path", PathToNode(path));
}
TString AttributesToYsonString(const TNode& node)
{
return BuildYsonStringFluently().BeginMap()
.Item("attributes").Value(node)
.EndMap();
}
TString AttributeFilterToYsonString(const TAttributeFilter& filter)
{
return BuildYsonStringFluently().BeginMap()
.Item("attributes").Value(filter)
.EndMap();
}
TNode NodeFromTableSchema(const TTableSchema& schema)
{
TNode result;
TNodeBuilder builder(&result);
Serialize(schema, &builder);
return result;
}
void MergeNodes(TNode& dst, const TNode& src)
{
if (dst.IsMap() && src.IsMap()) {
auto& dstMap = dst.AsMap();
const auto& srcMap = src.AsMap();
for (const auto& srcItem : srcMap) {
const auto& key = srcItem.first;
auto dstItem = dstMap.find(key);
if (dstItem != dstMap.end()) {
MergeNodes(dstItem->second, srcItem.second);
} else {
dstMap[key] = srcItem.second;
}
}
} else {
if (dst.GetType() == src.GetType() && src.HasAttributes()) {
auto attributes = dst.GetAttributes();
MergeNodes(attributes, src.GetAttributes());
dst = src;
dst.Attributes() = attributes;
} else {
dst = src;
}
}
}
TYPath AddPathPrefix(const TYPath& path, const TString& pathPrefix)
{
if (path.StartsWith("//") || path.StartsWith("#")) {
return path;
}
return pathPrefix + path;
}
TString GetWriteTableCommand(const TString& apiVersion)
{
return apiVersion == "v2" ? "write" : "write_table";
}
TString GetReadTableCommand(const TString& apiVersion)
{
return apiVersion == "v2" ? "read" : "read_table";
}
TString GetWriteFileCommand(const TString& apiVersion)
{
return apiVersion == "v2" ? "upload" : "write_file";
}
TString GetReadFileCommand(const TString& apiVersion)
{
return apiVersion == "v2" ? "download" : "read_file";
}
TString GetDefaultTransactionTitle()
{
const auto processState = TProcessState::Get();
TStringStream res;
res << "User transaction. Created by: " << processState->UserName << " on " << processState->FqdnHostName
<< " client: " << processState->ClientVersion << " pid: " << processState->Pid;
res << " program: " << processState->BinaryName;
#ifndef NDEBUG
res << " build: debug";
#endif
return res.Str();
}
////////////////////////////////////////////////////////////////////////////////
} // namespace NYT
|