@@ -1115,6 +1115,56 @@ Y_UNIT_TEST_SUITE(Viewer) {
1115
1115
size_t AuthorizeTicketFails = 0 ;
1116
1116
};
1117
1117
1118
+ Y_UNIT_TEST (FloatPointJsonQuery) {
1119
+ TPortManager tp;
1120
+ ui16 port = tp.GetPort (2134 );
1121
+ ui16 grpcPort = tp.GetPort (2135 );
1122
+ ui16 monPort = tp.GetPort (8765 );
1123
+ auto settings = TServerSettings (port);
1124
+ settings.InitKikimrRunConfig ()
1125
+ .SetNodeCount (1 )
1126
+ .SetUseRealThreads (true )
1127
+ .SetDomainName (" Root" )
1128
+ .SetMonitoringPortOffset (monPort, true );
1129
+
1130
+ TServer server (settings);
1131
+ server.EnableGRpc (grpcPort);
1132
+ TClient client (settings);
1133
+
1134
+ TTestActorRuntime& runtime = *server.GetRuntime ();
1135
+ runtime.SetLogPriority (NKikimrServices::GRPC_SERVER, NLog::PRI_TRACE);
1136
+ runtime.SetLogPriority (NKikimrServices::TICKET_PARSER, NLog::PRI_TRACE);
1137
+
1138
+ TKeepAliveHttpClient httpClient (" localhost" , monPort);
1139
+ TStringStream responseStream;
1140
+ TKeepAliveHttpClient::THeaders headers;
1141
+ headers[" Content-Type" ] = " application/json" ;
1142
+ headers[" Authorization" ] = " test_ydb_token" ;
1143
+ TString requestBody = R"json( {
1144
+ "query": "SELECT cast('311111111113.222222223' as Double);",
1145
+ "database": "/Root",
1146
+ "action": "execute-script",
1147
+ "syntax": "yql_v1",
1148
+ "stats": "profile"
1149
+ })json" ;
1150
+ const TKeepAliveHttpClient::THttpCode statusCode = httpClient.DoPost (" /viewer/json/query?timeout=600000&base64=false&schema=modern" , requestBody, &responseStream, headers);
1151
+ const TString response = responseStream.ReadAll ();
1152
+ UNIT_ASSERT_EQUAL_C (statusCode, HTTP_OK, statusCode << " : " << response);
1153
+ {
1154
+ NJson::TJsonReaderConfig jsonCfg;
1155
+
1156
+ NJson::TJsonValue json;
1157
+ NJson::ReadJsonTree (response, &jsonCfg, &json, /* throwOnError = */ true );
1158
+
1159
+ auto resultSets = json[" result" ].GetArray ();
1160
+ UNIT_ASSERT_EQUAL_C (1 , resultSets.size (), response);
1161
+
1162
+ double parsed = resultSets.begin ()->GetArray ().begin ()->GetDouble ();
1163
+ double expected = 311111111113.22222 ;
1164
+ UNIT_ASSERT_DOUBLES_EQUAL (parsed, expected, 0.00001 );
1165
+ }
1166
+ }
1167
+
1118
1168
Y_UNIT_TEST (AuthorizeYdbTokenWithDatabaseAttributes) {
1119
1169
TPortManager tp;
1120
1170
ui16 port = tp.GetPort (2134 );
@@ -1162,7 +1212,7 @@ Y_UNIT_TEST_SUITE(Viewer) {
1162
1212
"syntax": "yql_v1",
1163
1213
"stats": "profile"
1164
1214
})json" ;
1165
- const TKeepAliveHttpClient::THttpCode statusCode = httpClient.DoPost (" /viewer/query?timeout=600000&base64=false&schema=modern" , requestBody, &responseStream, headers);
1215
+ const TKeepAliveHttpClient::THttpCode statusCode = httpClient.DoPost (" /viewer/json/ query?timeout=600000&base64=false&schema=modern" , requestBody, &responseStream, headers);
1166
1216
const TString response = responseStream.ReadAll ();
1167
1217
UNIT_ASSERT_EQUAL_C (statusCode, HTTP_OK, statusCode << " : " << response);
1168
1218
0 commit comments