postgresql-jdbc.git / summary / log / commit / refs

commit    33904ef00aa545b8a8997e62d0e5da58ea9348de
Author:   Vladimir Sitnikov <sitnikov.vladimir@gmail.com>
Date:     Fri Oct 30 21:50:47 2015 +0000

    perf: optimize getBigDecimal


org/postgresql/jdbc2/AbstractJdbc2ResultSet.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java b/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java index 20105609..7d9c148e 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java +++ b/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java @@ -2447,6 +2447,18 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg checkResultSet(columnIndex); if (wasNullFlag) return null; + + if (isBinary(columnIndex)) { + int sqlType = getSQLType(columnIndex); + if (sqlType != Types.NUMERIC && sqlType != Types.DECIMAL) { + Object obj = internalGetObject(columnIndex, fields[columnIndex - 1]); + if (obj == null) return null; + if (obj instanceof Long || obj instanceof Integer || obj instanceof Byte) { + return BigDecimal.valueOf(((Number) obj).longValue(), scale); + } + return toBigDecimal(trimMoney(String.valueOf(obj)), scale); + } + } Encoding encoding = connection.getEncoding(); if (encoding.hasAsciiNumbers()) { @@ -2848,7 +2860,11 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg */ public String getFixedString(int col) throws SQLException { - String s = getString(col); + return trimMoney(getString(col)); + } + + private String trimMoney(String s) + { if (s == null) return null; [parent: 567e26842095]