@Override CloseableIterator<PartialResultSet> startStream(@Nullable ByteString resumeToken) { GrpcStreamIterator stream = new GrpcStreamIterator(prefetchChunks); if (resumeToken != null) { request.setResumeToken(resumeToken); } SpannerRpc.StreamingCall call = rpc.executeQuery(request.build(), stream.consumer(), session.options); call.request(prefetchChunks); stream.setCall(call); return stream; } };
@Test @SuppressWarnings("all") public void executeStreamingSqlTest() throws Exception { boolean chunkedValue = true; ByteString resumeToken = ByteString.copyFromUtf8("103"); PartialResultSet expectedResponse = PartialResultSet.newBuilder() .setChunkedValue(chunkedValue) .setResumeToken(resumeToken) .build(); mockSpanner.addResponse(expectedResponse); SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); String sql = "sql114126"; ExecuteSqlRequest request = ExecuteSqlRequest.newBuilder().setSession(session.toString()).setSql(sql).build(); MockStreamObserver<PartialResultSet> responseObserver = new MockStreamObserver<>(); ServerStreamingCallable<ExecuteSqlRequest, PartialResultSet> callable = client.executeStreamingSqlCallable(); callable.serverStreamingCall(request, responseObserver); List<PartialResultSet> actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); }
@Test @SuppressWarnings("all") public void executeStreamingSqlExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT); mockSpanner.addException(exception); SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); String sql = "sql114126"; ExecuteSqlRequest request = ExecuteSqlRequest.newBuilder().setSession(session.toString()).setSql(sql).build(); MockStreamObserver<PartialResultSet> responseObserver = new MockStreamObserver<>(); ServerStreamingCallable<ExecuteSqlRequest, PartialResultSet> callable = client.executeStreamingSqlCallable(); callable.serverStreamingCall(request, responseObserver); try { List<PartialResultSet> actualResponses = responseObserver.future().get(); Assert.fail("No exception thrown"); } catch (ExecutionException e) { Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); InvalidArgumentException apiException = (InvalidArgumentException) e.getCause(); Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); } }
@Override public com.google.spanner.v1.ResultSet call() throws Exception { return rpc.executeQuery(builder.build(), session.options); } });
@Override public com.google.spanner.v1.ResultSet call() throws Exception { return rpc.executeQuery(builder.build(), session.options); } });
@Override CloseableIterator<PartialResultSet> startStream(@Nullable ByteString resumeToken) { GrpcStreamIterator stream = new GrpcStreamIterator(prefetchChunks); if (resumeToken != null) { request.setResumeToken(resumeToken); } SpannerRpc.StreamingCall call = rpc.executeQuery(request.build(), stream.consumer(), session.options); call.request(prefetchChunks); stream.setCall(call); return stream; } };
@Override public com.google.spanner.v1.ResultSet call() throws Exception { return rpc.executeQuery(builder.build(), session.options); } });
@Override public com.google.spanner.v1.ResultSet call() throws Exception { return rpc.executeQuery(builder.build(), session.options); } });