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]