Skip to content

Commit 06e43c0

Browse files
authored
feat: support max_commit_delay (#1581)
Support added for 'set max_commit_delay=<duration>' statement. Setting a max_commit_delay can increase throughput of bulk updates, as Spanner can batch more updates together, but at the expense of higher latency for a single request.
1 parent dfe3f2b commit 06e43c0

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/test/java/com/google/cloud/spanner/jdbc/JdbcCommitStatsTest.java renamed to src/test/java/com/google/cloud/spanner/jdbc/JdbcTransactionOptionsTest.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.google.cloud.spanner.jdbc;
1818

1919
import static com.google.common.truth.Truth.assertThat;
20+
import static org.junit.Assert.assertEquals;
2021
import static org.junit.Assert.assertFalse;
2122
import static org.junit.Assert.assertNotNull;
2223
import static org.junit.Assert.assertTrue;
@@ -25,16 +26,18 @@
2526
import com.google.cloud.spanner.Mutation;
2627
import com.google.cloud.spanner.connection.AbstractMockServerTest;
2728
import com.google.cloud.spanner.connection.SpannerPool;
29+
import com.google.spanner.v1.CommitRequest;
2830
import java.sql.DriverManager;
2931
import java.sql.ResultSet;
3032
import java.sql.SQLException;
33+
import java.time.Duration;
3134
import org.junit.After;
3235
import org.junit.Test;
3336
import org.junit.runner.RunWith;
3437
import org.junit.runners.JUnit4;
3538

3639
@RunWith(JUnit4.class)
37-
public class JdbcCommitStatsTest extends AbstractMockServerTest {
40+
public class JdbcTransactionOptionsTest extends AbstractMockServerTest {
3841

3942
@After
4043
public void closeSpannerPool() {
@@ -120,4 +123,19 @@ public void testSetAndUseReturnCommitStatsUsingSql() throws SQLException {
120123
}
121124
}
122125
}
126+
127+
@Test
128+
public void testMaxCommitDelay() throws SQLException {
129+
try (java.sql.Connection connection = createJdbcConnection()) {
130+
connection.createStatement().execute("SET max_commit_delay='50ms'");
131+
connection
132+
.unwrap(CloudSpannerJdbcConnection.class)
133+
.bufferedWrite(Mutation.newInsertBuilder("FOO").set("ID").to(1L).build());
134+
connection.commit();
135+
136+
assertEquals(1, mockSpanner.countRequestsOfType(CommitRequest.class));
137+
CommitRequest request = mockSpanner.getRequestsOfType(CommitRequest.class).get(0);
138+
assertEquals(Duration.ofMillis(50).toNanos(), request.getMaxCommitDelay().getNanos());
139+
}
140+
}
123141
}

0 commit comments

Comments
 (0)