From c4f72b60ee252a29935970ac05d3a43f4c53d967 Mon Sep 17 00:00:00 2001 From: lling Date: Mon, 18 Apr 2022 00:41:00 -0700 Subject: [PATCH] Enabling compression and chunking in b10 #1342 --- .../marklogic/client/impl/OkHttpServices.java | 18 ++++++++++++++++++ .../marklogic/client/test/RowManagerTest.java | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java b/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java index ee6e7b369..46fd04551 100644 --- a/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java +++ b/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java @@ -3975,6 +3975,11 @@ private U postIteratedResourceImpl( requestBldr = addTransactionScopedCookies(requestBldr, transaction); requestBldr = addTelemetryAgentId(requestBldr); + if ("rows".equals(path)) { + requestBldr.addHeader("ML-Check-ML11-Headers", "true"); + requestBldr.addHeader("TE", "trailers"); + } + Consumer resendableConsumer = new Consumer() { public void accept(Boolean resendable) { if (!isResendable) { @@ -4501,6 +4506,19 @@ private U makeResults( getEntity(body, MimeMultipart.class) : null; List partList = getPartList(entity); + try { + Headers trailer = response.trailers(); + + String code = trailer.get("ml-error-code"); + String msg = trailer.get("ml-error-message"); + String sha = trailer.get("ml-content-sha256"); + + if (!"N/A".equals(code)) { + throw new RuntimeException("code = " + code + ", msg = " + msg + ", sha256 = " + sha); + } + } catch (IOException e) { + e.printStackTrace(); + } Closeable closeable = response; return makeResults(constructor, reqlog, operation, entityType, partList, response, closeable); } diff --git a/marklogic-client-api/src/test/java/com/marklogic/client/test/RowManagerTest.java b/marklogic-client-api/src/test/java/com/marklogic/client/test/RowManagerTest.java index b0eea66fc..cafda74a0 100644 --- a/marklogic-client-api/src/test/java/com/marklogic/client/test/RowManagerTest.java +++ b/marklogic-client-api/src/test/java/com/marklogic/client/test/RowManagerTest.java @@ -465,6 +465,24 @@ public void testView() { testViewRows(rowMgr.resultRows(builtPlan)); } + + @Test + public void testSQLException() { + RowManager rowMgr = Common.client.newRowManager(); + + PlanBuilder p = rowMgr.newPlanBuilder(); + + PlanBuilder.ExportablePlan builtPlan = + p.fromSql("select case when lastName = 'Davis' then fn_error(fn_qname('ERROR','test')) end, opticUnitTest.musician.* from (select * from opticUnitTest.musician order by lastName)"); + String exception = ""; + try { + rowMgr.resultRows(builtPlan); + } catch (Exception e) { + int index = e.getMessage().indexOf("sha256"); + exception = e.getMessage().substring(0, index-2); + } + assertEquals(exception, "code = test, msg = error"); + } private void testViewRows(RowSet rows) { String[] lastName = {"Armstrong", "Davis"}; String[] firstName = {"Louis", "Miles"};