File tree

3 files changed

+52
-5
lines changed

3 files changed

+52
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@
108108
* <li>maxSessions (int): Sets the maximum number of sessions in the backing session pool.
109109
* Defaults to 400.
110110
* <li>numChannels (int): Sets the number of gRPC channels to use. Defaults to 4.
111+
* <li>rpcPriority (String): Sets the priority for all RPC invocations from this connection.
112+
* Defaults to HIGH.
111113
* </ul>
112114
*/
113115
public class JdbcDriver implements Driver {
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ public void testDefaultOptions() throws SQLException {
5151
assertThat(rs.getString("OPTIMIZER_STATISTICS_PACKAGE")).isEqualTo("");
5252
assertThat(rs.next()).isFalse();
5353
}
54+
try (java.sql.ResultSet rs =
55+
connection.createStatement().executeQuery("SHOW VARIABLE RPC_PRIORITY")) {
56+
assertThat(rs.next()).isTrue();
57+
assertThat(rs.getString("RPC_PRIORITY")).isEqualTo("PRIORITY_UNSPECIFIED");
58+
assertThat(rs.next()).isFalse();
59+
}
5460
}
5561
}
5662

@@ -59,8 +65,8 @@ public void testOptionsInConnectionUrl() throws SQLException {
5965
try (java.sql.Connection connection =
6066
DriverManager.getConnection(
6167
String.format(
62-
"jdbc:%s;optimizerVersion=%s;optimizerStatisticsPackage=%s",
63-
getBaseUrl(), "100", "url_package"))) {
68+
"jdbc:%s;optimizerVersion=%s;optimizerStatisticsPackage=%s;rpcPriority=%s",
69+
getBaseUrl(), "100", "url_package", "LOW"))) {
6470
try (java.sql.ResultSet rs =
6571
connection.createStatement().executeQuery("SHOW VARIABLE OPTIMIZER_VERSION")) {
6672
assertThat(rs.next()).isTrue();
@@ -73,6 +79,12 @@ public void testOptionsInConnectionUrl() throws SQLException {
7379
assertThat(rs.getString("OPTIMIZER_STATISTICS_PACKAGE")).isEqualTo("url_package");
7480
assertThat(rs.next()).isFalse();
7581
}
82+
try (java.sql.ResultSet rs =
83+
connection.createStatement().executeQuery("SHOW VARIABLE RPC_PRIORITY")) {
84+
assertThat(rs.next()).isTrue();
85+
assertThat(rs.getString("RPC_PRIORITY")).isEqualTo("LOW");
86+
assertThat(rs.next()).isFalse();
87+
}
7688
}
7789
}
7890

@@ -122,6 +134,28 @@ public void testSetOptions() throws SQLException {
122134
assertThat(rs.getString("OPTIMIZER_STATISTICS_PACKAGE")).isEqualTo("");
123135
assertThat(rs.next()).isFalse();
124136
}
137+
138+
connection.createStatement().execute("SET RPC_PRIORITY='LOW'");
139+
try (java.sql.ResultSet rs =
140+
connection.createStatement().executeQuery("SHOW VARIABLE RPC_PRIORITY")) {
141+
assertThat(rs.next()).isTrue();
142+
assertThat(rs.getString("RPC_PRIORITY")).isEqualTo("LOW");
143+
assertThat(rs.next()).isFalse();
144+
}
145+
connection.createStatement().execute("SET RPC_PRIORITY='MEDIUM'");
146+
try (java.sql.ResultSet rs =
147+
connection.createStatement().executeQuery("SHOW VARIABLE RPC_PRIORITY")) {
148+
assertThat(rs.next()).isTrue();
149+
assertThat(rs.getString("RPC_PRIORITY")).isEqualTo("MEDIUM");
150+
assertThat(rs.next()).isFalse();
151+
}
152+
connection.createStatement().execute("SET RPC_PRIORITY='NULL'");
153+
try (java.sql.ResultSet rs =
154+
connection.createStatement().executeQuery("SHOW VARIABLE RPC_PRIORITY")) {
155+
assertThat(rs.next()).isTrue();
156+
assertThat(rs.getString("RPC_PRIORITY")).isEqualTo("PRIORITY_UNSPECIFIED");
157+
assertThat(rs.next()).isFalse();
158+
}
125159
}
126160
}
127161

@@ -130,6 +164,7 @@ public void testSetAndUseOptions() throws SQLException {
130164
try (java.sql.Connection connection = createJdbcConnection()) {
131165
connection.createStatement().execute("SET OPTIMIZER_VERSION='20'");
132166
connection.createStatement().execute("SET OPTIMIZER_STATISTICS_PACKAGE='20210609'");
167+
connection.createStatement().execute("SET RPC_PRIORITY='LOW'");
133168
try (java.sql.ResultSet rs =
134169
connection.createStatement().executeQuery(SELECT_COUNT_STATEMENT.getSql())) {
135170
assertThat(rs.next()).isTrue();
@@ -140,10 +175,12 @@ public void testSetAndUseOptions() throws SQLException {
140175
ExecuteSqlRequest request = getLastExecuteSqlRequest();
141176
assertThat(request.getQueryOptions().getOptimizerVersion()).isEqualTo("20");
142177
assertThat(request.getQueryOptions().getOptimizerStatisticsPackage()).isEqualTo("20210609");
178+
assertThat(request.getRequestOptions().getPriority().toString()).isEqualTo("PRIORITY_LOW");
143179
}
144180

145181
connection.createStatement().execute("SET OPTIMIZER_VERSION='latest'");
146182
connection.createStatement().execute("SET OPTIMIZER_STATISTICS_PACKAGE='latest'");
183+
connection.createStatement().execute("SET RPC_PRIORITY='MEDIUM'");
147184
try (java.sql.ResultSet rs =
148185
connection.createStatement().executeQuery(SELECT_COUNT_STATEMENT.getSql())) {
149186
assertThat(rs.next()).isTrue();
@@ -152,12 +189,15 @@ public void testSetAndUseOptions() throws SQLException {
152189
ExecuteSqlRequest request = getLastExecuteSqlRequest();
153190
assertThat(request.getQueryOptions().getOptimizerVersion()).isEqualTo("latest");
154191
assertThat(request.getQueryOptions().getOptimizerStatisticsPackage()).isEqualTo("latest");
192+
assertThat(request.getRequestOptions().getPriority().toString())
193+
.isEqualTo("PRIORITY_MEDIUM");
155194
}
156195

157196
// Set the options to ''. This will do a fallback to the default, meaning that it will be read
158197
// from the environment variables as we have nothing set on the connection URL.
159198
connection.createStatement().execute("SET OPTIMIZER_VERSION=''");
160199
connection.createStatement().execute("SET OPTIMIZER_STATISTICS_PACKAGE=''");
200+
connection.createStatement().execute("SET RPC_PRIORITY='NULL'");
161201
try (java.sql.ResultSet rs =
162202
connection.createStatement().executeQuery(SELECT_COUNT_STATEMENT.getSql())) {
163203
assertThat(rs.next()).isTrue();
@@ -170,6 +210,8 @@ public void testSetAndUseOptions() throws SQLException {
170210
.isEqualTo(MoreObjects.firstNonNull(System.getenv("SPANNER_OPTIMIZER_VERSION"), ""));
171211
assertThat(request.getQueryOptions().getOptimizerStatisticsPackage())
172212
.isEqualTo(MoreObjects.firstNonNull(System.getenv("OPTIMIZER_STATISTICS_PACKAGE"), ""));
213+
assertThat(request.getRequestOptions().getPriority().toString())
214+
.isEqualTo("PRIORITY_UNSPECIFIED");
173215
}
174216
}
175217
}
@@ -179,7 +221,7 @@ public void testUseOptionsFromConnectionUrl() throws SQLException {
179221
try (java.sql.Connection connection =
180222
DriverManager.getConnection(
181223
String.format(
182-
"jdbc:%s;optimizerVersion=10;optimizerStatisticsPackage=20210609_10_00_00",
224+
"jdbc:%s;optimizerVersion=10;optimizerStatisticsPackage=20210609_10_00_00;rpcPriority=LOW",
183225
getBaseUrl()))) {
184226
// Do a query and verify that the version from the connection URL is used.
185227
try (java.sql.ResultSet rs =
@@ -192,6 +234,7 @@ public void testUseOptionsFromConnectionUrl() throws SQLException {
192234
assertThat(request.getQueryOptions().getOptimizerVersion()).isEqualTo("10");
193235
assertThat(request.getQueryOptions().getOptimizerStatisticsPackage())
194236
.isEqualTo("20210609_10_00_00");
237+
assertThat(request.getRequestOptions().getPriority().toString()).isEqualTo("PRIORITY_LOW");
195238
}
196239
}
197240
}
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public void testConnectWithURLWithDefaultValues() throws SQLException {
107107
@Test
108108
public void testConnectWithURLWithNonDefaultValues() throws SQLException {
109109
String url = createBaseUrl();
110-
url = url + ";autocommit=false;readonly=true;retryAbortsInternally=false";
110+
url = url + ";autocommit=false;readonly=true;retryAbortsInternally=false;rpcPriority=LOW";
111111
if (hasValidKeyFile()) {
112112
url = url + ";credentials=" + getKeyFile();
113113
}
@@ -138,6 +138,7 @@ public void testConnectWithPropertiesWithNonDefaultValues() throws SQLException
138138
properties.setProperty("autocommit", "false");
139139
properties.setProperty("readonly", "true");
140140
properties.setProperty("retryAbortsInternally", "false");
141+
properties.setProperty("rpcPriority", "LOW");
141142
try (Connection connection = DriverManager.getConnection(url, properties)) {
142143
testNonDefaultConnection(connection);
143144
}
@@ -146,14 +147,15 @@ public void testConnectWithPropertiesWithNonDefaultValues() throws SQLException
146147
@Test
147148
public void testConnectWithPropertiesWithConflictingValues() throws SQLException {
148149
String url = createBaseUrl();
149-
url = url + ";autocommit=false;readonly=true;retryAbortsInternally=false";
150+
url = url + ";autocommit=false;readonly=true;retryAbortsInternally=false;rpcPriority=LOW";
150151
if (hasValidKeyFile()) {
151152
url = url + ";credentials=" + getKeyFile();
152153
}
153154
Properties properties = new Properties();
154155
properties.setProperty("autocommit", "true");
155156
properties.setProperty("readonly", "false");
156157
properties.setProperty("retryAbortsInternally", "true");
158+
properties.setProperty("rpcPriority", "MEDIUM");
157159
try (Connection connection = DriverManager.getConnection(url, properties)) {
158160
testNonDefaultConnection(connection);
159161
}

0 commit comments

Comments
 (0)