Skip to content

Commit 6965d84

Browse files
authored
Merge pull request #336 from wayne-pq/feat/optimized-code-wayne
feat: remove useless try-finally, etc.
2 parents fb6f2e4 + bb7574d commit 6965d84

18 files changed

Lines changed: 109 additions & 60 deletions

databend-client/src/main/java/com/databend/client/ClientSettings.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919

2020
public class ClientSettings {
2121
public static final Integer DEFAULT_QUERY_TIMEOUT = 300;
22-
public static final Integer DEFAULT_CONNECTION_TIMEOUT = 0; // seconds
22+
// seconds
23+
public static final Integer DEFAULT_CONNECTION_TIMEOUT = 0;
2324
public static final Integer DEFAULT_SOCKET_TIMEOUT = 0;
2425
public static final int DEFAULT_RETRY_ATTEMPTS = 5;
2526
public static final String X_Databend_Query_ID = "X-DATABEND-QUERY-ID";

databend-client/src/main/java/com/databend/client/DatabendClientV1.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,8 @@ private static DiscoveryResponseCodec.DiscoveryResponse getDiscoveryResponse(OkH
184184
}
185185

186186
try {
187-
MILLISECONDS.sleep(attempts * 100); // Exponential backoff
187+
// Exponential backoff
188+
MILLISECONDS.sleep(attempts * 100L);
188189
} catch (InterruptedException e) {
189190
Thread.currentThread().interrupt();
190191
throw new RuntimeException("Interrupted while fetching discovery nodes", e);
@@ -211,7 +212,8 @@ private static DiscoveryResponseCodec.DiscoveryResponse getDiscoveryResponse(OkH
211212
if (response.getStatusCode() == HTTP_OK && response.hasValue()) {
212213
DiscoveryResponseCodec.DiscoveryResponse discoveryResponse = response.getValue();
213214
if (discoveryResponse.getError() == null) {
214-
return discoveryResponse; // Successful response
215+
// Successful response
216+
return discoveryResponse;
215217
}
216218
if (discoveryResponse.getError().notFound()) {
217219
throw new UnsupportedOperationException("Discovery request feature not supported: " + discoveryResponse.getError());
@@ -240,20 +242,21 @@ private boolean executeInternal(Request request, OptionalLong materializedJsonSi
240242

241243
long start = System.nanoTime();
242244
int attempts = 0;
243-
Exception cause = null;
245+
// Exception cause = null;
244246

245247
while (true) {
246248
if (attempts > 0) {
247249
Duration sinceStart = Duration.ofNanos(System.nanoTime() - start);
248250
if (sinceStart.compareTo(Duration.ofSeconds(requestTimeoutSecs)) > 0) {
249251
throw new RuntimeException(format("Error fetching next (attempts: %s, duration: %s)",
250-
attempts, sinceStart.getSeconds()), cause);
252+
attempts, sinceStart.getSeconds()), null);
251253
}
252254

253255
try {
254256
logger.log(Level.FINE, "Executing query attempt #" + attempts);
255257
// Apply exponential backoff with a cap
256-
long sleepTime = Math.min(100 * (1 << Math.min(attempts - 1, 10)), 5000); // Max 5 seconds
258+
// Max 5 seconds
259+
long sleepTime = Math.min(100 * (1 << Math.min(attempts - 1, 10)), 5000);
257260
MILLISECONDS.sleep(sleepTime);
258261
} catch (InterruptedException e) {
259262
try {
@@ -274,7 +277,8 @@ private boolean executeInternal(Request request, OptionalLong materializedJsonSi
274277
if (e.getCause() instanceof ConnectException) {
275278
// Log the connection exception but rethrow it to match original behavior
276279
logger.log(Level.WARNING, "Connection exception on attempt " + attempts + ": " + e.getMessage());
277-
throw e; // This will be caught by the caller's retry mechanism
280+
// This will be caught by the caller's retry mechanism
281+
throw e;
278282
}
279283
throw new RuntimeException("Query failed: " + e.getMessage(), e);
280284
}
@@ -344,7 +348,7 @@ private void processResponse(Headers headers, QueryResults results) {
344348
if (serverVersionString != null) {
345349
try {
346350
serverVersion = serverVersionString;
347-
} catch (Exception e) {
351+
} catch (Exception ignored) {
348352
}
349353
}
350354
String route_hint = headers.get(ClientSettings.X_DATABEND_ROUTE_HINT);

databend-client/src/main/java/com/databend/client/ParseJsonDataUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ public static List<List<Object>> parseRawData(List<QueryRowField> schema, List<L
5959
newRow.add(parsed);
6060
column++;
6161
}
62-
rows.add(unmodifiableList(newRow)); // allow nulls in list
62+
// allow nulls in list
63+
rows.add(unmodifiableList(newRow));
6364
}
6465
return rows.build();
6566
}

databend-jdbc/src/main/java/com/databend/jdbc/AbstractDatabendResultSet.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ abstract class AbstractDatabendResultSet implements ResultSet {
9292
protected final Iterator<List<Object>> results;
9393
private final Optional<Statement> statement;
9494
private final AtomicReference<List<Object>> row = new AtomicReference<>();
95-
private final AtomicLong currentRowNumber = new AtomicLong(); // Index into 'rows' of our current row (1-based)
95+
// Index into 'rows' of our current row (1-based)
96+
private final AtomicLong currentRowNumber = new AtomicLong();
9697
private final AtomicBoolean wasNull = new AtomicBoolean();
9798
private final Map<String, Integer> fieldMap;
9899
private final List<DatabendColumnInfo> databendColumnInfoList;
@@ -125,11 +126,15 @@ private static List<DatabendColumnInfo> getColumnInfo(List<QueryRowField> column
125126
ImmutableList.Builder<DatabendColumnInfo> list = ImmutableList.builderWithExpectedSize(columns.size());
126127
for (QueryRowField column : columns) {
127128
DatabendColumnInfo.Builder builder = new DatabendColumnInfo.Builder()
128-
.setCatalogName("") // TODO
129-
.setSchemaName("") // TODO
130-
.setTableName("") // TODO
129+
// TODO
130+
.setCatalogName("")
131+
// TODO
132+
.setSchemaName("")
133+
// TODO
134+
.setTableName("")
131135
.setColumnLabel(column.getName())
132-
.setColumnName(column.getName()) // TODO
136+
// TODO
137+
.setColumnName(column.getName())
133138
.setColumnTypeSignature(column.getDataType())
134139
.setCurrency(false);
135140
setTypeInfo(builder, column.getDataType());
@@ -230,8 +235,8 @@ private static Time parseTime(String value, ZoneId localTimeZone) {
230235
precision = fraction.length();
231236
fractionValue = Long.parseLong(fraction);
232237
}
233-
234-
long picosOfSecond = rescale(fractionValue, precision, 12); // maximum precision
238+
// maximum precision
239+
long picosOfSecond = rescale(fractionValue, precision, 12);
235240
// We eventually truncate to millis, so truncate picos to nanos for consistency TODO (https://github.com/trinodb/trino/issues/6205) reconsider
236241
int nanosOfSecond = toIntExact(picosOfSecond / PICOSECONDS_PER_NANOSECOND);
237242
long epochMilli = ZonedDateTime.of(1970, 1, 1, hour, minute, second, nanosOfSecond, localTimeZone)

databend-jdbc/src/main/java/com/databend/jdbc/DatabendClientLoadBalancingPolicy.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ private static int getQueryHash(String query_id) {
111111
if (query_id.isEmpty()) {
112112
return 0;
113113
}
114-
int hash = 202011; // Using the seed value
114+
// Using the seed value
115+
int hash = 202011;
115116
for (char c : query_id.toCharArray()) {
116117
hash = hash * 31 + c;
117118
}

databend-jdbc/src/main/java/com/databend/jdbc/DatabendColumnInfo.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212

1313
public class DatabendColumnInfo {
1414
private static final int VARBINARY_MAX = 1024 * 1024 * 1024;
15-
private static final int TIME_ZONE_MAX = 40; // current longest time zone is 32
15+
// current longest time zone is 32
16+
private static final int TIME_ZONE_MAX = 40;
1617
private static final int TIME_MAX = "HH:mm:ss.SSS".length();
1718
private static final int TIME_WITH_TIME_ZONE_MAX = TIME_MAX + TIME_ZONE_MAX;
1819
private static final int TIMESTAMP_MAX = "yyyy-MM-dd HH:mm:ss.SSS".length();

databend-jdbc/src/main/java/com/databend/jdbc/DatabendDatabaseMetaData.java

Lines changed: 44 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,10 @@ private static String stringColumnEquals(String columnName, String value) {
101101
protected static String stringColumnLike(String columnName, String pattern) {
102102
if (pattern == null || pattern.isEmpty()) {
103103
return null;
104-
} if (Pattern.matches("^[^%]*$", pattern)) { // Checks if the string does not contain the %
104+
}
105+
106+
// Checks if the string does not contain the %
107+
if (Pattern.matches("^[^%]*$", pattern)) {
105108
return stringColumnEquals(columnName, pattern);
106109
}
107110
StringBuilder filter = new StringBuilder();
@@ -997,7 +1000,8 @@ public ResultSet getTableTypes()
9971000
}};
9981001

9991002
private static StringBuilder columnMetaSqlTemplate() {
1000-
StringBuilder sql = new StringBuilder("SELECT table_catalog as TABLE_CAT" + // 1
1003+
// 1
1004+
StringBuilder sql = new StringBuilder("SELECT table_catalog as TABLE_CAT" +
10011005
", table_schema as TABLE_SCHEM" + // 2
10021006
", table_name as TABLE_NAME" + // 3
10031007
", column_name as COLUMN_NAME" + // 4
@@ -1022,38 +1026,57 @@ private ResultSet getColumnsMetaDataBySQL(String sql) throws SQLException {
10221026
try (ResultSet rs = select(sql)) {
10231027
while (rs.next()) {
10241028
List<Object> result = new ArrayList<>();
1025-
result.add(rs.getString(1));// TABLE_CAT
1026-
result.add(rs.getString(2));// TABLE_SCHEM
1027-
result.add(rs.getString(3));// TABLE_NAME
1028-
result.add(rs.getString(4));// COLUMN_NAME
1029+
// TABLE_CAT
1030+
result.add(rs.getString(1));
1031+
// TABLE_SCHEM
1032+
result.add(rs.getString(2));
1033+
// TABLE_NAME
1034+
result.add(rs.getString(3));
1035+
// COLUMN_NAME
1036+
result.add(rs.getString(4));
10291037
String originType = rs.getString(5);
10301038
DatabendRawType rowType = new DatabendRawType(originType);
10311039
DatabendDataType dataType = rowType.getDataType();
1032-
result.add(dataType.getSqlType());// DATA_TYPE
1033-
result.add(rowType.getType());// TYPE_NAME
1034-
result.add(rowType.getColumnSize());// COLUMN_SIZE
1035-
result.add(0);// BUFFER_LENGTH
1036-
result.add(rowType.getDecimalDigits());// DECIMAL_DIGITS
1037-
result.add(0);// NUM_PREC_RADIX
1038-
result.add(rs.getString(6));// COLUMN_NAME
1039-
result.add(rs.getObject(7));// REMARKS
1040-
result.add(rs.getString(8));// COLUMN_DEF
1041-
result.add(0);// SQL_DATA_TYPE
1042-
result.add(0);// SQL_DATETIME_SUB
1040+
// DATA_TYPE
1041+
result.add(dataType.getSqlType());
1042+
// TYPE_NAME
1043+
result.add(rowType.getType());
1044+
// COLUMN_SIZE
1045+
result.add(rowType.getColumnSize());
1046+
// BUFFER_LENGTH
1047+
result.add(0);
1048+
// DECIMAL_DIGITS
1049+
result.add(rowType.getDecimalDigits());
1050+
// NUM_PREC_RADIX
1051+
result.add(0);
1052+
// COLUMN_NAME
1053+
result.add(rs.getString(6));
1054+
// REMARKS
1055+
result.add(rs.getObject(7));
1056+
// COLUMN_DEF
1057+
result.add(rs.getString(8));
1058+
// SQL_DATA_TYPE
1059+
result.add(0);
1060+
// SQL_DATETIME_SUB
1061+
result.add(0);
10431062
// CHAR_OCTET_LENGTH (for char types the maximum number of bytes in the column)
10441063
if (dataType == DatabendDataType.STRING) {
10451064
result.add(dataType.getLength());
10461065
} else {
10471066
result.add(null);
10481067
}
1049-
result.add(rs.getString(9));// ORDINAL_POSITION
1050-
result.add(rs.getString(10));// IS_NULLABLE
1068+
// ORDINAL_POSITION
1069+
result.add(rs.getString(9));
1070+
// IS_NULLABLE
1071+
result.add(rs.getString(10));
10511072
result.add(null);
10521073
result.add(null);
10531074
result.add(null);
10541075
result.add(null);
1055-
result.add("NO");// IS_AUTOINCREMENT
1056-
result.add("NO");// IS_GENERATEDCOLUMN
1076+
// IS_AUTOINCREMENT
1077+
result.add("NO");
1078+
// IS_GENERATEDCOLUMN
1079+
result.add("NO");
10571080
results.add(result);
10581081
}
10591082
}

databend-jdbc/src/main/java/com/databend/jdbc/DatabendDriverUri.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,8 @@ private static Map.Entry<DatabendNodes, Map<String, String>> parse(String url)
306306
uris.clear();
307307
uris.addAll(uriSet);
308308
// Create DatabendNodes object
309-
DatabendClientLoadBalancingPolicy policy = DatabendClientLoadBalancingPolicy.create(DatabendClientLoadBalancingPolicy.DISABLED); // You might want to make this configurable
309+
// You might want to make this configurable
310+
DatabendClientLoadBalancingPolicy policy = DatabendClientLoadBalancingPolicy.create(DatabendClientLoadBalancingPolicy.DISABLED);
310311
DatabendNodes databendNodes = new DatabendNodes(uris, policy, uriPath, uriQuery, uriFragment, 5 * 60 * 1000);
311312
return new AbstractMap.SimpleImmutableEntry<>(databendNodes, uriProperties);
312313
} catch (URISyntaxException e) {

databend-jdbc/src/main/java/com/databend/jdbc/DatabendPreparedStatement.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161

6262
import static com.databend.jdbc.ObjectCasts.*;
6363
import static com.databend.jdbc.StatementUtil.replaceParameterMarksWithValues;
64-
import static com.databend.jdbc.constant.DatabendConstant.BASE64_STR;
64+
import static com.databend.jdbc.constant.DatabendConstant.*;
6565
import static java.lang.String.format;
6666
import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE;
6767
import static java.time.format.DateTimeFormatter.ISO_LOCAL_TIME;
@@ -428,7 +428,7 @@ protected boolean execute(List<StatementInfoWrapper> statements) throws SQLExcep
428428
try {
429429
for (int i = 0; i < statements.size(); i++) {
430430
String sql = statements.get(i).getSql();
431-
if (sql.toLowerCase().contains("insert into") && !sql.toLowerCase().contains("select")) {
431+
if (isBatchInsert(sql)) {
432432
handleBatchInsert();
433433
} else {
434434
execute(sql);
@@ -442,6 +442,9 @@ protected boolean execute(List<StatementInfoWrapper> statements) throws SQLExcep
442442
return true;
443443
}
444444

445+
private boolean isBatchInsert(String sql) {
446+
return sql.toLowerCase().contains(DATABEND_KEYWORDS_INSERT_INTO) && !sql.toLowerCase().contains(DATABEND_KEYWORDS_SELECT);
447+
}
445448
protected void handleBatchInsert() throws SQLException {
446449
try {
447450
addBatch();

databend-jdbc/src/main/java/com/databend/jdbc/DatabendResultSet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ static DatabendResultSet create(Statement statement, DatabendClient client, long
5656
if (client.getServerVersion() != null) {
5757
try {
5858
serverVersion = Version.valueOf(client.getServerVersion());
59-
} catch (Exception _e) {
59+
} catch (Exception ignored) {
6060

6161
}
6262
}

0 commit comments

Comments
 (0)