@@ -335,21 +335,24 @@ public String getString(String colName) {
335335
336336 @ Override
337337 public String getString (int index ) {
338- return getString ( schema .columnIndexToName (index ));
338+ return dataTypeConverter . convertToString ( readValue ( index ), schema .getColumnByIndex (index ));
339339 }
340340
341341 private <T > T readNumberValue (String colName , NumberConverter .NumberType targetType ) {
342- int colIndex = schema .nameToIndex (colName );
343- Function <Object , Object > converter = (Function <Object , Object >) convertions [colIndex ].get (targetType );
342+ return readNumberValue (schema .nameToColumnIndex (colName ), targetType );
343+ }
344+
345+ private <T > T readNumberValue (int colIndex , NumberConverter .NumberType targetType ) {
346+ Function <Object , Object > converter = (Function <Object , Object >) convertions [colIndex - 1 ].get (targetType );
344347 if (converter != null ) {
345- Object value = readValue (colName );
346- if (value == null ) {
347- throw new NullValueException ("Column " + colName + " has null value and it cannot be cast to " +
348- targetType .getTypeName ());
348+ Object value = readValue (colIndex );
349+ if (value != null ) {
350+ return (T ) converter .apply (value );
349351 }
350- return (T ) converter .apply (value );
352+ throw new NullValueException ("Column with index " + colIndex + " has null value and it cannot be cast to " +
353+ targetType .getTypeName ());
351354 } else {
352- throw new ClientException ("Column " + colName + " " + columns [colIndex ].getDataType ().name () +
355+ throw new ClientException ("Column with index " + colIndex + " " + columns [colIndex - 1 ].getDataType ().name () +
353356 " cannot be converted to " + targetType .getTypeName ());
354357 }
355358 }
@@ -626,47 +629,47 @@ public boolean hasValue(String colName) {
626629
627630 @ Override
628631 public byte getByte (int index ) {
629- return getByte ( schema . columnIndexToName ( index ) );
632+ return readNumberValue ( index , NumberConverter . NumberType . Byte );
630633 }
631634
632635 @ Override
633636 public short getShort (int index ) {
634- return getShort ( schema . columnIndexToName ( index ) );
637+ return readNumberValue ( index , NumberConverter . NumberType . Short );
635638 }
636639
637640 @ Override
638641 public int getInteger (int index ) {
639- return getInteger ( schema . columnIndexToName ( index ) );
642+ return readNumberValue ( index , NumberConverter . NumberType . Int );
640643 }
641644
642645 @ Override
643646 public long getLong (int index ) {
644- return getLong ( schema . columnIndexToName ( index ) );
647+ return readNumberValue ( index , NumberConverter . NumberType . Long );
645648 }
646649
647650 @ Override
648651 public float getFloat (int index ) {
649- return getFloat ( schema . columnIndexToName ( index ) );
652+ return readNumberValue ( index , NumberConverter . NumberType . Float );
650653 }
651654
652655 @ Override
653656 public double getDouble (int index ) {
654- return getDouble ( schema . columnIndexToName ( index ) );
657+ return readNumberValue ( index , NumberConverter . NumberType . Double );
655658 }
656659
657660 @ Override
658661 public boolean getBoolean (int index ) {
659- return getBoolean ( schema . columnIndexToName ( index ) );
662+ return readNumberValue ( index , NumberConverter . NumberType . Boolean );
660663 }
661664
662665 @ Override
663666 public BigInteger getBigInteger (int index ) {
664- return getBigInteger ( schema . columnIndexToName ( index ) );
667+ return readNumberValue ( index , NumberConverter . NumberType . BigInteger );
665668 }
666669
667670 @ Override
668671 public BigDecimal getBigDecimal (int index ) {
669- return getBigDecimal ( schema . columnIndexToName ( index ) );
672+ return readNumberValue ( index , NumberConverter . NumberType . BigDecimal );
670673 }
671674
672675 @ Override
0 commit comments