|
22 | 22 | import org.bson.BsonDouble;
|
23 | 23 | import org.bson.BsonInt64;
|
24 | 24 | import org.bson.BsonMinKey;
|
| 25 | +import org.bson.BsonString; |
25 | 26 | import org.junit.jupiter.api.Assertions;
|
26 | 27 | import org.junit.jupiter.api.Disabled;
|
27 | 28 | import org.junit.jupiter.api.DisplayName;
|
@@ -1399,4 +1400,75 @@ void testDateMinus() throws SQLException {
|
1399 | 1400 | Assertions.assertEquals("101", resultSet.getString(1));
|
1400 | 1401 | Assertions.assertFalse(resultSet.next());
|
1401 | 1402 | }
|
| 1403 | + |
| 1404 | + @Test |
| 1405 | + @DisplayName("Tests that setMaxRows limits the number of rows returned in result set.") |
| 1406 | + void testSetMaxRows() throws SQLException { |
| 1407 | + final String collection = "testSetMaxRows"; |
| 1408 | + final BsonDocument[] documents = new BsonDocument[10]; |
| 1409 | + final int totalNumberDocuments = 10; |
| 1410 | + final int maxRows = 5; |
| 1411 | + for (int i = 0; i < totalNumberDocuments; i++) { |
| 1412 | + documents[i] = new BsonDocument("field", new BsonString("value")); |
| 1413 | + } |
| 1414 | + insertBsonDocuments(collection, DATABASE_NAME, USER, PASSWORD, documents); |
| 1415 | + final Statement statement = getDocumentDbStatement(); |
| 1416 | + |
| 1417 | + // Don't set max rows |
| 1418 | + ResultSet resultSet = statement.executeQuery( |
| 1419 | + String.format("SELECT * FROM \"%s\".\"%s\"", DATABASE_NAME, collection)); |
| 1420 | + int actualRowCount = 0; |
| 1421 | + while (resultSet.next()) { |
| 1422 | + actualRowCount++; |
| 1423 | + } |
| 1424 | + Assertions.assertEquals(0, statement.getMaxRows()); |
| 1425 | + Assertions.assertEquals(totalNumberDocuments, actualRowCount); |
| 1426 | + |
| 1427 | + // Set max rows < actual |
| 1428 | + statement.setMaxRows(maxRows); |
| 1429 | + resultSet = statement.executeQuery( |
| 1430 | + String.format("SELECT * FROM \"%s\".\"%s\"", DATABASE_NAME, collection)); |
| 1431 | + actualRowCount = 0; |
| 1432 | + while (resultSet.next()) { |
| 1433 | + actualRowCount++; |
| 1434 | + } |
| 1435 | + Assertions.assertEquals(maxRows, statement.getMaxRows()); |
| 1436 | + Assertions.assertEquals(maxRows, actualRowCount); |
| 1437 | + |
| 1438 | + // Set unlimited |
| 1439 | + statement.setMaxRows(0); |
| 1440 | + resultSet = statement.executeQuery( |
| 1441 | + String.format("SELECT * FROM \"%s\".\"%s\"", DATABASE_NAME, collection)); |
| 1442 | + actualRowCount = 0; |
| 1443 | + while (resultSet.next()) { |
| 1444 | + actualRowCount++; |
| 1445 | + } |
| 1446 | + Assertions.assertEquals(0, statement.getMaxRows()); |
| 1447 | + Assertions.assertEquals(totalNumberDocuments, actualRowCount); |
| 1448 | + |
| 1449 | + // Set max rows > SQL LIMIT |
| 1450 | + int limit = maxRows - 1; |
| 1451 | + statement.setMaxRows(maxRows); |
| 1452 | + resultSet = statement.executeQuery( |
| 1453 | + String.format("SELECT * FROM \"%s\".\"%s\" LIMIT %d", DATABASE_NAME, collection, limit)); |
| 1454 | + actualRowCount = 0; |
| 1455 | + while (resultSet.next()) { |
| 1456 | + actualRowCount++; |
| 1457 | + } |
| 1458 | + Assertions.assertEquals(maxRows, statement.getMaxRows()); |
| 1459 | + Assertions.assertEquals(limit, actualRowCount); |
| 1460 | + |
| 1461 | + // Set max rows < SQL LIMIT |
| 1462 | + limit = maxRows + 1; |
| 1463 | + statement.setMaxRows(maxRows); |
| 1464 | + resultSet = statement.executeQuery( |
| 1465 | + String.format("SELECT * FROM \"%s\".\"%s\" LIMIT %d", DATABASE_NAME, collection, limit)); |
| 1466 | + actualRowCount = 0; |
| 1467 | + while (resultSet.next()) { |
| 1468 | + actualRowCount++; |
| 1469 | + } |
| 1470 | + Assertions.assertEquals(maxRows, statement.getMaxRows()); |
| 1471 | + Assertions.assertEquals(maxRows, actualRowCount); |
| 1472 | + |
| 1473 | + } |
1402 | 1474 | }
|
0 commit comments