diff --git a/clickhouse-jdbc/pom.xml b/clickhouse-jdbc/pom.xml index f1d1b1dad..acdbbf5f9 100644 --- a/clickhouse-jdbc/pom.xml +++ b/clickhouse-jdbc/pom.xml @@ -238,7 +238,7 @@ org.projectlombok lombok - 1.18.32 + 1.18.38 org.openjdk.jmh diff --git a/client-v2/pom.xml b/client-v2/pom.xml index 7e64b8a8a..88e55688a 100644 --- a/client-v2/pom.xml +++ b/client-v2/pom.xml @@ -153,7 +153,7 @@ org.projectlombok lombok - 1.18.32 + 1.18.38 8 diff --git a/examples/client-v2/pom.xml b/examples/client-v2/pom.xml index ee4b2396c..b4e326bbb 100644 --- a/examples/client-v2/pom.xml +++ b/examples/client-v2/pom.xml @@ -103,7 +103,7 @@ org.projectlombok lombok - 1.18.32 + 1.18.38 provided @@ -148,7 +148,7 @@ org.projectlombok lombok - 1.18.32 + 1.18.38 diff --git a/performance/pom.xml b/performance/pom.xml index 9e070a582..ffa9f0492 100644 --- a/performance/pom.xml +++ b/performance/pom.xml @@ -107,7 +107,7 @@ org.projectlombok lombok - 1.18.32 + 1.18.38 org.openjdk.jmh diff --git a/performance/src/main/java/com/clickhouse/benchmark/clients/QueryClient.java b/performance/src/main/java/com/clickhouse/benchmark/clients/QueryClient.java index fe3029371..5ebb92222 100644 --- a/performance/src/main/java/com/clickhouse/benchmark/clients/QueryClient.java +++ b/performance/src/main/java/com/clickhouse/benchmark/clients/QueryClient.java @@ -4,8 +4,10 @@ import com.clickhouse.client.api.data_formats.ClickHouseBinaryFormatReader; import com.clickhouse.client.api.query.QueryResponse; import com.clickhouse.client.config.ClickHouseClientOption; +import com.clickhouse.data.ClickHouseColumn; import com.clickhouse.data.ClickHouseFormat; import com.clickhouse.data.ClickHouseRecord; +import com.clickhouse.data.ClickHouseValue; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.Scope; import org.openjdk.jmh.annotations.State; @@ -13,6 +15,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.List; + import static com.clickhouse.benchmark.TestEnvironment.getServer; @State(Scope.Benchmark) @@ -45,7 +49,7 @@ public void queryV2(DataState dataState, Blackhole blackhole) { ClickHouseBinaryFormatReader reader = clientV2.newBinaryFormatReader(response); while (reader.next() != null) {//Compiler optimization avoidance for (int i = 1; i <= dataState.dataSet.getSchema().getColumns().size(); i++) { - blackhole.consume(reader.readValue(1)); + blackhole.consume(reader.readValue(i)); } } } @@ -53,4 +57,47 @@ public void queryV2(DataState dataState, Blackhole blackhole) { LOGGER.error("Error: ", e); } } + + @Benchmark + public void queryV1WithTypes(DataState dataState, Blackhole blackhole) throws Exception { + try (ClickHouseResponse response = clientV1.read(getServer()) + .query(BenchmarkBase.getSelectQuery(dataState.tableNameFilled)) + .format(ClickHouseFormat.RowBinaryWithNamesAndTypes) + .option(ClickHouseClientOption.ASYNC, false) + .executeAndWait()) { + List columns = dataState.dataSet.getSchema().getColumns(); + for (ClickHouseRecord record: response.records()) {//Compiler optimization avoidance + for (int i = 0; i < columns.size(); i++) { + ClickHouseValue value = record.getValue(i); + ClickHouseColumn column = columns.get(i); + switch (column.getDataType()) { + case Int64: blackhole.consume(value.asLong()); break; + case Float64: blackhole.consume(value.asDouble()); break; + case String: blackhole.consume(value.asString()); break; + default: throw new IllegalStateException(); + } + } + } + } + } + + @Benchmark + public void queryV2WithTypes(DataState dataState, Blackhole blackhole) throws Exception { + try(QueryResponse response = clientV2.query(BenchmarkBase.getSelectQuery(dataState.tableNameFilled)).get()) { + ClickHouseBinaryFormatReader reader = clientV2.newBinaryFormatReader(response); + List columns = dataState.dataSet.getSchema().getColumns(); + while (reader.next() != null) {//Compiler optimization avoidance + for (int i = 1; i <= columns.size(); i++) { + blackhole.consume(reader.readValue(i)); + ClickHouseColumn column = columns.get(i - 1); + switch (column.getDataType()) { + case Int64: blackhole.consume(reader.getLong(i)); break; + case Float64: blackhole.consume(reader.getDouble(i)); break; + case String: blackhole.consume(reader.getString(i)); break; + default: throw new IllegalStateException(); + } + } + } + } + } }