Skip to content

Commit 48b092c

Browse files
committed
optimized code
1 parent c185ad9 commit 48b092c

File tree

6 files changed

+48
-39
lines changed

6 files changed

+48
-39
lines changed

client-v2/src/main/java/com/clickhouse/client/api/insert/InsertSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,9 @@ public String getLogComment() {
283283

284284
public static InsertSettings merge(InsertSettings source, InsertSettings override) {
285285
CommonSettings mergedSettings = source.settings.copyAndMerge(override.settings);
286-
return new InsertSettings(mergedSettings);
286+
InsertSettings insertSettings = new InsertSettings(mergedSettings);
287+
insertSettings.setInputStreamCopyBufferSize(override.getInputStreamCopyBufferSize());
288+
return insertSettings;
287289
}
288290

289291
/**

client-v2/src/test/java/com/clickhouse/client/SettingsTests.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import org.testng.Assert;
77
import org.testng.annotations.Test;
88

9+
import java.time.temporal.ChronoUnit;
910
import java.util.Arrays;
1011
import java.util.Collections;
1112
import java.util.List;
13+
import java.util.concurrent.TimeUnit;
1214

1315
@Test(groups = {"unit"})
1416
public class SettingsTests {
@@ -22,15 +24,28 @@ void testClientSettings() {
2224
}
2325

2426
@Test
25-
void testMergeQuerySettings() {
26-
QuerySettings settings1 = new QuerySettings().setQueryId("test1").httpHeader("key1", "value1");
27-
QuerySettings settings2 = new QuerySettings().httpHeader("key1", "value2");
27+
void testMergeSettings() {
28+
{
29+
QuerySettings settings1 = new QuerySettings().setQueryId("test1").httpHeader("key1", "value1");
30+
QuerySettings settings2 = new QuerySettings().httpHeader("key1", "value2");
31+
32+
QuerySettings merged = QuerySettings.merge(settings1, settings2);
33+
Assert.assertNotSame(merged, settings1);
34+
Assert.assertNotSame(merged, settings2);
2835

29-
QuerySettings merged = QuerySettings.merge(settings1, settings2);
30-
Assert.assertNotSame(merged, settings1);
31-
Assert.assertNotSame(merged, settings2);
36+
Assert.assertEquals(merged.getAllSettings().get(ClientConfigProperties.httpHeader("key1")), "value2");
37+
}
38+
{
39+
InsertSettings settings1 = new InsertSettings().setQueryId("test1").httpHeader("key1", "value1");
40+
InsertSettings settings2 = new InsertSettings().httpHeader("key1", "value2").setInputStreamCopyBufferSize(200000);
3241

33-
Assert.assertEquals(merged.getAllSettings().get(ClientConfigProperties.httpHeader("key1")), "value2");
42+
InsertSettings merged = InsertSettings.merge(settings1, settings2);
43+
Assert.assertNotSame(merged, settings1);
44+
Assert.assertNotSame(merged, settings2);
45+
46+
Assert.assertEquals(merged.getInputStreamCopyBufferSize(), settings2.getInputStreamCopyBufferSize());
47+
Assert.assertEquals(merged.getAllSettings().get(ClientConfigProperties.httpHeader("key1")), "value2");
48+
}
3449
}
3550

3651
@Test
@@ -87,6 +102,12 @@ void testQuerySettingsSpecific() throws Exception {
87102
settings.logComment(null);
88103
Assert.assertNull(settings.getLogComment());
89104
}
105+
106+
{
107+
final QuerySettings settings = new QuerySettings();
108+
settings.setNetworkTimeout(10, ChronoUnit.SECONDS);
109+
Assert.assertEquals(settings.getNetworkTimeout(), TimeUnit.SECONDS.toMillis(10));
110+
}
90111
}
91112

92113
@Test
@@ -140,5 +161,11 @@ public void testInsertSettingsSpecific() throws Exception {
140161
settings.logComment(null);
141162
Assert.assertNull(settings.getLogComment());
142163
}
164+
165+
{
166+
final InsertSettings settings = new InsertSettings();
167+
settings.setNetworkTimeout(10, ChronoUnit.SECONDS);
168+
Assert.assertEquals(settings.getNetworkTimeout(), TimeUnit.SECONDS.toMillis(10));
169+
}
143170
}
144171
}

jdbc-v2/src/main/java/com/clickhouse/jdbc/ConnectionImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import java.sql.Statement;
4040
import java.sql.Struct;
4141
import java.time.Duration;
42+
import java.time.temporal.ChronoUnit;
4243
import java.util.Arrays;
4344
import java.util.Calendar;
4445
import java.util.Collections;
@@ -637,7 +638,7 @@ public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLExc
637638
// Some connection pools set timeout before calling Connection#close() to ensure that this operation will not hang
638639
// Socket timeout is propagated with QuerySettings this connection has.
639640
networkTimeoutExecutor = executor;
640-
defaultQuerySettings.setOption(ClientConfigProperties.SOCKET_OPERATION_TIMEOUT.getKey(), (long)milliseconds);
641+
defaultQuerySettings.setNetworkTimeout(milliseconds, ChronoUnit.MILLIS);
641642
}
642643

643644

jdbc-v2/src/main/java/com/clickhouse/jdbc/ResultSetImpl.java

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import java.time.ZonedDateTime;
3838
import java.util.Calendar;
3939
import java.util.Map;
40+
import java.util.function.Consumer;
4041

4142
public class ResultSetImpl implements ResultSet, JdbcV2Wrapper {
4243
private static final Logger log = LoggerFactory.getLogger(ResultSetImpl.class);
@@ -57,7 +58,10 @@ public class ResultSetImpl implements ResultSet, JdbcV2Wrapper {
5758

5859
private int fetchSize;
5960

60-
public ResultSetImpl(StatementImpl parentStatement, QueryResponse response, ClickHouseBinaryFormatReader reader) throws SQLException {
61+
private Consumer<Exception> onDataTransferException;
62+
63+
public ResultSetImpl(StatementImpl parentStatement, QueryResponse response, ClickHouseBinaryFormatReader reader,
64+
Consumer<Exception> onDataTransferException) throws SQLException {
6165
this.parentStatement = parentStatement;
6266
this.response = response;
6367
this.reader = reader;
@@ -73,17 +77,7 @@ public ResultSetImpl(StatementImpl parentStatement, QueryResponse response, Clic
7377
this.defaultCalendar = parentStatement.getConnection().defaultCalendar;
7478
this.rowPos = BEFORE_FIRST;
7579
this.fetchSize = parentStatement.getFetchSize();
76-
}
77-
78-
protected ResultSetImpl(ResultSetImpl resultSet) throws SQLException{
79-
this.parentStatement = resultSet.parentStatement;
80-
this.response = resultSet.response;
81-
this.reader = resultSet.reader;
82-
this.metaData = resultSet.metaData;
83-
this.closed = false;
84-
this.wasNull = false;
85-
this.defaultCalendar = parentStatement.getConnection().defaultCalendar;
86-
this.featureManager = new FeatureManager(parentStatement.getConnection().getJdbcConfig());
80+
this.onDataTransferException = onDataTransferException;
8781
}
8882

8983
private void checkClosed() throws SQLException {
@@ -118,8 +112,8 @@ public boolean next() throws SQLException {
118112
}
119113
return readerRow != null;
120114
} catch (Exception e) {
121-
if (e instanceof SocketTimeoutException) {
122-
this.parentStatement.onNetworkTimeout();
115+
if (onDataTransferException != null) {
116+
onDataTransferException.accept(e);
123117
}
124118
throw ExceptionUtils.toSqlState(e);
125119
}

jdbc-v2/src/main/java/com/clickhouse/jdbc/StatementImpl.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ protected ResultSetImpl executeQueryImpl(String sql, QuerySettings settings) thr
166166
reader.close();
167167
throw new SQLException("Called method expects empty or filled result set but query has returned none. Consider using `java.sql.Statement.execute(java.lang.String)`", ExceptionUtils.SQL_STATE_CLIENT_ERROR);
168168
}
169-
return new ResultSetImpl(this, response, reader);
169+
return new ResultSetImpl(this, response, reader, this::handleSocketTimeoutException);
170170
} catch (Exception e) {
171171
if (response != null) {
172172
try {
@@ -635,9 +635,4 @@ public long executeLargeUpdate(String sql, String[] columnNames) throws SQLExcep
635635
public String getLastQueryId() {
636636
return lastQueryId;
637637
}
638-
639-
// Proxy method for child objects. Do not call.
640-
public void onNetworkTimeout() throws SQLException {
641-
this.connection.onNetworkTimeout();
642-
}
643638
}

jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/JdbcUtils.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -298,14 +298,4 @@ public static List<Object> convertList(List<Object> values, Class<?> type) throw
298298
}
299299
return convertedValues;
300300
}
301-
302-
public static void safeClose(AutoCloseable closeable, Logger logger) {
303-
if (closeable != null) {
304-
try {
305-
closeable.close();
306-
} catch (Exception ex) {
307-
logger.warn("Failed to close closeable after exception", ex);
308-
}
309-
}
310-
}
311301
}

0 commit comments

Comments
 (0)