blob: 8acdbcfb3474c9505475e16629a34a9e5e903fd5 (
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
|
#include "fake_spec.h"
namespace NYql {
namespace NPureCalc {
NYT::TNode MakeFakeSchema(bool pg) {
auto itemType = NYT::TNode::CreateList();
itemType.Add(pg ? "PgType" : "DataType");
itemType.Add(pg ? "int4" : "Int32");
auto itemNode = NYT::TNode::CreateList();
itemNode.Add("Name");
itemNode.Add(std::move(itemType));
auto items = NYT::TNode::CreateList();
items.Add(std::move(itemNode));
auto schema = NYT::TNode::CreateList();
schema.Add("StructType");
schema.Add(std::move(items));
return schema;
}
TFakeInputSpec FakeIS(ui32 inputsNumber, bool pg) {
auto spec = TFakeInputSpec();
spec.Schemas = TVector<NYT::TNode>(inputsNumber, MakeFakeSchema(pg));
return spec;
}
TFakeOutputSpec FakeOS(bool pg) {
auto spec = TFakeOutputSpec();
spec.Schema = MakeFakeSchema(pg);
return spec;
}
NYT::TNode CreateTypeNode(const TString& fieldType) {
return NYT::TNode::CreateList()
.Add("DataType")
.Add(fieldType);
}
NYT::TNode CreateOptionalTypeNode(const TString& fieldType) {
return NYT::TNode::CreateList()
.Add("OptionalType")
.Add(CreateTypeNode(fieldType));
}
void AddField(NYT::TNode& node, const TString& fieldName, const TString& fieldType) {
node.Add(
NYT::TNode::CreateList()
.Add(fieldName)
.Add(CreateOptionalTypeNode(fieldType))
);
}
NYT::TNode MakeFakeStructSchema() {
auto structMembers = NYT::TNode::CreateList();
AddField(structMembers, "Id", "Uint32");
AddField(structMembers, "Name", "Utf8");
AddField(structMembers, "Body", "String");
auto rootMembers = NYT::TNode::CreateList();
rootMembers.Add(
NYT::TNode::CreateList()
.Add("_r")
.Add(NYT::TNode::CreateList()
.Add("StructType")
.Add(std::move(structMembers)))
);
return NYT::TNode::CreateList()
.Add("StructType")
.Add(std::move(rootMembers));
}
TFakeOutputSpec FakeStructOS() {
auto spec = TFakeOutputSpec();
spec.Schema = MakeFakeStructSchema();
return spec;
}
}
}
|