@@ -277,6 +277,80 @@ public void testQueryRows() throws Exception {
277277 }
278278 }
279279
280+ @ Test
281+ public void testQueryRowWithParam () throws Exception {
282+ try (InfluxDBClient client = InfluxDBClient .getInstance (
283+ System .getenv ("TESTING_INFLUXDB_URL" ),
284+ System .getenv ("TESTING_INFLUXDB_TOKEN" ).toCharArray (),
285+ System .getenv ("TESTING_INFLUXDB_DATABASE" ),
286+ null )) {
287+ String uuid = UUID .randomUUID ().toString ();
288+ String measurement = "host21" ;
289+ List <Map <String , Object >> testDatas = new ArrayList <>();
290+ for (int i = 0 ; i <= 9 ; i ++) {
291+ long timestamp = System .currentTimeMillis ();
292+ Map <String , Object > map = Map .of (
293+ "measurement" , measurement ,
294+ "tag" , "tagValue" ,
295+ "name" , "intel" ,
296+ "mem_total" , 2048.0 ,
297+ "disk_free" , 100L ,
298+ "temperature" , 100.86 ,
299+ "isActive" , true ,
300+ "time" , timestamp ,
301+ "testId" , uuid
302+ );
303+ String record = String .format (
304+ "%s,tag=tagValue "
305+ + "name=\" %s\" ,"
306+ + "mem_total=%f,"
307+ + "disk_free=%di,"
308+ + "temperature=%f,"
309+ + "isActive=%b,"
310+ + "testId=\" %s\" %d" ,
311+ measurement ,
312+ map .get ("name" ),
313+ (Double ) map .get ("mem_total" ),
314+ (Long ) map .get ("disk_free" ),
315+ (Double ) map .get ("temperature" ),
316+ map .get ("isActive" ),
317+ uuid ,
318+ timestamp
319+ );
320+ client .writeRecord (record , new WriteOptions (null , WritePrecision .MS , null ));
321+ testDatas .add (map );
322+ }
323+
324+ Map <String , Object > parameters = Map .of ("testId" , uuid );
325+ // Result set much be ordered by time
326+ String sql = String .format ("Select * from %s where \" testId\" =$testId order by time" , measurement );
327+ try (Stream <Map <String , Object >> stream = client .queryRows (sql , parameters )) {
328+ List <Map <String , Object >> results = stream .collect (Collectors .toList ());
329+ for (int i = 0 ; i <= 9 ; i ++) {
330+ Map <String , Object > row = results .get (i );
331+ Map <String , Object > testData = testDatas .get (i );
332+ Assertions .assertThat (row .get ("tag" ).getClass ()).isEqualTo (String .class );
333+ Assertions .assertThat (row .get ("tag" )).isEqualTo (testData .get ("tag" ));
334+
335+ Assertions .assertThat (row .get ("name" ).getClass ()).isEqualTo (String .class );
336+ Assertions .assertThat (row .get ("name" )).isEqualTo (testData .get ("name" ));
337+
338+ Assertions .assertThat (row .get ("mem_total" ).getClass ()).isEqualTo (Double .class );
339+ Assertions .assertThat (row .get ("mem_total" )).isEqualTo (testData .get ("mem_total" ));
340+
341+ Assertions .assertThat (row .get ("disk_free" ).getClass ()).isEqualTo (Long .class );
342+ Assertions .assertThat (row .get ("disk_free" )).isEqualTo (testData .get ("disk_free" ));
343+
344+ Assertions .assertThat (row .get ("isActive" ).getClass ()).isEqualTo (Boolean .class );
345+ Assertions .assertThat (row .get ("isActive" )).isEqualTo (testData .get ("isActive" ));
346+
347+ Assertions .assertThat (row .get ("time" ).getClass ()).isEqualTo (BigInteger .class );
348+ Assertions .assertThat (row .get ("time" ))
349+ .isEqualTo (BigInteger .valueOf ((Long ) testData .get ("time" ) * 1_000_000 ));
350+ }
351+ }
352+ }
353+ }
280354
281355 @ EnabledIfEnvironmentVariable (named = "TESTING_INFLUXDB_URL" , matches = ".*" )
282356 @ EnabledIfEnvironmentVariable (named = "TESTING_INFLUXDB_TOKEN" , matches = ".*" )
0 commit comments