@Override public double toDouble(OptimizedElementArray row, int columnPosition) throws SQLException { return row.getLong(columnPosition - 1); } @Override
@Override public long toLong(OptimizedElementArray row, int columnPosition) throws SQLException { return row.getLong(columnPosition - 1); } @Override
@Override public Object toObject(OptimizedElementArray row, int columnPosition, LobService lobService) throws SQLException { return row.getLong(columnPosition - 1); } @Override
@Override public boolean toBoolean(OptimizedElementArray row, int columnPosition) throws SQLException { return (row.getLong(columnPosition - 1) != 0); } @Override
@Override public float toFloat(OptimizedElementArray row, int columnPosition) throws SQLException { return row.getLong(columnPosition - 1); } @Override
public final long getDateTimeMillis(int index) { return getLong(index) * 1000L; }
@Override public String toString(OptimizedElementArray row, int columnPosition, LobService lobService) throws SQLException { return Long.toString(row.getLong(columnPosition - 1)); } @Override
@Override public BigDecimal toBigDecimal(OptimizedElementArray row, int columnPosition) throws SQLException { return new BigDecimal(row.getLong(columnPosition - 1)); } @Override
public final double getDouble(int index) { return Double.longBitsToDouble(getLong(index)); }
@Override public java.sql.Date toDate(OptimizedElementArray row, int columnPosition, Calendar cal) throws SQLException { long ts = row.getLong(columnPosition - 1); if (cal == null) { return new java.sql.Date(ts / NANOS_PER_MILLI); } else { cal.setTimeInMillis(ts / NANOS_PER_MILLI); return new java.sql.Date(cal.getTimeInMillis()); } } @Override
@Override public java.sql.Time toTime(OptimizedElementArray row, int columnPosition, Calendar cal) throws SQLException { long ts = row.getLong(columnPosition - 1); if (cal == null) { return new java.sql.Time(ts / NANOS_PER_MILLI); } else { cal.setTimeInMillis(ts / NANOS_PER_MILLI); return new java.sql.Time(cal.getTimeInMillis()); } } @Override
@Override public short toShort(OptimizedElementArray row, int columnPosition) throws SQLException { long v = row.getLong(columnPosition - 1); if (v >= Short.MIN_VALUE && v <= Short.MAX_VALUE) { return (short)v; } else { throw newOutOfRangeException("short", columnPosition); } } @Override
@Override public byte toByte(OptimizedElementArray row, int columnPosition) throws SQLException { long v = row.getLong(columnPosition - 1); if (v >= Byte.MIN_VALUE && v <= Byte.MAX_VALUE) { return (byte)v; } else { throw newOutOfRangeException("byte", columnPosition); } } @Override
@Override public int toInteger(OptimizedElementArray row, int columnPosition) throws SQLException { long v = row.getLong(columnPosition - 1); if (v >= Integer.MIN_VALUE && v <= Integer.MAX_VALUE) { return (int)v; } else { throw newOutOfRangeException("int", columnPosition); } } @Override
public final Timestamp getTimestamp(int index) { return Converters.getTimestamp(getLong(index)); }
public final Date getDate(int index) { return Converters.getDate(getLong(index)); }
public final Time getTime(int index) { return Converters.getTime(getLong(index)); }
@Override public java.sql.Timestamp toTimestamp(OptimizedElementArray row, int columnPosition, Calendar cal) throws SQLException { long ts = row.getLong(columnPosition - 1); if (cal == null) { return Converters.getTimestamp(ts); } else { // pass only the seconds for epoch time long seconds = ts / NANOS_PER_SECOND; long nanos = ts % NANOS_PER_SECOND; if (nanos < 0) { nanos += NANOS_PER_SECOND; seconds--; } cal.setTimeInMillis(seconds * 1000L); return Converters.getTimestamp(cal.getTimeInMillis() * NANOS_PER_MILLI + nanos); } } @Override