Skip to content

Commit 1ba3bef

Browse files
authored
Merge pull request #1625 from marklogic/feature/668-fromSql
DEVEXP-668 Added test for fromSql with no rows returned
2 parents 585311c + 029c175 commit 1ba3bef

File tree

2 files changed

+43
-22
lines changed

2 files changed

+43
-22
lines changed

marklogic-client-api/src/test/java/com/marklogic/client/test/datamovement/RowBatcherTest.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,7 @@
4343

4444
import java.io.BufferedReader;
4545
import java.io.StringReader;
46-
import java.util.Arrays;
47-
import java.util.Collections;
48-
import java.util.HashSet;
49-
import java.util.Set;
46+
import java.util.*;
5047
import java.util.concurrent.ConcurrentSkipListSet;
5148
import java.util.concurrent.atomic.AtomicBoolean;
5249
import java.util.concurrent.atomic.AtomicInteger;
@@ -203,6 +200,24 @@ public void testJsonRowsForest2Threads() throws Exception {
203200
public void testJsonDocs1Thread() throws Exception {
204201
runDocsTest(jsonBatcher(1));
205202
}
203+
204+
@Test
205+
void noRowsReturned() {
206+
RowBatcher<JsonNode> rowBatcher = jsonBatcher(1);
207+
RowManager rowMgr = rowBatcher.getRowManager();
208+
RawQueryDSLPlan plan = rowMgr.newRawQueryDSLPlan(
209+
new StringHandle("op.fromView('rowBatcherUnitTest', 'code').where(op.eq(op.col('field1'), 12345))"));
210+
211+
List<JsonNode> results = new ArrayList<>();
212+
rowBatcher.withBatchView(plan).onSuccess(batch -> results.add(batch.getRowsDoc()));
213+
moveMgr.startJob(rowBatcher);
214+
rowBatcher.awaitCompletion();
215+
moveMgr.stopJob(rowBatcher);
216+
217+
assertEquals(0, results.size(), "Expecting no results as the Optic query shouldn't match any rows; " +
218+
"also expecting no error to occur.");
219+
}
220+
206221
@Test
207222
public void testJsonDocs3Threads() throws Exception {
208223
runDocsTest(jsonBatcher(3));

marklogic-client-api/src/test/java/com/marklogic/client/test/rows/RowManagerTest.java

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -481,24 +481,30 @@ private void testViewRows(RowSet<RowRecord> rows) {
481481
assertEquals( 2, rowNum);
482482
}
483483

484-
@Test
485-
public void testSQL() {
486-
RowManager rowMgr = Common.client.newRowManager();
487-
PlanBuilder p = rowMgr.newPlanBuilder();
488-
PlanBuilder.ExportablePlan builtPlan =
489-
p.fromSql("select * from opticUnitTest.musician_ml10");
490-
int rowNum = 0;
491-
String exception = "";
492-
try {
493-
for (RowRecord row: rowMgr.resultRows(builtPlan)) {
494-
rowNum++;
495-
}
496-
} catch (Exception e) {
497-
exception = e.toString();
498-
}
499-
assertEquals(4, rowNum);
500-
assertEquals("", exception);
501-
}
484+
@Test
485+
void testSQL() {
486+
final String query = "select * from opticUnitTest.musician_ml10";
487+
RowManager mgr = Common.client.newRowManager();
488+
489+
RowSet<RowRecord> rows = mgr.resultRows(mgr.newPlanBuilder().fromSql(query));
490+
assertEquals(4, rows.stream().count());
491+
492+
JsonNode doc = mgr.resultDoc(mgr.newPlanBuilder().fromSql(query), new JacksonHandle()).get();
493+
assertEquals(3, doc.get("columns").size());
494+
assertEquals(4, doc.get("rows").size());
495+
}
496+
497+
@Test
498+
void sqlNoRows() {
499+
final String query = "select * from opticUnitTest.musician_ml10 where lastName = 'NOT_FOUND'";
500+
RowManager mgr = Common.client.newRowManager();
501+
502+
RowSet<RowRecord> rows = mgr.resultRows(mgr.newPlanBuilder().fromSql(query));
503+
assertEquals(0, rows.stream().count());
504+
505+
JsonNode doc = mgr.resultDoc(mgr.newPlanBuilder().fromSql(query), new JacksonHandle()).get();
506+
assertNull(doc);
507+
}
502508

503509
@Test
504510
public void testSQL0Result() {

0 commit comments

Comments
 (0)