@@ -1590,6 +1590,56 @@ Y_UNIT_TEST_SUITE(Viewer) {
15901590 size_t AuthorizeTicketFails = 0 ;
15911591 };
15921592
1593+ Y_UNIT_TEST (FloatPointJsonQuery) {
1594+ TPortManager tp;
1595+ ui16 port = tp.GetPort (2134 );
1596+ ui16 grpcPort = tp.GetPort (2135 );
1597+ ui16 monPort = tp.GetPort (8765 );
1598+ auto settings = TServerSettings (port);
1599+ settings.InitKikimrRunConfig ()
1600+ .SetNodeCount (1 )
1601+ .SetUseRealThreads (true )
1602+ .SetDomainName (" Root" )
1603+ .SetMonitoringPortOffset (monPort, true );
1604+
1605+ TServer server (settings);
1606+ server.EnableGRpc (grpcPort);
1607+ TClient client (settings);
1608+
1609+ TTestActorRuntime& runtime = *server.GetRuntime ();
1610+ runtime.SetLogPriority (NKikimrServices::GRPC_SERVER, NLog::PRI_TRACE);
1611+ runtime.SetLogPriority (NKikimrServices::TICKET_PARSER, NLog::PRI_TRACE);
1612+
1613+ TKeepAliveHttpClient httpClient (" localhost" , monPort);
1614+ TStringStream responseStream;
1615+ TKeepAliveHttpClient::THeaders headers;
1616+ headers[" Content-Type" ] = " application/json" ;
1617+ headers[" Authorization" ] = " test_ydb_token" ;
1618+ TString requestBody = R"json( {
1619+ "query": "SELECT cast('311111111113.222222223' as Double);",
1620+ "database": "/Root",
1621+ "action": "execute-script",
1622+ "syntax": "yql_v1",
1623+ "stats": "profile"
1624+ })json" ;
1625+ const TKeepAliveHttpClient::THttpCode statusCode = httpClient.DoPost (" /viewer/query?timeout=600000&base64=false&schema=modern" , requestBody, &responseStream, headers);
1626+ const TString response = responseStream.ReadAll ();
1627+ UNIT_ASSERT_EQUAL_C (statusCode, HTTP_OK, statusCode << " : " << response);
1628+ {
1629+ NJson::TJsonReaderConfig jsonCfg;
1630+
1631+ NJson::TJsonValue json;
1632+ NJson::ReadJsonTree (response, &jsonCfg, &json, /* throwOnError = */ true );
1633+
1634+ auto resultSets = json[" result" ].GetArray ();
1635+ UNIT_ASSERT_EQUAL_C (1 , resultSets.size (), response);
1636+
1637+ double parsed = resultSets.begin ()->GetArray ().begin ()->GetDouble ();
1638+ double expected = 311111111113.22222 ;
1639+ UNIT_ASSERT_DOUBLES_EQUAL (parsed, expected, 0.00001 );
1640+ }
1641+ }
1642+
15931643 Y_UNIT_TEST (AuthorizeYdbTokenWithDatabaseAttributes) {
15941644 TPortManager tp;
15951645 ui16 port = tp.GetPort (2134 );
0 commit comments