Skip to content

Commit 5a9bccf

Browse files
committed
implemented writer statement with limited insert columns
1 parent 020e4cc commit 5a9bccf

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.clickhouse.client.api.insert.InsertResponse;
66
import com.clickhouse.client.api.insert.InsertSettings;
77
import com.clickhouse.client.api.metadata.TableSchema;
8+
import com.clickhouse.data.ClickHouseColumn;
89
import com.clickhouse.data.ClickHouseFormat;
910
import com.clickhouse.jdbc.internal.ExceptionUtils;
1011
import com.clickhouse.jdbc.internal.ParsedPreparedStatement;
@@ -29,8 +30,10 @@
2930
import java.sql.SQLXML;
3031
import java.sql.Time;
3132
import java.sql.Timestamp;
33+
import java.util.ArrayList;
3234
import java.util.Arrays;
3335
import java.util.Calendar;
36+
import java.util.List;
3437
import java.util.concurrent.TimeUnit;
3538

3639
/**
@@ -50,7 +53,16 @@ public WriterStatementImpl(ConnectionImpl connection, String originalSql, TableS
5053
throws SQLException {
5154
super(connection, originalSql, parsedStatement);
5255

53-
this.tableSchema = tableSchema;
56+
if (parsedStatement.getInsertColumns() != null) {
57+
List<ClickHouseColumn> insertColumns = new ArrayList<>();
58+
for (String column : parsedStatement.getInsertColumns()) {
59+
insertColumns.add(tableSchema.getColumnByName(column));
60+
}
61+
this.tableSchema = new TableSchema(tableSchema.getTableName(), tableSchema.getQuery(),
62+
tableSchema.getDatabaseName(), insertColumns);
63+
} else {
64+
this.tableSchema = tableSchema;
65+
}
5466
try {
5567
resetWriter();
5668
} catch (IOException e) {

jdbc-v2/src/test/java/com/clickhouse/jdbc/PreparedStatementTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ Object[][] testBatchInsertWithRowBinary_dp() {
611611
return new Object[][]{
612612
{"INSERT INTO \n `%s` \nVALUES (?, ?, abs(?), ?)", PreparedStatementImpl.class}, // only string possible (because of abs(?))
613613
{"INSERT INTO\n `%s` \nVALUES (?, ?, ?, ?)", WriterStatementImpl.class}, // row binary writer
614-
{" INSERT INTO %s (ts, v1, v2, v3) VALUES (?, ?, ?, ?)", PreparedStatementImpl.class}, // only string supported now
614+
{" INSERT INTO %s (ts, v1, v2, v3) VALUES (?, ?, ?, ?)", WriterStatementImpl.class}, // only string supported now
615615
{"INSERT INTO %s SELECT ?, ?, ?, ?", PreparedStatementImpl.class}, // only string possible (because of SELECT)
616616
};
617617
}

0 commit comments

Comments
 (0)