Skip to content

Commit

Permalink
Preserve API compatibility. Revert when adding new functionality.
Browse files Browse the repository at this point in the history
  • Loading branch information
t-horikawa committed Oct 23, 2023
1 parent 005ead9 commit 630158e
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 72 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,10 @@ default FutureResponse<TableMetadata> send(
* which may raise error if the request was failed.
* @throws IOException if I/O error was occurred while sending the request
*/
default FutureResponse<ExecuteResult> send(@Nonnull SqlRequest.ExecuteStatement request) throws IOException {
default FutureResponse<Void> send(@Nonnull SqlRequest.ExecuteStatement request) throws IOException {
throw new UnsupportedOperationException();
}
default FutureResponse<ExecuteResult> send(@Nonnull SqlRequest.ExecutePreparedStatement request) throws IOException {
default FutureResponse<Void> send(@Nonnull SqlRequest.ExecutePreparedStatement request) throws IOException {
throw new UnsupportedOperationException();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public interface Transaction extends ServerResourceNeedingDisposal {
* @return a future response of the action
* @throws IOException if I/O error was occurred while sending request
*/
default FutureResponse<ExecuteResult> executeStatement(@Nonnull String source) throws IOException {
default FutureResponse<Void> executeStatement(@Nonnull String source) throws IOException {
throw new UnsupportedOperationException();
}

Expand All @@ -39,7 +39,7 @@ default FutureResponse<ExecuteResult> executeStatement(@Nonnull String source) t
* @return a future response of the action
* @throws IOException if I/O error was occurred while sending request
*/
default FutureResponse<ExecuteResult> executeStatement(
default FutureResponse<Void> executeStatement(
@Nonnull PreparedStatement statement,
@Nonnull SqlRequest.Parameter... parameters) throws IOException {
Objects.requireNonNull(statement);
Expand All @@ -56,7 +56,7 @@ default FutureResponse<ExecuteResult> executeStatement(
* @return a future response of the action
* @throws IOException if I/O error was occurred while sending request
*/
default FutureResponse<ExecuteResult> executeStatement(
default FutureResponse<Void> executeStatement(
@Nonnull PreparedStatement statement,
@Nonnull Collection<? extends SqlRequest.Parameter> parameters) throws IOException {
throw new UnsupportedOperationException();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
import com.tsurugidb.tsubakuro.sql.TableList;
import com.tsurugidb.tsubakuro.sql.TableMetadata;
import com.tsurugidb.tsubakuro.sql.Transaction;
import com.tsurugidb.tsubakuro.sql.ExecuteResult;
import com.tsurugidb.tsubakuro.sql.io.StreamBackedValueInput;
import com.tsurugidb.tsubakuro.util.ByteBufferInputStream;
import com.tsurugidb.tsubakuro.util.FutureResponse;
Expand Down Expand Up @@ -424,11 +423,11 @@ public FutureResponse<TableMetadata> send(
new DescribeTableProcessor().asResponseProcessor());
}

static class ExecuteProcessor implements MainResponseProcessor<ExecuteResult> {
static class ExecuteProcessor implements MainResponseProcessor<Void> {
private final AtomicReference<SqlResponse.Response> responseCache = new AtomicReference<>();

@Override
public ExecuteResult process(ByteBuffer payload) throws IOException, ServerException, InterruptedException {
public Void process(ByteBuffer payload) throws IOException, ServerException, InterruptedException {
if (responseCache.get() == null) {
responseCache.set(SqlResponse.Response.parseDelimitedFrom(new ByteBufferInputStream(payload)));
}
Expand All @@ -441,7 +440,7 @@ public ExecuteResult process(ByteBuffer payload) throws IOException, ServerExcep
var errorResponse = detailResponse.getError();
throw SqlServiceException.of(SqlServiceCode.valueOf(errorResponse.getCode()), errorResponse.getDetail());
}
return new ExecuteResultAdapter(detailResponse.getSuccess());
return null;
case RESULT_ONLY:
var resultOnlyResponse = response.getResultOnly();
LOG.trace("receive (ResultOnly): {}", resultOnlyResponse); //$NON-NLS-1$
Expand All @@ -456,7 +455,7 @@ public ExecuteResult process(ByteBuffer payload) throws IOException, ServerExcep
}

@Override
public FutureResponse<ExecuteResult> send(
public FutureResponse<Void> send(
@Nonnull SqlRequest.ExecuteStatement request) throws IOException {
Objects.requireNonNull(request);
LOG.trace("send (execute statement): {}", request); //$NON-NLS-1$
Expand All @@ -469,7 +468,7 @@ public FutureResponse<ExecuteResult> send(
}

@Override
public FutureResponse<ExecuteResult> send(
public FutureResponse<Void> send(
@Nonnull SqlRequest.ExecutePreparedStatement request) throws IOException {
Objects.requireNonNull(request);
LOG.trace("send (execute prepared statement): {}", request); //$NON-NLS-1$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import com.tsurugidb.tsubakuro.sql.SqlService;
import com.tsurugidb.tsubakuro.sql.SqlServiceException;
import com.tsurugidb.tsubakuro.sql.Transaction;
import com.tsurugidb.tsubakuro.sql.ExecuteResult;
import com.tsurugidb.tsubakuro.util.FutureResponse;
import com.tsurugidb.tsubakuro.util.Lang;
import com.tsurugidb.tsubakuro.util.ServerResource;
Expand Down Expand Up @@ -65,7 +64,7 @@ public TransactionImpl(
}

@Override
public FutureResponse<ExecuteResult> executeStatement(@Nonnull String source) throws IOException {
public FutureResponse<Void> executeStatement(@Nonnull String source) throws IOException {
Objects.requireNonNull(source);
if (cleanuped.get()) {
throw new IOException("transaction already closed");
Expand All @@ -89,7 +88,7 @@ public FutureResponse<ResultSet> executeQuery(@Nonnull String source) throws IOE
}

@Override
public FutureResponse<ExecuteResult> executeStatement(
public FutureResponse<Void> executeStatement(
@Nonnull PreparedStatement statement,
@Nonnull Collection<? extends SqlRequest.Parameter> parameters) throws IOException {
Objects.requireNonNull(statement);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,13 @@

import com.tsurugidb.sql.proto.SqlCommon;
import com.tsurugidb.sql.proto.SqlRequest;
import com.tsurugidb.sql.proto.SqlRequest.ExecuteStatement;
import com.tsurugidb.sql.proto.SqlResponse;
import com.tsurugidb.sql.proto.SqlStatus;
import com.tsurugidb.tsubakuro.channel.common.connection.wire.Response;
import com.tsurugidb.tsubakuro.common.Session;
import com.tsurugidb.tsubakuro.common.impl.SessionImpl;
import com.tsurugidb.tsubakuro.exception.BrokenResponseException;
import com.tsurugidb.tsubakuro.exception.ServerException;
import com.tsurugidb.tsubakuro.sql.CounterType;
import com.tsurugidb.tsubakuro.sql.SearchPath;
import com.tsurugidb.tsubakuro.sql.SqlService;
import com.tsurugidb.tsubakuro.sql.SqlServiceCode;
Expand Down Expand Up @@ -637,7 +635,7 @@ void sendDescribeTableEngineError() throws Exception {
}

@Test
void sendExecuteSuccess_deprecated() throws Exception {
void sendExecuteSuccess() throws Exception {
wire.next(accepts(SqlRequest.Request.RequestCase.EXECUTE_STATEMENT,
RequestHandler.returns(SqlResponse.ResultOnly.newBuilder()
.setSuccess(newVoid())
Expand All @@ -655,60 +653,10 @@ void sendExecuteSuccess_deprecated() throws Exception {
assertFalse(wire.hasRemaining());
}

@Test
void sendExecuteEngineError_deprecated() throws Exception {
wire.next(accepts(SqlRequest.Request.RequestCase.EXECUTE_STATEMENT,
RequestHandler.returns(SqlResponse.ResultOnly.newBuilder()
.setError(newEngineError())
.build())));

var message = SqlRequest.ExecuteStatement.newBuilder()
.setSql("SELECT 1")
.build();
try (
var service = new SqlServiceStub(session);
var future = service.send(message);
) {
var error = assertThrows(SqlServiceException.class, () -> future.await());
assertEquals(SqlServiceCode.SQL_SERVICE_EXCEPTION, error.getDiagnosticCode());
}
assertFalse(wire.hasRemaining());
}

@Test
void sendExecuteSuccess() throws Exception {
wire.next(accepts(SqlRequest.Request.RequestCase.EXECUTE_STATEMENT,
RequestHandler.returns(SqlResponse.ExecuteResult.newBuilder()
.setSuccess(SqlResponse.ExecuteResult.Success.newBuilder()
.addCounters(SqlResponse.ExecuteResult.CounterEntry.newBuilder().setType(SqlResponse.ExecuteResult.CounterType.INSERTED_ROWS).setValue(1))
.addCounters(SqlResponse.ExecuteResult.CounterEntry.newBuilder().setType(SqlResponse.ExecuteResult.CounterType.UPDATED_ROWS).setValue(2))
.addCounters(SqlResponse.ExecuteResult.CounterEntry.newBuilder().setType(SqlResponse.ExecuteResult.CounterType.MERGED_ROWS).setValue(3))
.addCounters(SqlResponse.ExecuteResult.CounterEntry.newBuilder().setType(SqlResponse.ExecuteResult.CounterType.DELETED_ROWS).setValue(4)))
.build())));

var message = SqlRequest.ExecuteStatement.newBuilder()
.setSql("SELECT 1")
.build();
try (
var service = new SqlServiceStub(session);
var future = service.send(message);
) {
var executeResult = future.get();
var counterTypes = executeResult.getCounterTypes();
assertTrue(counterTypes.containsAll(List.of(CounterType.INSERTED_ROWS, CounterType.UPDATED_ROWS, CounterType.MERGED_ROWS, CounterType.DELETED_ROWS)));
var counters = executeResult.getCounters();
assertEquals(counters.get(CounterType.INSERTED_ROWS), 1);
assertEquals(counters.get(CounterType.UPDATED_ROWS), 2);
assertEquals(counters.get(CounterType.MERGED_ROWS), 3);
assertEquals(counters.get(CounterType.DELETED_ROWS), 4);
}
assertFalse(wire.hasRemaining());
}

@Test
void sendExecuteEngineError() throws Exception {
wire.next(accepts(SqlRequest.Request.RequestCase.EXECUTE_STATEMENT,
RequestHandler.returns(SqlResponse.ExecuteResult.newBuilder()
RequestHandler.returns(SqlResponse.ResultOnly.newBuilder()
.setError(newEngineError())
.build())));

Expand All @@ -725,8 +673,6 @@ void sendExecuteEngineError() throws Exception {
assertFalse(wire.hasRemaining());
}



@Test
void sendQuerySuccess() throws Exception {
wire.next(accepts(SqlRequest.Request.RequestCase.EXECUTE_QUERY,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ void executeText() throws Exception {
.build(),
new SqlService() {
@Override
public FutureResponse<ExecuteResult> send(SqlRequest.ExecuteStatement request) throws IOException {
public FutureResponse<Void> send(SqlRequest.ExecuteStatement request) throws IOException {
count.incrementAndGet();
assertEquals(100, request.getTransactionHandle().getHandle());
assertEquals("SELECT 100", request.getSql());
Expand Down Expand Up @@ -118,7 +118,7 @@ void executeStatement() throws Exception {
.build(),
new SqlService() {
@Override
public FutureResponse<ExecuteResult> send(SqlRequest.ExecutePreparedStatement request) throws IOException {
public FutureResponse<Void> send(SqlRequest.ExecutePreparedStatement request) throws IOException {
count.incrementAndGet();
assertEquals(100, request.getTransactionHandle().getHandle());
assertEquals(100, request.getPreparedStatementHandle().getHandle());
Expand Down

0 comments on commit 630158e

Please sign in to comment.