@@ -40,6 +40,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
4040 TString Stats;
4141 TString Syntax;
4242 TString UserToken;
43+ bool IsBase64Encode;
4344
4445 enum ESchemaType {
4546 Classic,
@@ -85,6 +86,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
8586 Schema = StringToSchemaType (schemaStr);
8687 Syntax = params.Get (" syntax" );
8788 Direct = FromStringWithDefault<bool >(params.Get (" direct" ), Direct);
89+ IsBase64Encode = FromStringWithDefault<bool >(params.Get (" base64" ), true );
8890 }
8991
9092 void ParsePostContent (const TStringBuf& content) {
@@ -252,7 +254,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
252254 }
253255
254256private:
255- static NJson::TJsonValue ColumnPrimitiveValueToJsonValue (NYdb::TValueParser& valueParser) {
257+ NJson::TJsonValue ColumnPrimitiveValueToJsonValue (NYdb::TValueParser& valueParser) {
256258 switch (valueParser.GetPrimitiveType ()) {
257259 case NYdb::EPrimitiveType::Bool:
258260 return valueParser.GetBool ();
@@ -293,7 +295,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
293295 case NYdb::EPrimitiveType::TzTimestamp:
294296 return valueParser.GetTzTimestamp ();
295297 case NYdb::EPrimitiveType::String:
296- return Base64Encode (valueParser.GetString ());
298+ return IsBase64Encode ? Base64Encode (valueParser.GetString ()) : valueParser. GetString ( );
297299 case NYdb::EPrimitiveType::Yson:
298300 return valueParser.GetYson ();
299301 case NYdb::EPrimitiveType::Json:
@@ -307,7 +309,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
307309 }
308310 }
309311
310- static NJson::TJsonValue ColumnValueToJsonValue (NYdb::TValueParser& valueParser) {
312+ NJson::TJsonValue ColumnValueToJsonValue (NYdb::TValueParser& valueParser) {
311313 switch (valueParser.GetKind ()) {
312314 case NYdb::TTypeParser::ETypeKind::Primitive:
313315 return ColumnPrimitiveValueToJsonValue (valueParser);
@@ -603,7 +605,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
603605 NYdb::TResultSetParser rsParser (resultSet);
604606 while (rsParser.TryNextRow ()) {
605607 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 );
607609 NJson::ReadJsonTree (row, &jsonRow);
608610 }
609611 }
@@ -633,6 +635,7 @@ struct TJsonRequestParameters<TJsonQuery> {
633635 {"name":"schema","in":"query","description":"result format schema (classic, modern, ydb, multi)","required":false,"type":"string"},
634636 {"name":"stats","in":"query","description":"return stats (profile)","required":false,"type":"string"},
635637 {"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"},
636639 {"name":"timeout","in":"query","description":"timeout in ms","required":false,"type":"integer"}])___" ;
637640 }
638641};
0 commit comments