1
1
#include " schema_serialization_helpers.h"
2
-
3
2
#include " comparator.h"
4
3
5
4
#include < yt/yt/core/ytree/fluent.h>
6
5
7
6
namespace NYT ::NTableClient {
8
7
9
- void Deserialize (TMaybeDeletedColumnSchema& schema, NYson::TYsonPullParserCursor* cursor)
8
+ using namespace NYson ;
9
+ using namespace NYTree ;
10
+
11
+ // //////////////////////////////////////////////////////////////////////////////
12
+
13
+ void Deserialize (TMaybeDeletedColumnSchema& schema, TYsonPullParserCursor* cursor)
10
14
{
11
15
TSerializableColumnSchema wrapper;
12
16
wrapper.DeserializeFromCursor (cursor);
13
17
schema = wrapper;
14
18
}
15
19
16
- void Deserialize (TMaybeDeletedColumnSchema& schema, NYTree:: INodePtr node)
20
+ void Deserialize (TMaybeDeletedColumnSchema& schema, INodePtr node)
17
21
{
18
22
TSerializableColumnSchema wrapper;
19
- Deserialize (static_cast <NYTree:: TYsonStructLite&>(wrapper), node);
23
+ Deserialize (static_cast <TYsonStructLite&>(wrapper), node);
20
24
schema = static_cast <TMaybeDeletedColumnSchema>(wrapper);
21
25
}
22
26
@@ -25,6 +29,8 @@ TDeletedColumn TMaybeDeletedColumnSchema::GetDeletedColumnSchema() const
25
29
return TDeletedColumn (StableName ());
26
30
}
27
31
32
+ // //////////////////////////////////////////////////////////////////////////////
33
+
28
34
void TSerializableColumnSchema::Register (TRegistrar registrar)
29
35
{
30
36
registrar.BaseClassParameter (" name" , &TThis::Name_)
@@ -58,10 +64,10 @@ void TSerializableColumnSchema::Register(TRegistrar registrar)
58
64
});
59
65
}
60
66
61
- void TSerializableColumnSchema::DeserializeFromCursor (NYson:: TYsonPullParserCursor* cursor)
67
+ void TSerializableColumnSchema::DeserializeFromCursor (TYsonPullParserCursor* cursor)
62
68
{
63
- cursor->ParseMap ([&] (NYson:: TYsonPullParserCursor* cursor) {
64
- EnsureYsonToken (" column schema attribute key" , *cursor, NYson:: EYsonItemType::StringValue);
69
+ cursor->ParseMap ([&] (TYsonPullParserCursor* cursor) {
70
+ EnsureYsonToken (" column schema attribute key" , *cursor, EYsonItemType::StringValue);
65
71
auto key = (*cursor)->UncheckedAsString ();
66
72
if (key == TStringBuf (" name" )) {
67
73
cursor->Next ();
@@ -210,14 +216,16 @@ void TSerializableColumnSchema::RunPostprocessor()
210
216
}
211
217
}
212
218
213
- void Serialize (const TColumnSchema& schema, NYson::IYsonConsumer* consumer)
219
+ // //////////////////////////////////////////////////////////////////////////////
220
+
221
+ void Serialize (const TColumnSchema& schema, IYsonConsumer* consumer)
214
222
{
215
223
TSerializableColumnSchema wrapper;
216
224
wrapper.SetColumnSchema (schema);
217
- Serialize (static_cast <const NYTree:: TYsonStructLite&>(wrapper), consumer);
225
+ Serialize (static_cast <const TYsonStructLite&>(wrapper), consumer);
218
226
}
219
227
220
- void Serialize (const TDeletedColumn& schema, NYson:: IYsonConsumer* consumer)
228
+ void Serialize (const TDeletedColumn& schema, IYsonConsumer* consumer)
221
229
{
222
230
consumer->OnBeginMap ();
223
231
consumer->OnKeyedItem (" stable_name" );
@@ -227,13 +235,13 @@ void Serialize(const TDeletedColumn& schema, NYson::IYsonConsumer* consumer)
227
235
consumer->OnEndMap ();
228
236
}
229
237
230
- void Serialize (const TTableSchema& schema, NYson:: IYsonConsumer* consumer)
238
+ void Serialize (const TTableSchema& schema, IYsonConsumer* consumer)
231
239
{
232
- auto position = NYTree:: BuildYsonFluently (consumer)
240
+ auto position = BuildYsonFluently (consumer)
233
241
.BeginAttributes ()
234
242
.Item (" strict" ).Value (schema.IsStrict ())
235
243
.Item (" unique_keys" ).Value (schema.IsUniqueKeys ())
236
- .DoIf (schema.HasNontrivialSchemaModification (), [&] (NYTree:: TFluentMap fluent) {
244
+ .DoIf (schema.HasNontrivialSchemaModification (), [&] (TFluentMap fluent) {
237
245
fluent.Item (" schema_modification" ).Value (schema.GetSchemaModification ());
238
246
})
239
247
.EndAttributes ()
@@ -249,12 +257,7 @@ void Serialize(const TTableSchema& schema, NYson::IYsonConsumer* consumer)
249
257
position.EndList ();
250
258
}
251
259
252
- void Serialize (const TTableSchemaPtr& schema, NYson::IYsonConsumer* consumer)
253
- {
254
- Serialize (*schema, consumer);
255
- }
256
-
257
- void Deserialize (TTableSchema& schema, NYTree::INodePtr node)
260
+ void Deserialize (TTableSchema& schema, INodePtr node)
258
261
{
259
262
auto childNodes = node->AsList ()->GetChildren ();
260
263
@@ -263,7 +266,7 @@ void Deserialize(TTableSchema& schema, NYTree::INodePtr node)
263
266
264
267
for (auto childNode : childNodes) {
265
268
TSerializableColumnSchema wrapper;
266
- Deserialize (static_cast <NYTree:: TYsonStructLite&>(wrapper), childNode);
269
+ Deserialize (static_cast <TYsonStructLite&>(wrapper), childNode);
267
270
if (wrapper.Deleted () && *wrapper.Deleted ()) {
268
271
deletedColumns.push_back (TDeletedColumn (wrapper.StableName ()));
269
272
} else {
@@ -281,15 +284,15 @@ void Deserialize(TTableSchema& schema, NYTree::INodePtr node)
281
284
deletedColumns);
282
285
}
283
286
284
- void Deserialize (TTableSchema& schema, NYson:: TYsonPullParserCursor* cursor)
287
+ void Deserialize (TTableSchema& schema, TYsonPullParserCursor* cursor)
285
288
{
286
- bool strict = true ;
287
- bool uniqueKeys = false ;
288
- ETableSchemaModification modification = ETableSchemaModification::None;
289
+ auto strict = true ;
290
+ auto uniqueKeys = false ;
291
+ auto modification = ETableSchemaModification::None;
289
292
290
- if ((*cursor)->GetType () == NYson:: EYsonItemType::BeginAttributes) {
291
- cursor->ParseAttributes ([&] (NYson:: TYsonPullParserCursor* cursor) {
292
- EnsureYsonToken (TStringBuf (" table schema attribute key" ), *cursor, NYson:: EYsonItemType::StringValue);
293
+ if ((*cursor)->GetType () == EYsonItemType::BeginAttributes) {
294
+ cursor->ParseAttributes ([&] (TYsonPullParserCursor* cursor) {
295
+ EnsureYsonToken (TStringBuf (" table schema attribute key" ), *cursor, EYsonItemType::StringValue);
293
296
auto key = (*cursor)->UncheckedAsString ();
294
297
if (key == TStringBuf (" strict" )) {
295
298
cursor->Next ();
@@ -307,7 +310,7 @@ void Deserialize(TTableSchema& schema, NYson::TYsonPullParserCursor* cursor)
307
310
});
308
311
}
309
312
310
- EnsureYsonToken (TStringBuf (" table schema" ), *cursor, NYson:: EYsonItemType::BeginList);
313
+ EnsureYsonToken (TStringBuf (" table schema" ), *cursor, EYsonItemType::BeginList);
311
314
312
315
auto maybeDeletedColumns = ExtractTo<std::vector<TMaybeDeletedColumnSchema>>(cursor);
313
316
@@ -325,14 +328,19 @@ void Deserialize(TTableSchema& schema, NYson::TYsonPullParserCursor* cursor)
325
328
schema = TTableSchema (columns, strict, uniqueKeys, modification, deletedColumns);
326
329
}
327
330
328
- void Deserialize (TTableSchemaPtr& schema, NYTree::INodePtr node)
331
+ void Serialize (const TTableSchemaPtr& schema, IYsonConsumer* consumer)
332
+ {
333
+ Serialize (*schema, consumer);
334
+ }
335
+
336
+ void Deserialize (TTableSchemaPtr& schema, INodePtr node)
329
337
{
330
338
TTableSchema actualSchema;
331
339
Deserialize (actualSchema, node);
332
340
schema = New<TTableSchema>(std::move (actualSchema));
333
341
}
334
342
335
- void Deserialize (TTableSchemaPtr& schema, NYson:: TYsonPullParserCursor* cursor)
343
+ void Deserialize (TTableSchemaPtr& schema, TYsonPullParserCursor* cursor)
336
344
{
337
345
TTableSchema actualSchema;
338
346
Deserialize (actualSchema, cursor);
0 commit comments