docs: public BigDecimal getInternalBigDecimal(ColumnInformation columnInfo) throws SQLException {
      if (lastValueWasNull()) {
        return null;
      }
  
      switch (columnInfo.getColumnType()) {
        case BIT:
          return BigDecimal.valueOf(parseBit());
        case TINYINT:
          return BigDecimal.valueOf((long) getInternalTinyInt(columnInfo));
        case SMALLINT:
        case YEAR:
          return BigDecimal.valueOf((long) getInternalSmallInt(columnInfo));
        case INTEGER:
        case MEDIUMINT:
          return BigDecimal.valueOf(getInternalMediumInt(columnInfo));
        case BIGINT:
          long value = ((buf[pos] & 0xff)
              + ((long) (buf[pos + 1] & 0xff) << 8)
              + ((long) (buf[pos + 2] & 0xff) << 16)
              + ((long) (buf[pos + 3] & 0xff) << 24)
              + ((long) (buf[pos + 4] & 0xff) << 32)
              + ((long) (buf[pos + 5] & 0xff) << 40)
              + ((long) (buf[pos + 6] & 0xff) << 48)
              + ((long) (buf[pos + 7] & 0xff) << 56)
          );
          if (columnInfo.isSigned()) {
            return new BigDecimal(String.valueOf(BigInteger.valueOf(value)))
                .setScale(columnInfo.getDecimals());
          } else {
            return new BigDecimal(String.valueOf(new BigInteger(1, new byte[]{(byte) (value >> 56),
                (byte) (value >> 48), (byte) (value >> 40), (byte) (value >> 32),
                (byte) (value >> 24), (byte) (value >> 16), (byte) (value >> 8),
                (byte) value}))).setScale(columnInfo.getDecimals());
          }
        case FLOAT:
          return BigDecimal.valueOf(getInternalFloat(columnInfo));
        case DOUBLE:
          return BigDecimal.valueOf(getInternalDouble(columnInfo));
        case DECIMAL:
        case VARSTRING:
        case VARCHAR:
        case STRING:
        case OLDDECIMAL:
          return new BigDecimal(new String(buf, pos, length, StandardCharsets.UTF_8));
        default:
          throw new SQLException("getBigDecimal not available for data field type "
              + columnInfo.getColumnType().getJavaTypeName());
      }
    }