postgresql-jdbc.git / summary / log / commit / refs
commit ff4bfda1fca0c28d779912cf72c12de062f37345
Author: Vladimir Sitnikov <sitnikov.vladimir@gmail.com>
Date: Fri Aug 05 19:33:09 2016 +0000
test: add benchmark for resultSet.getByName
.../benchmark/statement/ProcessResultSet.java | 69 +++++++++++++++++-----
1 file changed, 54 insertions(+), 15 deletions(-)
diff --git a/ubenchmark/src/main/java/org/postgresql/benchmark/statement/ProcessResultSet.java b/ubenchmark/src/main/java/org/postgresql/benchmark/statement/ProcessResultSet.java
index d886429e..037c0b08 100644
--- a/ubenchmark/src/main/java/org/postgresql/benchmark/statement/ProcessResultSet.java
+++ b/ubenchmark/src/main/java/org/postgresql/benchmark/statement/ProcessResultSet.java
@@ -51,6 +51,11 @@ public class ProcessResultSet {
TIMESTAMPTZ,
}
+ public enum ColumnIndexType {
+ INDEX,
+ NAME
+ }
+
public enum GetterType {
BEST,
OBJECT
@@ -71,12 +76,17 @@ public class ProcessResultSet {
@Param({"BEST"})
public GetterType getter;
+ @Param({"NAME"})
+ public ColumnIndexType columnIndexType;
+
private Connection connection;
private String sql;
private int cntr;
+ private String[] columnNames;
+
@Setup(Level.Trial)
public void setUp() throws SQLException {
if (type == FieldType.TIMESTAMP) {
@@ -88,6 +98,7 @@ public class ProcessResultSet {
connection = DriverManager.getConnection(ConnectionUtil.getURL(), props);
StringBuilder sb = new StringBuilder();
sb.append("SELECT ");
+ columnNames = new String[ncols];
for (int i = 0; i < ncols; i++) {
if (i > 0) {
sb.append(", ");
@@ -107,7 +118,9 @@ public class ProcessResultSet {
} else if (type == FieldType.TIMESTAMPTZ) {
sb.append("current_timestamp");
}
- sb.append(" c").append(i);
+ String columnName = "c" + String.valueOf(System.currentTimeMillis()) + String.valueOf(i);
+ columnNames[i] = columnName;
+ sb.append(' ').append(columnName);
}
sb.append(" from generate_series(1, ?) as t(x)");
sql = sb.toString();
@@ -129,20 +142,10 @@ public class ProcessResultSet {
ResultSet rs = ps.executeQuery();
while (rs.next()) {
for (int i = 1; i <= ncols; i++) {
- if (getter == GetterType.OBJECT) {
- b.consume(rs.getObject(i));
- } else if (type == FieldType.INT) {
- b.consume(rs.getInt(i));
- } else if (type == FieldType.BIGINT) {
- b.consume(rs.getBigDecimal(i));
- } else if (type == FieldType.BIGDECIMAL) {
- b.consume(rs.getBigDecimal(i));
- } else if (type == FieldType.STRING) {
- b.consume(rs.getString(i));
- } else if (type == FieldType.TIMESTAMP) {
- b.consume(rs.getTimestamp(i));
- } else if (type == FieldType.TIMESTAMPTZ) {
- b.consume(rs.getTimestamp(i));
+ if (columnIndexType == ColumnIndexType.INDEX) {
+ getByIndex(b, rs, i);
+ } else {
+ getByName(b, rs, columnNames[i - 1]);
}
}
}
@@ -151,6 +154,42 @@ public class ProcessResultSet {
return ps;
}
+ private void getByIndex(Blackhole b, ResultSet rs, int i) throws SQLException {
+ if (getter == GetterType.OBJECT) {
+ b.consume(rs.getObject(i));
+ } else if (type == FieldType.INT) {
+ b.consume(rs.getInt(i));
+ } else if (type == FieldType.BIGINT) {
+ b.consume(rs.getBigDecimal(i));
+ } else if (type == FieldType.BIGDECIMAL) {
+ b.consume(rs.getBigDecimal(i));
+ } else if (type == FieldType.STRING) {
+ b.consume(rs.getString(i));
+ } else if (type == FieldType.TIMESTAMP) {
+ b.consume(rs.getTimestamp(i));
+ } else if (type == FieldType.TIMESTAMPTZ) {
+ b.consume(rs.getTimestamp(i));
+ }
+ }
+
+ private void getByName(Blackhole b, ResultSet rs, String i) throws SQLException {
+ if (getter == GetterType.OBJECT) {
+ b.consume(rs.getObject(i));
+ } else if (type == FieldType.INT) {
+ b.consume(rs.getInt(i));
+ } else if (type == FieldType.BIGINT) {
+ b.consume(rs.getBigDecimal(i));
+ } else if (type == FieldType.BIGDECIMAL) {
+ b.consume(rs.getBigDecimal(i));
+ } else if (type == FieldType.STRING) {
+ b.consume(rs.getString(i));
+ } else if (type == FieldType.TIMESTAMP) {
+ b.consume(rs.getTimestamp(i));
+ } else if (type == FieldType.TIMESTAMPTZ) {
+ b.consume(rs.getTimestamp(i));
+ }
+ }
+
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(ProcessResultSet.class.getSimpleName())
[parent: dd71f6f3a1ea]