@@ -40,6 +40,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
40
40
TString Stats;
41
41
TString Syntax;
42
42
TString UserToken;
43
+ bool IsBase64Encode;
43
44
44
45
enum ESchemaType {
45
46
Classic,
@@ -85,6 +86,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
85
86
Schema = StringToSchemaType (schemaStr);
86
87
Syntax = params.Get (" syntax" );
87
88
Direct = FromStringWithDefault<bool >(params.Get (" direct" ), Direct);
89
+ IsBase64Encode = FromStringWithDefault<bool >(params.Get (" base64" ), true );
88
90
}
89
91
90
92
void ParsePostContent (const TStringBuf& content) {
@@ -252,7 +254,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
252
254
}
253
255
254
256
private:
255
- static NJson::TJsonValue ColumnPrimitiveValueToJsonValue (NYdb::TValueParser& valueParser) {
257
+ NJson::TJsonValue ColumnPrimitiveValueToJsonValue (NYdb::TValueParser& valueParser) {
256
258
switch (valueParser.GetPrimitiveType ()) {
257
259
case NYdb::EPrimitiveType::Bool:
258
260
return valueParser.GetBool ();
@@ -293,7 +295,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
293
295
case NYdb::EPrimitiveType::TzTimestamp:
294
296
return valueParser.GetTzTimestamp ();
295
297
case NYdb::EPrimitiveType::String:
296
- return Base64Encode (valueParser.GetString ());
298
+ return IsBase64Encode ? Base64Encode (valueParser.GetString ()) : valueParser. GetString ( );
297
299
case NYdb::EPrimitiveType::Yson:
298
300
return valueParser.GetYson ();
299
301
case NYdb::EPrimitiveType::Json:
@@ -307,7 +309,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
307
309
}
308
310
}
309
311
310
- static NJson::TJsonValue ColumnValueToJsonValue (NYdb::TValueParser& valueParser) {
312
+ NJson::TJsonValue ColumnValueToJsonValue (NYdb::TValueParser& valueParser) {
311
313
switch (valueParser.GetKind ()) {
312
314
case NYdb::TTypeParser::ETypeKind::Primitive:
313
315
return ColumnPrimitiveValueToJsonValue (valueParser);
@@ -603,7 +605,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
603
605
NYdb::TResultSetParser rsParser (resultSet);
604
606
while (rsParser.TryNextRow ()) {
605
607
NJson::TJsonValue& jsonRow = jsonResults.AppendValue ({});
606
- TString row = NYdb::FormatResultRowJson (rsParser, columnsMeta, NYdb::EBinaryStringEncoding::Base64);
608
+ TString row = NYdb::FormatResultRowJson (rsParser, columnsMeta, IsBase64Encode ? NYdb::EBinaryStringEncoding::Base64 : NYdb::EBinaryStringEncoding::Unicode );
607
609
NJson::ReadJsonTree (row, &jsonRow);
608
610
}
609
611
}
@@ -633,6 +635,7 @@ struct TJsonRequestParameters<TJsonQuery> {
633
635
{"name":"schema","in":"query","description":"result format schema (classic, modern, ydb, multi)","required":false,"type":"string"},
634
636
{"name":"stats","in":"query","description":"return stats (profile)","required":false,"type":"string"},
635
637
{"name":"action","in":"query","description":"execute method (execute-scan, execute-script, execute-query, execute-data,explain-ast, explain-scan, explain-script, explain-query, explain-data)","required":false,"type":"string"},
638
+ {"name":"base64","in":"query","description":"return strings using base64 encoding","required":false,"type":"string"},
636
639
{"name":"timeout","in":"query","description":"timeout in ms","required":false,"type":"integer"}])___" ;
637
640
}
638
641
};
0 commit comments